From 3ebd97e3bc47656b19f27da5f6821dd309a6dfe2 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sat, 22 Jun 2019 12:18:51 +0200 Subject: [PATCH] Add in settings --- .../activities/AccountReportActivity.java | 29 +++++++++- .../android/activities/BaseMainActivity.java | 15 +++++- .../android/drawers/StatusListAdapter.java | 19 ++++++- .../android/fragments/SettingsFragment.java | 38 ++++++++++++- .../app/fedilab/android/helper/Helper.java | 3 ++ .../res/layout-sw600dp/fragment_settings.xml | 48 +++++++++++++++++ app/src/main/res/layout/fragment_settings.xml | 53 +++++++++++++++++++ app/src/main/res/menu/option_toot.xml | 4 ++ app/src/main/res/values/strings.xml | 2 + 9 files changed, 204 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java index 9de206555..a9c36099b 100644 --- a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java @@ -16,6 +16,9 @@ package app.fedilab.android.activities; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; @@ -147,8 +150,30 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction @Override public void onAdminAction(APIResponse apiResponse) { - if( apiResponse == null || apiResponse.getError() != null){ - Toasty.error(getApplicationContext(), getString(R.string.toast_error),Toast.LENGTH_LONG).show(); + if( apiResponse.getError() != null){ + if( apiResponse.getError().getStatusCode() == 403){ + AlertDialog.Builder builderInner; + builderInner = new AlertDialog.Builder(AccountReportActivity.this, R.style.AdminDialog); + builderInner.setTitle(R.string.reconnect_account); + builderInner.setMessage(R.string.reconnect_account_message); + builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int which) { + dialog.dismiss(); + } + }); + builderInner.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int which) { + Intent intent = new Intent(AccountReportActivity.this, LoginActivity.class); + intent.putExtra("admin", true); + startActivity(intent); + } + }); + builderInner.show(); + }else{ + Toasty.error(AccountReportActivity.this, apiResponse.getError().getError(),Toast.LENGTH_LONG).show(); + } return; } if( apiResponse.getAccountAdmins() != null && apiResponse.getAccountAdmins().size() > 0) { diff --git a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java index da511b648..7e445e4fd 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java @@ -1085,7 +1085,20 @@ public abstract class BaseMainActivity extends BaseActivity partnerShipItem.setVisible(false); } } - + if( MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.MASTODON){ + MenuItem adminItem = navigationView.getMenu().findItem(R.id.nav_administration); + if( adminItem != null){ + adminItem.setVisible(false); + } + }else{ + boolean display_admin_menu = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ADMIN_MENU + userId + instance, false); + if( !display_admin_menu){ + MenuItem adminItem = navigationView.getMenu().findItem(R.id.nav_administration); + if( adminItem != null){ + adminItem.setVisible(false); + } + } + } LinearLayout owner_container = headerLayout.findViewById(R.id.main_header_container); owner_container.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index b0da9250c..247943837 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -97,6 +97,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import app.fedilab.android.activities.AccountReportActivity; import app.fedilab.android.client.API; import app.fedilab.android.client.APIResponse; import app.fedilab.android.client.Entities.Account; @@ -2361,7 +2362,14 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct popup.getMenu().findItem(R.id.action_schedule_boost).setVisible(false); popup.getMenu().findItem(R.id.action_mention).setVisible(false); } - + if( MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.MASTODON){ + popup.getMenu().findItem(R.id.action_admin).setVisible(false); + }else{ + boolean display_admin_statuses = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ADMIN_STATUSES + userId + Helper.getLiveInstance(context), false); + if( !display_admin_statuses){ + popup.getMenu().findItem(R.id.action_admin).setVisible(false); + } + } boolean custom_sharing = sharedpreferences.getBoolean(Helper.SET_CUSTOM_SHARING, false); if( custom_sharing && status.getVisibility().equals("public")) @@ -2393,7 +2401,14 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct break; case R.id.action_schedule_boost: scheduleBoost(status); - + return true; + case R.id.action_admin: + String account_id = status.getReblog() != null ? status.getReblog().getAccount().getId() : status.getAccount().getId(); + Intent intent = new Intent(context, AccountReportActivity.class); + Bundle b = new Bundle(); + b.putString("account_id", account_id); + intent.putExtras(b); + context.startActivity(intent); return true; case R.id.action_info: tootInformation(status); diff --git a/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java index 3ef99fa6f..cc2d46cda 100644 --- a/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java @@ -342,6 +342,41 @@ public class SettingsFragment extends Fragment { } }); + String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); + String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); + + boolean display_admin_menu = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ADMIN_MENU + userId + instance, false); + + final CheckBox set_display_admin_menu = rootView.findViewById(R.id.set_display_admin_menu); + set_display_admin_menu.setChecked(display_admin_menu); + set_display_admin_menu.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(Helper.SET_DISPLAY_ADMIN_MENU + userId + instance, set_display_admin_menu.isChecked()); + editor.apply(); + } + }); + + boolean display_admin_statuses = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ADMIN_STATUSES + userId + instance, false); + + final CheckBox set_display_admin_statuses = rootView.findViewById(R.id.set_display_admin_statuses); + set_display_admin_statuses.setChecked(display_admin_statuses); + set_display_admin_statuses.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(Helper.SET_DISPLAY_ADMIN_STATUSES + userId + instance, set_display_admin_statuses.isChecked()); + editor.apply(); + } + }); + + if( MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.MASTODON){ + LinearLayout admin_container = rootView.findViewById(R.id.admin_container); + if( admin_container != null){ + admin_container.setVisibility(View.GONE); + } + } boolean show_media_urls = sharedpreferences.getBoolean(Helper.SET_MEDIA_URLS, false); final CheckBox set_auto_add_media_url = rootView.findViewById(R.id.set_auto_add_media_url); @@ -1022,8 +1057,7 @@ public class SettingsFragment extends Fragment { LinearLayout toot_visibility_container = rootView.findViewById(R.id.toot_visibility_container); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); + final Account account = new AccountDAO(context, db).getUniqAccount(userId, instance); final ImageView set_toot_visibility = rootView.findViewById(R.id.set_toot_visibility); if( theme == Helper.THEME_DARK){ diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index ad6f01013..2c19c8215 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -349,6 +349,9 @@ public class Helper { public static final String SET_DISPLAY_TIMELINE_IN_LIST = "set_display_timeline_in_list"; public static final String SET_ONION_SCHEME = "set_onion_scheme"; public static final String SET_REMEMBER_POSITION_HOME = "set_remember_position"; + public static final String SET_DISPLAY_ADMIN_MENU = "set_display_admin_menu"; + public static final String SET_DISPLAY_ADMIN_STATUSES = "set_display_admin_statuses"; + public static final int S_NO = 0; static final int S_512KO = 1; public static final int S_1MO = 2; diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml index 17cca313f..334725c4e 100644 --- a/app/src/main/res/layout-sw600dp/fragment_settings.xml +++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml @@ -155,6 +155,54 @@ android:text="@string/set_display_news_from_fedilab" android:layout_height="wrap_content" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The account is disabled! The account is no longer disabled! The account has been warned! + Display the admin menu + Display the admin feature in statuses %d vote %d votes