package mx.ambmultimedia.brillamexico.activities;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.squareup.picasso.Picasso;
import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton;
import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import de.hdodenhof.circleimageview.CircleImageView;
import io.fabric.sdk.android.Fabric;
import mx.ambmultimedia.brillamexico.R;
import mx.ambmultimedia.brillamexico.utils.Config;
public class EditUserInfo extends ActionBarActivity {
private Context ctx;
private Config config;
private String fbID;
EditText nName;
EditText nBio;
// Note: Your consumer key and secret should be obfuscated in your source code before shipping.
private static final String TWITTER_KEY = "YRX5xRqc91Yxv8wuBOICIgH0h";
private static final String TWITTER_SECRET = "SRYfHQtI0hXczFoRA0EGCO0rzEAxCC9bsdi2mnSdgtpnCCIwnj";
private Boolean isTwitterLinked;
private TwitterLoginButton loginButton;
// HTTP Config
private String hostname;
private AsyncHttpClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_user_info);
ctx = this;
config = new Config(ctx);
fbID = config.get("fbID", "0");
hostname = getString(R.string.hostname);
client = new AsyncHttpClient();
// Inicializa la configuración de Twitter
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
isTwitterLinked = Boolean.valueOf(config.get("isTwitterLinked", "false"));
TwitterIntegration();
Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
fbID = config.get("fbID", "0");
CircleImageView ImgUserAvatar = (CircleImageView) findViewById(R.id.ImgUserAvatar);
String avatarUrl = getString(R.string.fb_avatar_link);
avatarUrl = avatarUrl.replaceAll("__fbid__", fbID);
Picasso.with(ctx)
.load(avatarUrl)
.placeholder(R.drawable.com_facebook_profile_picture_blank_square)
.into(ImgUserAvatar);
nName = (EditText) findViewById(R.id.editName);
nBio = (EditText) findViewById(R.id.editBio);
String _user = config.get("user", "null");
try {
JSONObject user = new JSONObject(_user);
nName.setText(user.getString("name"));
nBio.setText(user.getString("bio"));
} catch (JSONException e) { }
Button saveData = (Button) findViewById(R.id.saveData);
saveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UpdateData();
}
});
}
public void TwitterIntegration () {
/**
* Twitter integration
*/
// Decimos al TwitterButton qué hacer cuando se da click
loginButton = (TwitterLoginButton)
findViewById(R.id.login_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
// Cuando se inicia sesión (supongo)
public void success(Result<TwitterSession> result) {
// Obtenemos la sesión y ...
TwitterSession session = Twitter.getSessionManager().getActiveSession();
// Obtenemos los datos
String twitterID = String.valueOf(session.getUserId());
UpdateTwitterID(twitterID);
}
@Override
public void failure(TwitterException exception) {
// Cuando algo sale mal
Toast.makeText(ctx, "Algo ha salido mal con Twitter", Toast.LENGTH_SHORT);
}
});
View completeText = findViewById(R.id.loginTwComplete);
if (isTwitterLinked) {
completeText.setVisibility(View.VISIBLE);
loginButton.setVisibility(View.INVISIBLE);
} else {
completeText.setVisibility(View.INVISIBLE);
loginButton.setVisibility(View.VISIBLE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pasamos resultados al activity? Aún no lo entiendo bien :(
loginButton.onActivityResult(requestCode, resultCode, data);
}
public void UpdateTwitterID (String twitterID) {
RequestParams params = new RequestParams();
params.put("twid", twitterID);
client.post(hostname + "/user/twitter/" + fbID, params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
if (!isTwitterLinked) {
config.set("isTwitterLinked", "true");
Intent intent = new Intent(EditUserInfo.this, Logro.class);
intent.putExtra("Reference", "TwitterLinked");
intent.putExtra("LogroID", "6");
startActivity(intent);
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable e) {
super.onFailure(statusCode, headers, responseString, e);
// Si algo sale mal, informamos
String msg = "[" + statusCode + "|u/twitter] " + e.getMessage();
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
}
});
}
public void UpdateData () {
config.set("isReload", "true");
final Boolean isCompleteProfile = Boolean.valueOf(config.get("isCompleteProfile", "false"));
RequestParams params = new RequestParams();
params.put("name", nName.getText().toString());
params.put("bio", nBio.getText().toString());
client.post(hostname + "/user/edit/" + fbID, params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
if (!isCompleteProfile) {
config.set("isCompleteProfile", "true");
Intent intent = new Intent(EditUserInfo.this, Logro.class);
intent.putExtra("Reference", "EditUser");
intent.putExtra("LogroID", "2");
startActivity(intent);
} else {
Intent intent = new Intent(EditUserInfo.this, UserProfile.class);
startActivity(intent);
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable e) {
super.onFailure(statusCode, headers, responseString, e);
String msg = "[" + statusCode + "|u/edit] " + e.getMessage();
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(EditUserInfo.this, UserProfile.class);
startActivity(intent);
}
}