package com.codepath.apps.tumblrsnap.fragments;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import com.codepath.apps.tumblrsnap.R;
import com.codepath.apps.tumblrsnap.TumblrClient;
import com.codepath.apps.tumblrsnap.models.User;
import com.codepath.oauth.OAuthLoginFragment;
import com.loopj.android.http.JsonHttpResponseHandler;
public class LoginFragment extends OAuthLoginFragment<TumblrClient> {
private OnLoginHandler loginHandler;
public interface OnLoginHandler {
public void onLogin();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_login, container, false);
Button button = (Button) view.findViewById(R.id.btnLogin);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getClient().connect();
}
});
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof OnLoginHandler) {
loginHandler = (OnLoginHandler) activity;
}
}
@Override
public void onDetach() {
super.onDetach();
loginHandler = null;
}
@Override
public void onLoginFailure(Exception arg0) {
getClient().clearAccessToken();
Log.d("DEBUG", "on login failure: " + arg0.toString());
}
@Override
public void onLoginSuccess() {
Log.d("DEBUG", "on login success");
getClient().getUserInfo(new JsonHttpResponseHandler() {
@Override
public void onSuccess(int code, JSONObject response) {
try {
JSONObject jsonUser = response.getJSONObject("response")
.getJSONObject("user");
User.setCurrentUser(User.fromJson(jsonUser));
if (loginHandler != null) {
loginHandler.onLogin();
}
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("DEBUG", response.toString());
}
@Override
public void onFailure(Throwable error) {
Log.d("DEBUG", error.toString());
}
});
}
}