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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5bc26082f..650c9acf7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1041,6 +1041,22 @@
Disabled
Silenced
Suspended
+ Permissions
+ Email status
+ Login status
+ Joined
+ Most recent IP
+ Warn
+ Disable
+ Silence
+ Notify the user per e-mail
+ Perform action
+ Custom warning
+ User
+ Moderator
+ Administrator
+ Confirmed
+ Not confirmed
- %d vote
- %d votes