diff --git a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java
index 2f2991a38..0d9226c8d 100644
--- a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java
@@ -149,6 +149,10 @@ public class LoginActivity extends BaseActivity {
editor.putBoolean(getString(R.string.SET_EMBEDDED_BROWSER), !item.isChecked());
editor.apply();
return false;
+ } else if (id == R.id.action_request_admin) {
+ item.setChecked(!item.isChecked());
+ requestedAdmin = item.isChecked();
+ return false;
}
return super.onOptionsItemSelected(item);
}
diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
index 770f36657..c879b8db6 100644
--- a/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
+++ b/app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java
@@ -76,7 +76,6 @@ public class FragmentLoginMain extends Fragment {
binding.menuIcon.setOnClickListener(this::showMenu);
binding.loginInstance.setOnItemClickListener((parent, view, position, id) -> oldSearch = parent.getItemAtPosition(position).toString().trim());
- binding.adminScope.setOnCheckedChangeListener((compoundButton, checked) -> ((LoginActivity) requireActivity()).setAdmin(checked));
binding.loginInstance.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -173,9 +172,11 @@ public class FragmentLoginMain extends Fragment {
MenuInflater menuInflater = popupMenu.getMenuInflater();
menuInflater.inflate(R.menu.main_login, popupMenu.getMenu());
MenuItem customTabItem = popupMenu.getMenu().findItem(R.id.action_custom_tabs);
+ MenuItem adminTabItem = popupMenu.getMenu().findItem(R.id.action_request_admin);
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
boolean embedded_browser = sharedpreferences.getBoolean(getString(R.string.SET_EMBEDDED_BROWSER), true);
customTabItem.setChecked(!embedded_browser);
+ adminTabItem.setChecked(((LoginActivity) requireActivity()).requestedAdmin());
popupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.action_proxy) {
@@ -200,6 +201,23 @@ public class FragmentLoginMain extends Fragment {
}
});
editor.apply();
+ } else if (itemId == R.id.action_request_admin) {
+ boolean checked = !((LoginActivity) requireActivity()).requestedAdmin();
+ ((LoginActivity) requireActivity()).setAdmin(checked);
+ item.setChecked(!item.isChecked());
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
+ item.setActionView(new View(requireContext()));
+ item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
+ @Override
+ public boolean onMenuItemActionExpand(MenuItem item) {
+ return false;
+ }
+
+ @Override
+ public boolean onMenuItemActionCollapse(MenuItem item) {
+ return false;
+ }
+ });
}
return false;
});
@@ -230,7 +248,7 @@ public class FragmentLoginMain extends Fragment {
Toasty.error(requireActivity(), getString(R.string.client_error), Toast.LENGTH_LONG).show();
}
if (api == Account.API.MASTODON) {
- String scopes = binding.adminScope.isChecked() ? Helper.OAUTH_SCOPES_ADMIN : Helper.OAUTH_SCOPES;
+ String scopes = ((LoginActivity) requireActivity()).requestedAdmin() ? Helper.OAUTH_SCOPES_ADMIN : Helper.OAUTH_SCOPES;
AppsVM appsVM = new ViewModelProvider(requireActivity()).get(AppsVM.class);
appsVM.createApp(currentInstance, getString(R.string.app_name),
Helper.REDIRECT_CONTENT_WEB,
@@ -239,13 +257,13 @@ public class FragmentLoginMain extends Fragment {
).observe(requireActivity(), app -> {
client_id = app.client_id;
client_secret = app.client_secret;
- String redirectUrl = MastodonHelper.authorizeURL(currentInstance, client_id, binding.adminScope.isChecked());
+ String redirectUrl = MastodonHelper.authorizeURL(currentInstance, client_id, ((LoginActivity) requireActivity()).requestedAdmin());
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
boolean embedded_browser = sharedpreferences.getBoolean(getString(R.string.SET_EMBEDDED_BROWSER), true);
if (embedded_browser) {
Intent i = new Intent(requireActivity(), WebviewConnectActivity.class);
i.putExtra("login_url", redirectUrl);
- i.putExtra("requestedAdmin", binding.adminScope.isChecked());
+ i.putExtra("requestedAdmin", ((LoginActivity) requireActivity()).requestedAdmin());
startActivity(i);
requireActivity().finish();
} else {
diff --git a/app/src/main/res/layout/fragment_login_main.xml b/app/src/main/res/layout/fragment_login_main.xml
index ebbcb6d4d..053b1274a 100644
--- a/app/src/main/res/layout/fragment_login_main.xml
+++ b/app/src/main/res/layout/fragment_login_main.xml
@@ -48,14 +48,6 @@
android:imeOptions="actionNext"
android:inputType="textWebEmailAddress"
android:singleLine="true" />
-
-
-
+