From 4652b70b376d2a8589bed77ee0f2089eb36b233d Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Wed, 3 Feb 2021 11:14:25 +0800 Subject: [PATCH] Add a FAB in LoginActivity to setDomStorageEnabled. --- .../activities/LoginActivity.java | 43 +++++++++++++++++-- app/src/main/res/drawable/ic_help_24dp.xml | 9 ++++ app/src/main/res/layout/activity_login.xml | 8 ++++ app/src/main/res/values/strings.xml | 5 ++- 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_help_24dp.xml diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java index 210a81c7..49455183 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java @@ -10,6 +10,7 @@ import android.os.Bundle; import android.util.Log; import android.view.InflateException; import android.view.MenuItem; +import android.view.View; import android.webkit.CookieManager; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -19,8 +20,11 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.core.app.ActivityCompat; import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.r0adkll.slidr.Slidr; import org.json.JSONException; @@ -34,13 +38,13 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import ml.docilealligator.infinityforreddit.apis.RedditAPI; -import ml.docilealligator.infinityforreddit.asynctasks.ParseAndInsertNewAccountAsyncTask; -import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.FetchMyInfo; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; +import ml.docilealligator.infinityforreddit.apis.RedditAPI; +import ml.docilealligator.infinityforreddit.asynctasks.ParseAndInsertNewAccountAsyncTask; +import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.utils.APIUtils; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; @@ -51,6 +55,8 @@ import retrofit2.Retrofit; public class LoginActivity extends BaseActivity { + private static final String ENABLE_DOM_STATE = "EDS"; + @BindView(R.id.coordinator_layout_login_activity) CoordinatorLayout coordinatorLayout; @BindView(R.id.appbar_layout_login_activity) @@ -61,6 +67,8 @@ public class LoginActivity extends BaseActivity { TextView twoFAInfoTextView; @BindView(R.id.webview_login_activity) WebView webView; + @BindView(R.id.fab_login_activity) + FloatingActionButton fab; @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -78,6 +86,7 @@ public class LoginActivity extends BaseActivity { @Inject CustomThemeWrapper mCustomThemeWrapper; private String authCode; + private boolean enableDom = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -108,7 +117,28 @@ public class LoginActivity extends BaseActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (savedInstanceState != null) { + enableDom = savedInstanceState.getBoolean(ENABLE_DOM_STATE); + } + + fab.setOnClickListener(view -> { + new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.have_trouble_login_title) + .setMessage(R.string.have_trouble_login_message) + .setPositiveButton(R.string.yes, (dialogInterface, i) -> { + enableDom = !enableDom; + ActivityCompat.recreate(this); + }) + .setNegativeButton(R.string.no, null) + .show(); + }); + + if (enableDom) { + twoFAInfoTextView.setVisibility(View.GONE); + } + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setDomStorageEnabled(enableDom); Uri baseUri = Uri.parse(APIUtils.OAUTH_URL); Uri.Builder uriBuilder = baseUri.buildUpon(); @@ -227,6 +257,12 @@ public class LoginActivity extends BaseActivity { }); } + @Override + protected void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean(ENABLE_DOM_STATE, enableDom); + } + @Override public SharedPreferences getDefaultSharedPreferences() { return mSharedPreferences; @@ -244,6 +280,7 @@ public class LoginActivity extends BaseActivity { twoFAInfoTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); Drawable infoDrawable = Utils.getTintedDrawable(this, R.drawable.ic_info_preference_24dp, mCustomThemeWrapper.getPrimaryIconColor()); twoFAInfoTextView.setCompoundDrawablesWithIntrinsicBounds(infoDrawable, null, null, null); + applyFABTheme(fab); } @Override diff --git a/app/src/main/res/drawable/ic_help_24dp.xml b/app/src/main/res/drawable/ic_help_24dp.xml new file mode 100644 index 00000000..81e329b9 --- /dev/null +++ b/app/src/main/res/drawable/ic_help_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 470a6124..2452a367 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -47,4 +47,12 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50eab52f..e965361a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1016,7 +1016,8 @@ Unable to add %1$s to multireddit %2$s Choose a user - - Hello blank fragment + + Having Trouble Login + Do you want to try another way to login?