package im.actor.sdk.controllers.auth; import android.app.AlertDialog; import android.graphics.drawable.StateListDrawable; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import im.actor.core.AuthState; import im.actor.sdk.ActorSDK; import im.actor.sdk.ActorStyle; import im.actor.sdk.R; import im.actor.sdk.util.Fonts; import im.actor.sdk.util.KeyboardHelper; import im.actor.sdk.view.SelectorFactory; import static im.actor.sdk.util.ActorSDKMessenger.messenger; public class SignInFragment extends BaseAuthFragment { private EditText signIdEditText; private KeyboardHelper keyboardHelper; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_sign_in, container, false); TextView buttonCotinueText = (TextView) v.findViewById(R.id.button_continue_text); StateListDrawable states = SelectorFactory.get(ActorSDK.sharedActor().style.getMainColor(), getActivity()); buttonCotinueText.setBackgroundDrawable(states); buttonCotinueText.setTypeface(Fonts.medium()); buttonCotinueText.setTextColor(ActorSDK.sharedActor().style.getTextPrimaryInvColor()); keyboardHelper = new KeyboardHelper(getActivity()); v.findViewById(R.id.divider).setBackgroundColor(style.getDividerColor()); initView(v); // Get domain logo // logoActor = ActorSystem.system().actorOf(Props.create(LogoActor.class, new ActorCreator<LogoActor>() { // @Override // public LogoActor create() { // return new LogoActor(); // } // }), "actor/logo_actor"); // // logoActor.send(new LogoActor.AddCallback(new LogoActor.LogoCallBack() { // @Override // public void onDownloaded(final Drawable logoDrawable) { // getActivity().runOnUiThread(new Runnable() { // @Override // public void run() { // if (logoDrawable != null) { // logo.setImageDrawable(logoDrawable); // logo.measure(0, 0); // expand(logo, logo.getMeasuredHeight()); // } else { // expand(logo, 0); // } // } // }); // } // })); return v; } @Override public void onResume() { super.onResume(); //TODO track sign_in auth open //messenger().trackAuthPhoneOpen(); setTitle(R.string.sign_in_title); focussignId(); keyboardHelper.setImeVisibility(signIdEditText, true); } private void initView(View v) { ActorStyle style = ActorSDK.sharedActor().style; TextView hint = (TextView) v.findViewById(R.id.sign_in_login_hint); hint.setTextColor(style.getTextSecondaryColor()); signIdEditText = (EditText) v.findViewById(R.id.tv_sign_in); signIdEditText.setTextColor(style.getTextPrimaryColor()); signIdEditText.setHighlightColor(style.getMainColor()); signIdEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { if (id == EditorInfo.IME_ACTION_GO) { requestCode(); return true; } return false; } }); int availableAuthType = ActorSDK.sharedActor().getAuthType(); String savedAuthId = messenger().getPreferences().getString("sign_in_auth_id"); signIdEditText.setText(savedAuthId); boolean needSuggested = savedAuthId == null || savedAuthId.isEmpty(); if (((availableAuthType & AuthActivity.AUTH_TYPE_PHONE) == AuthActivity.AUTH_TYPE_PHONE) && ((availableAuthType & AuthActivity.AUTH_TYPE_EMAIL) == AuthActivity.AUTH_TYPE_EMAIL)) { //both hints set phone + email by default if (needSuggested) { setSuggestedEmail(signIdEditText); } } else if ((availableAuthType & AuthActivity.AUTH_TYPE_PHONE) == AuthActivity.AUTH_TYPE_PHONE) { hint.setText(getString(R.string.sign_in_hint_phone_only)); signIdEditText.setHint(getString(R.string.sign_in_edit_text_hint_phone_only)); signIdEditText.setInputType(EditorInfo.TYPE_CLASS_PHONE); } else if ((availableAuthType & AuthActivity.AUTH_TYPE_EMAIL) == AuthActivity.AUTH_TYPE_EMAIL) { hint.setText(getString(R.string.sign_in_hint_email_only)); signIdEditText.setHint(getString(R.string.sign_in_edit_text_hint_email_only)); if (needSuggested) { setSuggestedEmail(signIdEditText); } } Button singUp = (Button) v.findViewById(R.id.button_sign_up); singUp.setTextColor(style.getTextSecondaryColor()); onClick(singUp, new View.OnClickListener() { @Override public void onClick(View v) { startSignUp(); } }); onClick(v, R.id.button_continue, new View.OnClickListener() { @Override public void onClick(View view) { requestCode(); } }); } private void requestCode() { String message = getString(R.string.auth_error_wrong_auth_id); if (signIdEditText.getText().toString().trim().length() == 0) { new AlertDialog.Builder(getActivity()) .setMessage(message) .setPositiveButton(R.string.dialog_ok, null) .show(); return; } String rawId = signIdEditText.getText().toString(); if (rawId.contains("@")) { startEmailAuth(rawId); } else { try { startPhoneAuth(Long.parseLong(rawId.replace("+", ""))); } catch (Exception e) { new AlertDialog.Builder(getActivity()) .setMessage(message) .setPositiveButton(R.string.dialog_ok, null) .show(); return; } } } @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); menu.clear(); getActivity().getMenuInflater().inflate(R.menu.sign_in, menu); MenuItem item = menu.findItem(R.id.change_endpoint); if (item != null) { item.setVisible(ActorSDK.sharedActor().isUseAlternateEndpointsEnabled()); } } private void focussignId() { focus(signIdEditText); } }