diff --git a/app/src/main/java/eu/faircode/email/FragmentOAuth.java b/app/src/main/java/eu/faircode/email/FragmentOAuth.java index 41070d9e8c..f0d4d85949 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOAuth.java +++ b/app/src/main/java/eu/faircode/email/FragmentOAuth.java @@ -387,11 +387,14 @@ public class FragmentOAuth extends FragmentBase { EmailProvider provider = EmailProvider.getProvider(context, id); EmailProvider.OAuth oauth = (graph ? provider.graph : provider.oauth); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean oauth_tabs = prefs.getBoolean("oauth_tabs", true); + AppAuthConfiguration.Builder appAuthConfig = new AppAuthConfiguration.Builder(); AuthorizationService authService; try { - appAuthConfig.setBrowserMatcher(getBrowserMatcher(context, true, provider)); + appAuthConfig.setBrowserMatcher(getBrowserMatcher(context, oauth_tabs, provider)); authService = new AuthorizationService(context, appAuthConfig.build()); } catch (Throwable ex) { /* @@ -429,7 +432,6 @@ public class FragmentOAuth extends FragmentBase { int random = Math.abs(new SecureRandom().nextInt()); long expire = new Date().getTime() + OAUTH_TIMEOUT; AuthState authState = new AuthState(serviceConfig); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String key = "oauth." + provider.id + (graph ? ":graph" : ""); JSONObject jauthstate = authState.jsonSerialize(); jauthstate.put(FAIREMAIL_RANDOM, random); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index c54a6dbba5..0da9d7c3f1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -178,11 +178,12 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private SwitchCompat swSyncExtra; private TextView tvSqliteCache; private SeekBar sbSqliteCache; + private ImageButton ibSqliteCache; + private SwitchCompat swOauthTabs; private TextView tvChunkSize; private SeekBar sbChunkSize; private TextView tvThreadRange; private SeekBar sbThreadRange; - private ImageButton ibSqliteCache; private SwitchCompat swAutoScroll; private SwitchCompat swUndoManager; private SwitchCompat swBrowserZoom; @@ -274,6 +275,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "test1", "test2", "test3", "test4", "test5", "emergency_file", "work_manager", // "external_storage", "sqlite_integrity_check", "wal", "sqlite_checkpoints", "sqlite_analyze", "sqlite_auto_vacuum", "sqlite_sync_extra", "sqlite_cache", + "oauth_tabs", "chunk_size", "thread_range", "autoscroll_editor", "undo_manager", "browser_zoom", "fake_dark", @@ -416,6 +418,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc tvSqliteCache = view.findViewById(R.id.tvSqliteCache); sbSqliteCache = view.findViewById(R.id.sbSqliteCache); ibSqliteCache = view.findViewById(R.id.ibSqliteCache); + swOauthTabs = view.findViewById(R.id.swOauthTabs); tvChunkSize = view.findViewById(R.id.tvChunkSize); sbChunkSize = view.findViewById(R.id.sbChunkSize); tvThreadRange = view.findViewById(R.id.tvThreadRange); @@ -1221,6 +1224,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swOauthTabs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton v, boolean checked) { + prefs.edit().putBoolean("oauth_tabs", checked).apply(); + } + }); + sbChunkSize.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -2296,6 +2306,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc Helper.humanReadableByteCount(cache_size * 1024L))); sbSqliteCache.setProgress(sqlite_cache); + swOauthTabs.setChecked(prefs.getBoolean("oauth_tabs", true)); + int chunk_size = prefs.getInt("chunk_size", Core.DEFAULT_CHUNK_SIZE); tvChunkSize.setText(getString(R.string.title_advanced_chunk_size, chunk_size)); sbChunkSize.setProgress(chunk_size); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index b53eb8596f..73fce1f9cd 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -1137,6 +1137,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/ibSqliteCache" /> + + + app:layout_constraintTop_toBottomOf="@id/swOauthTabs" /> sqlite auto vacuum sqlite sync extra sqlite cache: %1$s %% - %2$s + OAuth tabs Chunk size: %1$d Thread range: %1$d days Auto scroll editor