Unverified Commit 25495f8f authored by Leonardo Aramaki's avatar Leonardo Aramaki Committed by GitHub

Merge pull request #657 from aniketsingh03/patch-5

[BUG] Resolves incorrect context issue in login activity
parents 8b7da88d 51a9b57d
...@@ -8,6 +8,7 @@ import android.support.v4.app.Fragment; ...@@ -8,6 +8,7 @@ import android.support.v4.app.Fragment;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.fragment.server_config.LoginFragment; import chat.rocket.android.fragment.server_config.LoginFragment;
import chat.rocket.android.fragment.server_config.RetryLoginFragment; import chat.rocket.android.fragment.server_config.RetryLoginFragment;
import chat.rocket.android.helper.BackStackHelper;
import chat.rocket.android.service.ConnectivityManager; import chat.rocket.android.service.ConnectivityManager;
import chat.rocket.core.interactors.SessionInteractor; import chat.rocket.core.interactors.SessionInteractor;
import chat.rocket.persistence.realm.repositories.RealmSessionRepository; import chat.rocket.persistence.realm.repositories.RealmSessionRepository;
...@@ -92,9 +93,14 @@ public class LoginActivity extends AbstractFragmentActivity implements LoginCont ...@@ -92,9 +93,14 @@ public class LoginActivity extends AbstractFragmentActivity implements LoginCont
@Override @Override
protected boolean onBackPress() { protected boolean onBackPress() {
LoginFragment loginFragment = (LoginFragment) getSupportFragmentManager() if (BackStackHelper.FRAGMENT_TAG.equals("internal")) {
.findFragmentById(getLayoutContainerForFragment()); super.onBackPress();
loginFragment.goBack(); BackStackHelper.FRAGMENT_TAG = "login";
} else if (BackStackHelper.FRAGMENT_TAG.equals("login")) {
LoginFragment loginFragment = (LoginFragment) getSupportFragmentManager()
.findFragmentById(getLayoutContainerForFragment());
loginFragment.goBack();
}
return true; return true;
} }
} }
...@@ -6,39 +6,41 @@ import android.support.v4.app.Fragment; ...@@ -6,39 +6,41 @@ import android.support.v4.app.Fragment;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.fragment.AbstractFragment; import chat.rocket.android.fragment.AbstractFragment;
import chat.rocket.android.helper.BackStackHelper;
import chat.rocket.android.helper.TextUtils; import chat.rocket.android.helper.TextUtils;
public abstract class AbstractServerConfigFragment extends AbstractFragment { public abstract class AbstractServerConfigFragment extends AbstractFragment {
public static final String KEY_HOSTNAME = "hostname"; public static final String KEY_HOSTNAME = "hostname";
protected String hostname; protected String hostname;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Bundle args = getArguments(); Bundle args = getArguments();
if (args == null) { if (args == null) {
finish(); finish();
return; return;
}
hostname = args.getString(KEY_HOSTNAME);
if (TextUtils.isEmpty(hostname)) {
finish();
}
} }
hostname = args.getString(KEY_HOSTNAME); protected void showFragment(Fragment fragment) {
if (TextUtils.isEmpty(hostname)) { getFragmentManager().beginTransaction()
finish(); .add(R.id.content, fragment)
.commit();
}
protected void showFragmentWithBackStack(Fragment fragment) {
BackStackHelper.FRAGMENT_TAG = "internal";
getFragmentManager().beginTransaction()
.add(R.id.content, fragment)
.addToBackStack(null)
.commit();
} }
}
protected void showFragment(Fragment fragment) {
getFragmentManager().beginTransaction()
.add(R.id.content, fragment)
.commit();
}
protected void showFragmentWithBackStack(Fragment fragment) {
getFragmentManager().beginTransaction()
.add(R.id.content, fragment)
.addToBackStack(null)
.commit();
}
} }
package chat.rocket.android.fragment.server_config; package chat.rocket.android.fragment.server_config;
import android.content.Context;
import java.util.List; import java.util.List;
import chat.rocket.android.shared.BaseContract; import chat.rocket.android.shared.BaseContract;
...@@ -30,6 +33,6 @@ public interface LoginContract { ...@@ -30,6 +33,6 @@ public interface LoginContract {
void login(String username, String password); void login(String username, String password);
void goBack(); void goBack(Context ctx);
} }
} }
...@@ -160,8 +160,9 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View { ...@@ -160,8 +160,9 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View {
presenter.release() presenter.release()
super.onPause() super.onPause()
} }
override fun goBack() { override fun goBack() {
presenter.goBack() presenter.goBack(context)
} }
} }
package chat.rocket.android.fragment.server_config package chat.rocket.android.fragment.server_config
import android.content.Context
import bolts.Continuation import bolts.Continuation
import bolts.Task import bolts.Task
import chat.rocket.android.BackgroundLooper import chat.rocket.android.BackgroundLooper
...@@ -32,7 +33,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi ...@@ -32,7 +33,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi
} }
override fun goBack() { override fun goBack(ctx: Context?) {
val context = RocketChatApplication.getInstance() val context = RocketChatApplication.getInstance()
val hostname = RocketChatCache.getSelectedServerHostname() val hostname = RocketChatCache.getSelectedServerHostname()
hostname?.let { hostname?.let {
...@@ -40,7 +41,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi ...@@ -40,7 +41,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi
RocketChatCache.clearSelectedHostnameReferences() RocketChatCache.clearSelectedHostnameReferences()
} }
LaunchUtil.showMainActivity(context) LaunchUtil.showMainActivity(ctx)
} }
override fun login(username: String, password: String) { override fun login(username: String, password: String) {
......
package chat.rocket.android.helper;
public class BackStackHelper {
public static String FRAGMENT_TAG = "login";
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment