package org.goodev.discourse.ui;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import org.goodev.discourse.api.data.UserDetails;
import org.goodev.discourse.utils.Utils;
public class LoginFragment extends Fragment {
private LoginCallback mCallback;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mCallback = (LoginCallback) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement " + LoginCallback.class.getSimpleName());
}
}
@Override
public void onDetach() {
super.onDetach();
mCallback = null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
Bundle args = getArguments();
String url = args.getString(Utils.EXTRA_URL);
String password = args.getString(Utils.EXTRA_PASSWORD);
String name = args.getString(Utils.EXTRA_NAME);
new CheckUrlTask(name, password).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url);
}
public interface LoginCallback {
void onPreExecute();
/**
* 如果登陆失败,或者没有设置登陆信息导致登陆失败,返回值为null
*
* @param user
*/
void onResult(UserDetails user);
}
private class CheckUrlTask extends AsyncTask<String, Void, UserDetails> {
private final String mName;
private final String mPassword;
public CheckUrlTask(String name, String password) {
mName = name;
mPassword = password;
}
@Override
protected UserDetails doInBackground(String... params) {
if (TextUtils.isEmpty(mName) || TextUtils.isEmpty(mPassword)) {
return null;
}
String site = params[0];
return Utils.login(site, mName, mPassword);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if (mCallback != null) {
mCallback.onPreExecute();
}
}
@Override
protected void onPostExecute(UserDetails result) {
super.onPostExecute(result);
if (mCallback != null) {
mCallback.onResult(result);
}
}
}
}