mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-25 14:40:41 +01:00
Fix account switching
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
af48bc9a50
commit
a621401520
@ -130,8 +130,8 @@ public class ApiHelper {
|
||||
return baseUrl + ocsApiVersion + spreedApiVersion + "/signaling";
|
||||
}
|
||||
|
||||
public static String getUrlForUserProfile(String baseUrl, String username) {
|
||||
return baseUrl + ocsApiVersion + "/cloud/users/" + username;
|
||||
public static String getUrlForUserProfile(String baseUrl) {
|
||||
return baseUrl + ocsApiVersion + "/cloud/user";
|
||||
}
|
||||
|
||||
public static String getUrlPostfixForStatus() {
|
||||
|
@ -114,7 +114,7 @@ public class AccountVerificationController extends BaseController {
|
||||
R.string.nc_nextcloud_talk_app_installed), getResources().getString(R.string.nc_app_name)));
|
||||
|
||||
profileQueryDisposable = ncApi.getUserProfile(credentials,
|
||||
ApiHelper.getUrlForUserProfile(baseUrl, username))
|
||||
ApiHelper.getUrlForUserProfile(baseUrl))
|
||||
.subscribeOn(Schedulers.newThread())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(userProfileOverall -> {
|
||||
|
@ -36,6 +36,7 @@ import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.text.InputType;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -236,6 +237,7 @@ public class CallsListController extends BaseController implements SearchView.On
|
||||
|
||||
callItems = new ArrayList<>();
|
||||
|
||||
Log.d("MARIO", userEntity.getUsername());
|
||||
roomsQueryDisposable = ncApi.getRooms(ApiHelper.getCredentials(userEntity.getUsername(),
|
||||
userEntity.getToken()), ApiHelper.getUrlForGetRooms(userEntity.getBaseUrl()))
|
||||
.subscribeOn(Schedulers.newThread())
|
||||
|
@ -33,7 +33,6 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bluelinelabs.conductor.RouterTransaction;
|
||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
|
||||
import com.bumptech.glide.load.model.GlideUrl;
|
||||
import com.bumptech.glide.load.model.LazyHeaders;
|
||||
@ -62,6 +61,7 @@ import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.net.CookieManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -140,6 +140,9 @@ public class SettingsController extends BaseController {
|
||||
@Inject
|
||||
UserUtils userUtils;
|
||||
|
||||
@Inject
|
||||
CookieManager cookieManager;
|
||||
|
||||
private UserEntity userEntity;
|
||||
|
||||
private OnPreferenceValueChangedListener<String> proxyTypeChangeListener;
|
||||
@ -282,7 +285,7 @@ public class SettingsController extends BaseController {
|
||||
|
||||
profileQueryDisposable = ncApi.getUserProfile(ApiHelper.getCredentials(userEntity.getUsername(),
|
||||
userEntity.getToken()),
|
||||
ApiHelper.getUrlForUserProfile(userEntity.getBaseUrl(), userEntity.getUsername()))
|
||||
ApiHelper.getUrlForUserProfile(userEntity.getBaseUrl()))
|
||||
.subscribeOn(Schedulers.newThread())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(userProfileOverall -> {
|
||||
@ -318,15 +321,16 @@ public class SettingsController extends BaseController {
|
||||
}, () -> dispose(profileQueryDisposable));
|
||||
|
||||
removeAccountButton.setOnClickListener(view1 -> {
|
||||
cookieManager.getCookieStore().removeAll();
|
||||
boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(userEntity.getId());
|
||||
if (otherUserExists && getView() != null) {
|
||||
onAttach(getView());
|
||||
onViewBound(getView());
|
||||
onAttach(getView());
|
||||
} else if (!otherUserExists) {
|
||||
getParentController().getRouter().setRoot(RouterTransaction.with(
|
||||
new ServerSelectionController())
|
||||
.pushChangeHandler(new HorizontalChangeHandler())
|
||||
.popChangeHandler(new HorizontalChangeHandler()));
|
||||
.pushChangeHandler(new VerticalChangeHandler())
|
||||
.popChangeHandler(new VerticalChangeHandler()));
|
||||
}
|
||||
|
||||
new JobRequest.Builder(AccountRemovalJob.TAG).setUpdateCurrent(true)
|
||||
|
@ -37,6 +37,7 @@ import com.nextcloud.talk.controllers.base.BaseController;
|
||||
import com.nextcloud.talk.persistence.entities.UserEntity;
|
||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||
|
||||
import java.net.CookieManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -55,6 +56,9 @@ public class SwitchAccountController extends BaseController {
|
||||
@Inject
|
||||
UserUtils userUtils;
|
||||
|
||||
@Inject
|
||||
CookieManager cookieManager;
|
||||
|
||||
@BindView(R.id.recycler_view)
|
||||
RecyclerView recyclerView;
|
||||
|
||||
@ -80,6 +84,7 @@ public class SwitchAccountController extends BaseController {
|
||||
|
||||
@Override
|
||||
public void onNext(UserEntity userEntity) {
|
||||
cookieManager.getCookieStore().removeAll();
|
||||
userUtils.disableAllUsersWithoutId(userEntity.getId());
|
||||
getRouter().popCurrentController();
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.CookieSyncManager;
|
||||
import android.webkit.SslErrorHandler;
|
||||
import android.webkit.WebView;
|
||||
@ -84,6 +83,8 @@ public class WebViewLoginController extends BaseController {
|
||||
MagicTrustManager magicTrustManager;
|
||||
@Inject
|
||||
EventBus eventBus;
|
||||
@Inject
|
||||
java.net.CookieManager cookieManager;
|
||||
|
||||
@BindView(R.id.webview)
|
||||
WebView webView;
|
||||
@ -140,7 +141,7 @@ public class WebViewLoginController extends BaseController {
|
||||
webView.clearHistory();
|
||||
|
||||
CookieSyncManager.createInstance(getActivity());
|
||||
CookieManager.getInstance().removeAllCookies(null);
|
||||
android.webkit.CookieManager.getInstance().removeAllCookies(null);
|
||||
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("OCS-APIRequest", "true");
|
||||
@ -244,6 +245,7 @@ public class WebViewLoginController extends BaseController {
|
||||
userQueryDisposable = userUtils.createOrUpdateUser(loginData.getUsername(), loginData.getToken(),
|
||||
baseUrl, null, null, true).
|
||||
subscribe(userEntity -> {
|
||||
cookieManager.getCookieStore().removeAll();
|
||||
if (!isPasswordUpdate && finalErrorMessageType == null) {
|
||||
BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
|
||||
bundleBuilder.putString(BundleKeys.KEY_USERNAME, userEntity.getUsername());
|
||||
|
@ -112,22 +112,32 @@ public class RestModule {
|
||||
return new SSLSocketFactoryCompat(magicTrustManager);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
CookieManager provideCookieManager() {
|
||||
return new CookieManager();
|
||||
}
|
||||
@Provides
|
||||
@Singleton
|
||||
Cache provideCache() {
|
||||
int cacheSize = 128 * 1024 * 1024; // 128 MB
|
||||
return new Cache(NextcloudTalkApplication.getSharedApplication().getCacheDir(), cacheSize);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
OkHttpClient provideHttpClient(Proxy proxy, AppPreferences appPreferences,
|
||||
MagicTrustManager magicTrustManager,
|
||||
SSLSocketFactoryCompat sslSocketFactoryCompat) {
|
||||
SSLSocketFactoryCompat sslSocketFactoryCompat, Cache cache,
|
||||
CookieManager cookieManager) {
|
||||
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
|
||||
|
||||
httpClient.connectTimeout(30, TimeUnit.SECONDS);
|
||||
httpClient.readTimeout(30, TimeUnit.SECONDS);
|
||||
httpClient.writeTimeout(30, TimeUnit.SECONDS);
|
||||
|
||||
httpClient.cookieJar(new JavaNetCookieJar(new CookieManager()));
|
||||
|
||||
int cacheSize = 128 * 1024 * 1024; // 128 MB
|
||||
|
||||
httpClient.cache(new Cache(NextcloudTalkApplication.getSharedApplication().getCacheDir(), cacheSize));
|
||||
httpClient.cookieJar(new JavaNetCookieJar(cookieManager));
|
||||
httpClient.cache(cache);
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
||||
|
Loading…
Reference in New Issue
Block a user