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 45297acf5..98478fceb 100644
--- a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java
@@ -20,6 +20,7 @@ import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.graphics.PorterDuff;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
@@ -36,6 +37,7 @@ import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import androidx.constraintlayout.widget.Group;
+import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -54,18 +56,22 @@ import app.fedilab.android.helper.Helper;
import app.fedilab.android.interfaces.OnAdminActionInterface;
import es.dmoral.toasty.Toasty;
+import static app.fedilab.android.client.API.adminAction.APPROVE;
import static app.fedilab.android.client.API.adminAction.DISABLE;
import static app.fedilab.android.client.API.adminAction.NONE;
+import static app.fedilab.android.client.API.adminAction.REJECT;
import static app.fedilab.android.client.API.adminAction.SILENCE;
import static app.fedilab.android.client.API.adminAction.SUSPEND;
public class AccountReportActivity extends BaseActivity implements OnAdminActionInterface {
TextView permissions, username, email, email_status, login_status, joined, recent_ip, comment_label;
- Button warn, disable, silence, suspend;
+ Button warn, disable, silence, suspend, allow, reject, assign, status;
private String account_id;
private CheckBox email_user;
private EditText comment;
+ private Report report;
+ private Group allow_reject_group;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -73,7 +79,7 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
setTheme(R.style.AppAdminTheme);
- Report report = null;
+ report = null;
AccountAdmin targeted_account = null;
Bundle b = getIntent().getExtras();
if (b != null) {
@@ -107,6 +113,14 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
disable = findViewById(R.id.disable);
silence = findViewById(R.id.silence);
suspend = findViewById(R.id.suspend);
+ allow = findViewById(R.id.allow);
+ reject = findViewById(R.id.reject);
+ status = findViewById(R.id.status);
+ assign = findViewById(R.id.assign);
+ allow_reject_group = findViewById(R.id.allow_reject_group);
+ allow_reject_group.setVisibility(View.GONE);
+ allow.getBackground().setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.green_1), PorterDuff.Mode.MULTIPLY);
+ reject.getBackground().setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.red_1), PorterDuff.Mode.MULTIPLY);
comment_label = findViewById(R.id.comment_label);
permissions = findViewById(R.id.permissions);
username = findViewById(R.id.username);
@@ -123,7 +137,8 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
Toasty.error(getApplicationContext(), getString(R.string.toast_error), Toast.LENGTH_LONG).show();
finish();
}
-
+ assign.setVisibility(View.GONE);
+ status.setVisibility(View.GONE);
if( account_id != null){
new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.GET_ONE_ACCOUNT, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
return;
@@ -176,9 +191,13 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
}
return;
}
- if( apiResponse.getAccountAdmins() != null && apiResponse.getAccountAdmins().size() > 0) {
+ if( apiResponse.getReports() != null && apiResponse.getReports().size() > 0){
+ report = apiResponse.getReports().get(0);
+ fillReport(apiResponse.getAccountAdmins().get(0));
+ } else if( apiResponse.getAccountAdmins() != null && apiResponse.getAccountAdmins().size() > 0) {
fillReport(apiResponse.getAccountAdmins().get(0));
}
+
}
private void fillReport(AccountAdmin accountAdmin){
@@ -187,6 +206,21 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
Toasty.error(getApplicationContext(), getString(R.string.toast_error), Toast.LENGTH_LONG).show();
return;
}
+ if(!accountAdmin.isConfirmed()){
+ allow_reject_group.setVisibility(View.VISIBLE);
+ }
+
+ reject.setOnClickListener(view->{
+ AdminAction adminAction = new AdminAction();
+ adminAction.setType(REJECT);
+ new PostAdminActionAsyncTask(getApplicationContext(), REJECT, account_id, adminAction, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ });
+
+ allow.setOnClickListener(view->{
+ AdminAction adminAction = new AdminAction();
+ adminAction.setType(APPROVE);
+ new PostAdminActionAsyncTask(getApplicationContext(), APPROVE, account_id, adminAction, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ });
warn.setOnClickListener(view->{
AdminAction adminAction = new AdminAction();
@@ -230,7 +264,6 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.ENABLE, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
-
if( !accountAdmin.isSuspended() ) {
suspend.setText(getString(R.string.suspend));
}else{
@@ -248,6 +281,7 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
}
});
+
if( accountAdmin.getAction() != null) {
String message = null;
switch (accountAdmin.getAction()) {
@@ -272,6 +306,14 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
case NONE:
message = getString(R.string.account_warned);
break;
+ case APPROVE:
+ allow_reject_group.setVisibility(View.GONE);
+ message = getString(R.string.account_approved);
+ break;
+ case REJECT:
+ allow_reject_group.setVisibility(View.GONE);
+ message = getString(R.string.account_rejected);
+ break;
}
if( message != null){
Toasty.success(getApplicationContext(), message, Toast.LENGTH_LONG).show();
@@ -344,5 +386,39 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
joined.setText(Helper.dateToString(accountAdmin.getCreated_at()));
+ if( report != null){
+ assign.setVisibility(View.VISIBLE);
+ status.setVisibility(View.VISIBLE);
+ if( report.getAssigned_account() == null){
+ assign.setText(getString(R.string.assign_to_me));
+ }else{
+ assign.setText(getString(R.string.unassign));
+ }
+ assign.setOnClickListener(view ->{
+ if( report.getAssigned_account() == null){
+ new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.ASSIGN_TO_SELF, report.getId(), null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }else{
+ new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.UNASSIGN, report.getId(), null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+ });
+
+ if( report.isAction_taken()){
+ status.setText(getString(R.string.mark_unresolved));
+ }else{
+ status.setText(getString(R.string.mark_resolved));
+ }
+ status.setOnClickListener(view ->{
+ if( report.isAction_taken() ){
+ new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.REOPEN, report.getId(), null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }else{
+ new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.RESOLVE, report.getId(), null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+ });
+
+ }else{
+ assign.setVisibility(View.GONE);
+ status.setVisibility(View.GONE);
+ }
+
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3b4069cd9..97a81777e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1073,6 +1073,12 @@
Display the admin menu
Display the admin feature in statuses
Allow
+ The account is approved!
+ The account is rejected!
+ Assign to me
+ Unassign
+ Mark as resolved
+ Mark as unresolved
- %d vote
- %d votes