Do actions
This commit is contained in:
parent
e1d3b84091
commit
17510ebeb4
|
@ -40,6 +40,7 @@ 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.AdminAction;
|
||||
import app.fedilab.android.client.Entities.Report;
|
||||
import app.fedilab.android.client.Entities.Status;
|
||||
import app.fedilab.android.drawers.StatusReportAdapter;
|
||||
|
@ -47,10 +48,15 @@ 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.DISABLE;
|
||||
import static app.fedilab.android.client.API.adminAction.NONE;
|
||||
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;
|
||||
Button warn, disable, silence;
|
||||
Button warn, disable, silence, suspend;
|
||||
private String account_id;
|
||||
private CheckBox email_user;
|
||||
private EditText comment;
|
||||
|
@ -94,6 +100,7 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
|
|||
warn = findViewById(R.id.warn);
|
||||
disable = findViewById(R.id.disable);
|
||||
silence = findViewById(R.id.silence);
|
||||
suspend = findViewById(R.id.suspend);
|
||||
|
||||
permissions = findViewById(R.id.permissions);
|
||||
username = findViewById(R.id.username);
|
||||
|
@ -182,6 +189,8 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
|
|||
email_user.setVisibility(View.VISIBLE);
|
||||
comment.setVisibility(View.VISIBLE);
|
||||
recent_ip.setText(accountAdmin.getIp());
|
||||
disable.setVisibility(View.GONE);
|
||||
suspend.setVisibility(View.VISIBLE);
|
||||
}else{
|
||||
warn.setVisibility(View.GONE);
|
||||
email_user.setVisibility(View.GONE);
|
||||
|
@ -190,8 +199,108 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
|
|||
recent_ip.setText("-");
|
||||
permissions.setText("-");
|
||||
email.setText("-");
|
||||
disable.setVisibility(View.VISIBLE);
|
||||
suspend.setVisibility(View.GONE);
|
||||
}
|
||||
if( accountAdmin.getRole().equals("admin") || accountAdmin.getRole().equals("mod")){
|
||||
warn.setVisibility(View.GONE);
|
||||
suspend.setVisibility(View.GONE);
|
||||
silence.setVisibility(View.GONE);
|
||||
disable.setVisibility(View.GONE);
|
||||
email_user.setVisibility(View.GONE);
|
||||
email_user.setChecked(false);
|
||||
comment.setVisibility(View.GONE);
|
||||
}
|
||||
joined.setText(Helper.dateToString(accountAdmin.getCreated_at()));
|
||||
|
||||
warn.setOnClickListener(view->{
|
||||
AdminAction adminAction = new AdminAction();
|
||||
adminAction.setType(NONE);
|
||||
adminAction.setSend_email_notification(email_user.isChecked());
|
||||
adminAction.setText(comment.getText().toString().trim());
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), NONE, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
});
|
||||
|
||||
|
||||
if( !accountAdmin.isSilenced() ) {
|
||||
silence.setText(getString(R.string.silence));
|
||||
}else{
|
||||
silence.setText(getString(R.string.unsilence));
|
||||
}
|
||||
silence.setOnClickListener(view->{
|
||||
if( !accountAdmin.isSilenced() ) {
|
||||
AdminAction adminAction = new AdminAction();
|
||||
adminAction.setType(SILENCE);
|
||||
adminAction.setSend_email_notification(email_user.isChecked());
|
||||
adminAction.setText(comment.getText().toString().trim());
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), SILENCE, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}else{
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.UNSILENCE, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
});
|
||||
|
||||
if( !accountAdmin.isSilenced() ) {
|
||||
silence.setText(getString(R.string.disable));
|
||||
}else{
|
||||
silence.setText(getString(R.string.undisable));
|
||||
}
|
||||
disable.setOnClickListener(view->{
|
||||
if( !accountAdmin.isSilenced()) {
|
||||
AdminAction adminAction = new AdminAction();
|
||||
adminAction.setType(DISABLE);
|
||||
adminAction.setSend_email_notification(email_user.isChecked());
|
||||
adminAction.setText(comment.getText().toString().trim());
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), DISABLE, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}else{
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.UNSUSPEND, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
});
|
||||
|
||||
if( !accountAdmin.isSilenced() ) {
|
||||
silence.setText(getString(R.string.suspend));
|
||||
}else{
|
||||
silence.setText(getString(R.string.unsuspend));
|
||||
}
|
||||
suspend.setOnClickListener(view->{
|
||||
if( !accountAdmin.isSuspended() ){
|
||||
AdminAction adminAction = new AdminAction();
|
||||
adminAction.setType(SUSPEND);
|
||||
adminAction.setSend_email_notification(email_user.isChecked());
|
||||
adminAction.setText(comment.getText().toString().trim());
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), SUSPEND, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}else{
|
||||
new PostAdminActionAsyncTask(getApplicationContext(), API.adminAction.UNSUSPEND, account_id, null, AccountReportActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
});
|
||||
|
||||
if( accountAdmin.getAction() != null) {
|
||||
String message = null;
|
||||
switch (accountAdmin.getAction()) {
|
||||
case SILENCE:
|
||||
message = getString(R.string.account_silenced);
|
||||
break;
|
||||
case UNSILENCE:
|
||||
message = getString(R.string.account_unsilenced);
|
||||
break;
|
||||
case DISABLE:
|
||||
message = getString(R.string.account_disabled);
|
||||
break;
|
||||
case UNDISABLE:
|
||||
message = getString(R.string.account_undisabled);
|
||||
break;
|
||||
case SUSPEND:
|
||||
message = getString(R.string.account_suspended);
|
||||
break;
|
||||
case UNSUSPEND:
|
||||
message = getString(R.string.account_unsuspended);
|
||||
break;
|
||||
case NONE:
|
||||
message = getString(R.string.account_warned);
|
||||
break;
|
||||
}
|
||||
if( message != null){
|
||||
Toasty.success(getApplicationContext(), message, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,13 +124,17 @@ public class API {
|
|||
ENABLE,
|
||||
APPROVE,
|
||||
REJECT,
|
||||
NONE,
|
||||
SILENCE,
|
||||
UNDISABLE,
|
||||
DISABLE,
|
||||
UNSILENCE,
|
||||
SUSPEND,
|
||||
UNSUSPEND,
|
||||
ASSIGN_TO_SELF,
|
||||
UNASSIGN,
|
||||
REOPEN,
|
||||
RESOLVE,
|
||||
MODERATION_ACTION,
|
||||
GET_ACCOUNTS,
|
||||
GET_ONE_ACCOUNT,
|
||||
GET_REPORTS,
|
||||
|
@ -335,22 +339,36 @@ public class API {
|
|||
case RESOLVE:
|
||||
endpoint = String.format("/admin/reports/%s/resolve", id);
|
||||
break;
|
||||
case MODERATION_ACTION:
|
||||
case NONE:
|
||||
params = new HashMap<>();
|
||||
switch (adminAction.getType()){
|
||||
case NONE:
|
||||
params.put("type","none");
|
||||
break;
|
||||
case DISABLE:
|
||||
params.put("type","disable");
|
||||
break;
|
||||
case SILENCE:
|
||||
params.put("type","silence");
|
||||
break;
|
||||
case SUSPEND:
|
||||
params.put("type","suspend");
|
||||
break;
|
||||
params.put("type","none");
|
||||
endpoint = String.format("/admin/accounts/%s/action", id);
|
||||
params.put("send_email_notification", String.valueOf(adminAction.isSend_email_notification()));
|
||||
if( adminAction.getText() != null) {
|
||||
params.put("text", adminAction.getText());
|
||||
}
|
||||
break;
|
||||
case DISABLE:
|
||||
params = new HashMap<>();
|
||||
params.put("type","disable");
|
||||
endpoint = String.format("/admin/accounts/%s/action", id);
|
||||
params.put("send_email_notification", String.valueOf(adminAction.isSend_email_notification()));
|
||||
if( adminAction.getText() != null) {
|
||||
params.put("text", adminAction.getText());
|
||||
}
|
||||
break;
|
||||
case SILENCE:
|
||||
params = new HashMap<>();
|
||||
params.put("type","silence");
|
||||
endpoint = String.format("/admin/accounts/%s/action", id);
|
||||
params.put("send_email_notification", String.valueOf(adminAction.isSend_email_notification()));
|
||||
if( adminAction.getText() != null) {
|
||||
params.put("text", adminAction.getText());
|
||||
}
|
||||
break;
|
||||
case SUSPEND:
|
||||
params = new HashMap<>();
|
||||
params.put("type","suspend");
|
||||
endpoint = String.format("/admin/accounts/%s/action", id);
|
||||
params.put("send_email_notification", String.valueOf(adminAction.isSend_email_notification()));
|
||||
if( adminAction.getText() != null) {
|
||||
|
@ -369,6 +387,7 @@ public class API {
|
|||
List<AccountAdmin> accountAdmins = null;
|
||||
try {
|
||||
AccountAdmin accountAdmin = parseAccountAdminResponse(context, new JSONObject(response));
|
||||
accountAdmin.setAction(action);
|
||||
accountAdmins = new ArrayList<>();
|
||||
accountAdmins.add(accountAdmin);
|
||||
} catch (JSONException e) {
|
||||
|
@ -392,7 +411,31 @@ public class API {
|
|||
apiResponse.setReports(reports);
|
||||
|
||||
break;
|
||||
case MODERATION_ACTION:
|
||||
case NONE:
|
||||
break;
|
||||
case DISABLE:
|
||||
accountAdmins = new ArrayList<>();
|
||||
AccountAdmin accountAdmin = new AccountAdmin();
|
||||
accountAdmin.setDisabled(true);
|
||||
accountAdmin.setAction(action);
|
||||
accountAdmins.add(accountAdmin);
|
||||
apiResponse.setAccountAdmins(accountAdmins);
|
||||
break;
|
||||
case SILENCE:
|
||||
accountAdmins = new ArrayList<>();
|
||||
accountAdmin = new AccountAdmin();
|
||||
accountAdmin.setSilenced(true);
|
||||
accountAdmin.setAction(action);
|
||||
accountAdmins.add(accountAdmin);
|
||||
apiResponse.setAccountAdmins(accountAdmins);
|
||||
break;
|
||||
case SUSPEND:
|
||||
accountAdmins = new ArrayList<>();
|
||||
accountAdmin = new AccountAdmin();
|
||||
accountAdmin.setSuspended(true);
|
||||
accountAdmin.setAction(action);
|
||||
accountAdmins.add(accountAdmin);
|
||||
apiResponse.setAccountAdmins(accountAdmins);
|
||||
break;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
|
|
@ -18,6 +18,8 @@ import android.os.Parcelable;
|
|||
|
||||
import java.util.Date;
|
||||
|
||||
import app.fedilab.android.client.API;
|
||||
|
||||
public class AccountAdmin implements Parcelable {
|
||||
|
||||
private String id;
|
||||
|
@ -32,7 +34,7 @@ public class AccountAdmin implements Parcelable {
|
|||
private boolean silenced;
|
||||
private boolean disabled;
|
||||
private Account account;
|
||||
|
||||
private API.adminAction action;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -182,4 +184,12 @@ public class AccountAdmin implements Parcelable {
|
|||
return new AccountAdmin[size];
|
||||
}
|
||||
};
|
||||
|
||||
public API.adminAction getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
public void setAction(API.adminAction action) {
|
||||
this.action = action;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
package app.fedilab.android.client.Entities;
|
||||
|
||||
import app.fedilab.android.client.API;
|
||||
|
||||
/* Copyright 2019 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
|
@ -16,14 +19,8 @@ package app.fedilab.android.client.Entities;
|
|||
public class AdminAction {
|
||||
|
||||
|
||||
public enum adminActionType{
|
||||
NONE,
|
||||
DISABLE,
|
||||
SILENCE,
|
||||
SUSPEND
|
||||
}
|
||||
|
||||
private adminActionType type;
|
||||
private API.adminAction type;
|
||||
private boolean send_email_notification;
|
||||
private String text;
|
||||
private boolean unresolved;
|
||||
|
@ -96,13 +93,6 @@ public class AdminAction {
|
|||
this.unresolved = unresolved;
|
||||
}
|
||||
|
||||
public adminActionType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(adminActionType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public boolean isSend_email_notification() {
|
||||
return send_email_notification;
|
||||
|
@ -121,6 +111,11 @@ public class AdminAction {
|
|||
}
|
||||
|
||||
|
||||
public API.adminAction getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
public void setType(API.adminAction type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -209,6 +209,19 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/stats_bottom_barrier" />
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/silence"
|
||||
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/silence"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/disable"
|
||||
app:layout_constraintTop_toBottomOf="@id/stats_bottom_barrier" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/disable"
|
||||
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||
|
@ -221,8 +234,9 @@
|
|||
app:layout_constraintStart_toEndOf="@id/warn"
|
||||
app:layout_constraintTop_toBottomOf="@id/stats_bottom_barrier" />
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/silence"
|
||||
android:id="@+id/suspend"
|
||||
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
|
@ -230,7 +244,7 @@
|
|||
android:text="@string/silence"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/disable"
|
||||
app:layout_constraintStart_toEndOf="@id/suspend"
|
||||
app:layout_constraintTop_toBottomOf="@id/stats_bottom_barrier" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
|
|
|
@ -1059,6 +1059,17 @@
|
|||
<string name="unconfirmed">Not confirmed</string>
|
||||
<string name="list_reported_statuses">Reported statuses</string>
|
||||
<string name="account">Account</string>
|
||||
<string name="unsilence">Undo silence</string>
|
||||
<string name="undisable">Undo disable</string>
|
||||
<string name="suspend">Suspend</string>
|
||||
<string name="unsuspend">Undo suspend</string>
|
||||
<string name="account_silenced">The account is silenced!</string>
|
||||
<string name="account_unsilenced">The account is no longer silenced!</string>
|
||||
<string name="account_suspended">The account is suspended!</string>
|
||||
<string name="account_unsuspended">The account is no longer suspended!</string>
|
||||
<string name="account_disabled">The account is disabled!</string>
|
||||
<string name="account_undisabled">The account is no longer disabled!</string>
|
||||
<string name="account_warned">The account has been warned!</string>
|
||||
<plurals name="number_of_vote">
|
||||
<item quantity="one">%d vote</item>
|
||||
<item quantity="other">%d votes</item>
|
||||
|
|
Loading…
Reference in New Issue