diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java')
-rw-r--r-- | app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java b/app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java index 8ef6a8f34..87ab4bac2 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginMain.java @@ -25,6 +25,7 @@ import static app.fedilab.android.activities.LoginActivity.softwareLogin; import android.Manifest; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; @@ -43,9 +44,12 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.widget.PopupMenu; +import androidx.browser.customtabs.CustomTabColorSchemeParams; +import androidx.browser.customtabs.CustomTabsIntent; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.preference.PreferenceManager; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; @@ -60,6 +64,7 @@ import app.fedilab.android.mastodon.client.entities.app.Account; import app.fedilab.android.mastodon.client.entities.app.InstanceSocial; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.MastodonHelper; +import app.fedilab.android.mastodon.helper.ThemeHelper; import app.fedilab.android.mastodon.helper.ZipHelper; import app.fedilab.android.mastodon.viewmodel.mastodon.AppsVM; import app.fedilab.android.mastodon.viewmodel.mastodon.InstanceSocialVM; @@ -214,6 +219,10 @@ public class FragmentLoginMain extends Fragment { menuInflater.inflate(R.menu.main_login, popupMenu.getMenu()); MenuItem adminTabItem = popupMenu.getMenu().findItem(R.id.action_request_admin); adminTabItem.setChecked(requestedAdmin); + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); + boolean customTab = sharedpreferences.getBoolean(getString(R.string.SET_CUSTOM_TABS), true); + popupMenu.getMenu().findItem(R.id.action_custom_tabs).setChecked(customTab); + popupMenu.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); if (itemId == R.id.action_proxy) { @@ -242,6 +251,13 @@ public class FragmentLoginMain extends Fragment { } else { proceed(); } + } else if (itemId == R.id.action_custom_tabs) { + boolean newValue = !item.isChecked(); + item.setChecked(newValue); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(getString(R.string.SET_CUSTOM_TABS), newValue); + editor.apply(); + return false; } return false; }); @@ -291,13 +307,26 @@ public class FragmentLoginMain extends Fragment { client_idLogin = app.client_id; client_secretLogin = app.client_secret; String redirectUrl = MastodonHelper.authorizeURL(currentInstanceLogin, client_idLogin, requestedAdmin); - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setData(Uri.parse(redirectUrl)); - try { - startActivity(intent); - } catch (Exception e) { - Toasty.error(requireActivity(), getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()); + boolean customTab = sharedpreferences.getBoolean(getString(R.string.SET_CUSTOM_TABS), true); + if (customTab) { + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); + int colorInt = ThemeHelper.getAttColor(requireActivity(), R.attr.statusBar); + CustomTabColorSchemeParams defaultColors = new CustomTabColorSchemeParams.Builder() + .setToolbarColor(colorInt) + .build(); + builder.setDefaultColorSchemeParams(defaultColors); + CustomTabsIntent customTabsIntent = builder.build(); + customTabsIntent.launchUrl(requireActivity(), Uri.parse(redirectUrl)); + } else { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setData(Uri.parse(redirectUrl)); + try { + startActivity(intent); + } catch (Exception e) { + Toasty.error(requireActivity(), getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + } } } else { Toasty.error(requireActivity(), getString(R.string.client_error), Toasty.LENGTH_SHORT).show(); |