From 36fac883387affc688274526c2945972ed06b8aa Mon Sep 17 00:00:00 2001 From: tom79 Date: Fri, 21 Jun 2019 18:42:00 +0200 Subject: [PATCH] Display users --- app/src/main/AndroidManifest.xml | 5 + .../activities/AccountReportActivity.java | 160 +++++++++++++ .../drawers/AccountsAdminListAdapter.java | 16 +- .../android/drawers/ReportsListAdapter.java | 15 +- .../main/res/layout/activity_admin_report.xml | 221 ++++++++++++++++++ app/src/main/res/values/strings.xml | 16 ++ 6 files changed, 429 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java create mode 100644 app/src/main/res/layout/activity_admin_report.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a63593396..28cad2a69 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -237,6 +237,11 @@ android:configChanges="orientation|screenSize" android:label="@string/app_name" /> + . */ + +import android.annotation.SuppressLint; +import android.content.SharedPreferences; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.ActionBar; + +import app.fedilab.android.R; +import app.fedilab.android.asynctasks.PostAdminActionAsyncTask; +import app.fedilab.android.client.API; +import app.fedilab.android.client.APIResponse; +import app.fedilab.android.client.Entities.AccountAdmin; +import app.fedilab.android.client.Entities.Report; +import app.fedilab.android.helper.Helper; +import app.fedilab.android.interfaces.OnAdminActionInterface; +import es.dmoral.toasty.Toasty; + +public class AccountReportActivity extends BaseActivity implements OnAdminActionInterface { + + TextView permissions, email, email_status, login_status, joined, recent_ip; + Button warn, disable, silence; + private String account_id; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE); + + setTheme(R.style.AppAdminTheme); + Report report = null; + AccountAdmin targeted_account = null; + Bundle b = getIntent().getExtras(); + if (b != null) { + account_id = b.getString("account_id", null); + targeted_account = b.getParcelable("targeted_account"); + report = b.getParcelable("report"); + } + + if (getSupportActionBar() != null) + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); + assert inflater != null; + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null); + actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); + TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + toolbar_title.setText(String.format(getString(R.string.administration) + " %s", Helper.getLiveInstance(getApplicationContext()))); + } + setContentView(R.layout.activity_admin_report); + + warn = findViewById(R.id.warn); + disable = findViewById(R.id.disable); + silence = findViewById(R.id.silence); + + permissions = findViewById(R.id.permissions); + email = findViewById(R.id.email); + email_status = findViewById(R.id.email_status); + login_status = findViewById(R.id.login_status); + joined = findViewById(R.id.joined); + recent_ip = findViewById(R.id.recent_ip); + + CheckBox email_user = findViewById(R.id.email_user); + EditText comment = findViewById(R.id.comment); + + if( account_id == null && report == null && targeted_account == null){ + Toasty.error(getApplicationContext(), getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + finish(); + } + + if( account_id != null){ + new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.GET_ONE_ACCOUNT, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + return; + } + if( report != null) { + targeted_account = report.getAccount(); + } + fillReport(targeted_account); + + } + + @Override + public void onAdminAction(APIResponse apiResponse) { + if( apiResponse == null || apiResponse.getError() != null){ + Toasty.error(getApplicationContext(), getString(R.string.toast_error),Toast.LENGTH_LONG).show(); + return; + } + if( apiResponse.getAccountAdmins() != null && apiResponse.getAccountAdmins().size() > 0) { + fillReport(apiResponse.getAccountAdmins().get(0)); + } + } + + private void fillReport(AccountAdmin accountAdmin){ + + if( accountAdmin == null){ + Toasty.error(getApplicationContext(), getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + return; + } + switch (accountAdmin.getRole()){ + case "user": + permissions.setText(getString(R.string.user)); + break; + case "mod": + permissions.setText(getString(R.string.moderator)); + break; + case "admin": + permissions.setText(getString(R.string.administrator)); + break; + } + + email.setText(accountAdmin.getEmail()); + email_status.setText(accountAdmin.isConfirmed()?getString(R.string.confirmed):getString(R.string.unconfirmed)); + + if( accountAdmin.isDisabled()){ + login_status.setText(getString(R.string.disabled)); + }else if( accountAdmin.isSilenced()){ + login_status.setText(getString(R.string.silenced)); + }else if( accountAdmin.isSuspended()){ + login_status.setText(getString(R.string.suspended)); + }else{ + login_status.setText(getString(R.string.active)); + } + + joined.setText(Helper.dateToString(accountAdmin.getCreated_at())); + recent_ip.setText(accountAdmin.getIp()); + } +} diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java index 4814b10f2..af980fba5 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java @@ -15,6 +15,8 @@ package app.fedilab.android.drawers; * see . */ import android.content.Context; +import android.content.Intent; +import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -28,6 +30,7 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; import app.fedilab.android.R; +import app.fedilab.android.activities.AccountReportActivity; import app.fedilab.android.asynctasks.RetrieveAccountsAsyncTask; import app.fedilab.android.client.Entities.Account; import app.fedilab.android.client.Entities.AccountAdmin; @@ -97,6 +100,15 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On holder.report_action_taken.setText(accountAdmin.getIp()); Helper.loadGiF(context, account.getAvatar(), holder.account_pp); + + + holder.main_container.setOnClickListener(view ->{ + Intent intent = new Intent(context, AccountReportActivity.class); + Bundle b = new Bundle(); + b.putParcelable("targeted_account", accountAdmin); + intent.putExtras(b); + context.startActivity(intent); + }); } @Override @@ -141,7 +153,7 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On TextView account_un; TextView report_action_taken; - LinearLayout account_container; + LinearLayout main_container; ViewHolder(View itemView) { super(itemView); @@ -150,7 +162,7 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On account_ac = itemView.findViewById(R.id.account_ac); account_un = itemView.findViewById(R.id.account_un); report_action_taken = itemView.findViewById(R.id.report_action_taken); - account_container = itemView.findViewById(R.id.account_container); + main_container = itemView.findViewById(R.id.main_container); } } diff --git a/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java index efcf66652..e9a427464 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java @@ -15,6 +15,8 @@ package app.fedilab.android.drawers; * see . */ import android.content.Context; +import android.content.Intent; +import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -28,6 +30,7 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.List; import app.fedilab.android.R; +import app.fedilab.android.activities.AccountReportActivity; import app.fedilab.android.asynctasks.RetrieveAccountsAsyncTask; import app.fedilab.android.client.Entities.Account; import app.fedilab.android.client.Entities.Report; @@ -104,6 +107,14 @@ public class ReportsListAdapter extends RecyclerView.Adapter implements OnRetrie holder.report_number_status.setText("0"); } + holder.main_container.setOnClickListener(view ->{ + Intent intent = new Intent(context, AccountReportActivity.class); + Bundle b = new Bundle(); + b.putParcelable("report", report); + intent.putExtras(b); + context.startActivity(intent); + }); + } @Override @@ -147,7 +158,7 @@ public class ReportsListAdapter extends RecyclerView.Adapter implements OnRetrie TextView account_dn, account_dn_reporter; TextView report_comment, report_number_status; - LinearLayout account_container; + LinearLayout main_container; ViewHolder(View itemView) { super(itemView); @@ -157,7 +168,7 @@ public class ReportsListAdapter extends RecyclerView.Adapter implements OnRetrie account_dn_reporter = itemView.findViewById(R.id.account_dn_reporter); account_ac = itemView.findViewById(R.id.account_ac); report_comment = itemView.findViewById(R.id.report_comment); - account_container = itemView.findViewById(R.id.account_container); + main_container = itemView.findViewById(R.id.main_container); report_number_status = itemView.findViewById(R.id.report_number_status); } } diff --git a/app/src/main/res/layout/activity_admin_report.xml b/app/src/main/res/layout/activity_admin_report.xml new file mode 100644 index 000000000..89d676340 --- /dev/null +++ b/app/src/main/res/layout/activity_admin_report.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +