package com.quickblox.sample.chat.ui.activity; import android.os.Bundle; import android.util.Log; import android.view.View; import com.quickblox.auth.session.QBSessionManager; import com.quickblox.core.QBEntityCallback; import com.quickblox.core.exception.QBResponseException; import com.quickblox.sample.chat.App; import com.quickblox.sample.chat.R; import com.quickblox.sample.chat.utils.Consts; import com.quickblox.sample.chat.utils.chat.ChatHelper; import com.quickblox.sample.core.ui.activity.CoreSplashActivity; import com.quickblox.sample.core.ui.dialog.ProgressDialogFragment; import com.quickblox.sample.core.utils.SharedPrefsHelper; import com.quickblox.users.model.QBUser; public class SplashActivity extends CoreSplashActivity { private static final String TAG = SplashActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (checkConfigsWithSnackebarError()){ proceedToTheNextActivityWithDelay(); } } @Override protected String getAppName() { return getString(R.string.splash_app_title); } @Override protected void proceedToTheNextActivity() { if (checkSignIn()) { restoreChatSession(); } else { LoginActivity.start(this); finish(); } } @Override protected boolean sampleConfigIsCorrect() { boolean result = super.sampleConfigIsCorrect(); result = result && App.getSampleConfigs() != null; return result; } private void restoreChatSession(){ if (ChatHelper.getInstance().isLogged()) { DialogsActivity.start(this); finish(); } else { QBUser currentUser = getUserFromSession(); loginToChat(currentUser); } } private QBUser getUserFromSession(){ QBUser user = SharedPrefsHelper.getInstance().getQbUser(); user.setId(QBSessionManager.getInstance().getSessionParameters().getUserId()); return user; } @Override protected boolean checkSignIn() { return SharedPrefsHelper.getInstance().hasQbUser(); } private void loginToChat(final QBUser user) { ProgressDialogFragment.show(getSupportFragmentManager(), R.string.dlg_restoring_chat_session); ChatHelper.getInstance().loginToChat(user, new QBEntityCallback<Void>() { @Override public void onSuccess(Void result, Bundle bundle) { Log.v(TAG, "Chat login onSuccess()"); ProgressDialogFragment.hide(getSupportFragmentManager()); DialogsActivity.start(SplashActivity.this); finish(); } @Override public void onError(QBResponseException e) { ProgressDialogFragment.hide(getSupportFragmentManager()); Log.w(TAG, "Chat login onError(): " + e); showSnackbarError( findViewById(R.id.layout_root), R.string.error_recreate_session, e, new View.OnClickListener() { @Override public void onClick(View v) { loginToChat(user); } }); } }); } }