Some improvement for Pleroma moderation

This commit is contained in:
tom79 2019-06-30 17:31:54 +02:00
parent 0e68138edc
commit cc4442f180
3 changed files with 81 additions and 42 deletions

View File

@ -337,26 +337,15 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(comment.getWindowToken(), 0);
}
if( accountAdmin.getRole() == null) {
return;
}
switch (accountAdmin.getRole()) {
case "user":
permissions.setText(getString(R.string.user));
break;
case "moderator":
permissions.setText(getString(R.string.moderator));
break;
case "admin":
permissions.setText(getString(R.string.administrator));
break;
}
username.setText(String.format("@%s", accountAdmin.getAccount().getAcct()));
email.setText(accountAdmin.getEmail());
email_status.setText(accountAdmin.isConfirmed()?getString(R.string.confirmed):getString(R.string.unconfirmed));
if( accountAdmin.getEmail() == null || accountAdmin.getEmail().trim().equals("")){
email.setVisibility(View.GONE);
email_label.setVisibility(View.GONE);
@ -398,27 +387,34 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
suspend.setVisibility(View.VISIBLE);
comment_label.setVisibility(View.GONE);
}
if( accountAdmin.getRole().equals("admin") || accountAdmin.getRole().equals("moderator")){
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);
comment_label.setVisibility(View.GONE);
}
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){
email_user.setVisibility(View.GONE);
email_user.setChecked(false);
comment.setVisibility(View.GONE);
comment_label.setVisibility(View.GONE);
warn.setVisibility(View.GONE);
silence.setVisibility(View.GONE);
if( accountAdmin.getRole() != null) {
switch (accountAdmin.getRole()) {
case "user":
permissions.setText(getString(R.string.user));
break;
case "moderator":
permissions.setText(getString(R.string.moderator));
break;
case "admin":
permissions.setText(getString(R.string.administrator));
break;
}
if( accountAdmin.getRole().equals("admin") || accountAdmin.getRole().equals("moderator")){
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);
comment_label.setVisibility(View.GONE);
}
email_status.setText(accountAdmin.isConfirmed()?getString(R.string.confirmed):getString(R.string.unconfirmed));
}
joined.setText(Helper.dateToString(accountAdmin.getCreated_at()));
if( report != null){
assign.setVisibility(View.VISIBLE);
status.setVisibility(View.VISIBLE);
@ -434,7 +430,6 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
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{
@ -452,6 +447,15 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction
assign.setVisibility(View.GONE);
status.setVisibility(View.GONE);
}
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){
email_user.setVisibility(View.GONE);
email_user.setChecked(false);
comment.setVisibility(View.INVISIBLE);
comment_label.setVisibility(View.GONE);
warn.setVisibility(View.GONE);
silence.setVisibility(View.GONE);
assign.setVisibility(View.GONE);
}
}
}

View File

@ -20,6 +20,7 @@ import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.gson.JsonArray;
@ -278,7 +279,10 @@ public class API {
params.put("resolved", "present");
}
}else if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
if( !adminAction.isUnresolved()) {
if( adminAction.isUnresolved()) {
params = new HashMap<>();
params.put("state", "open");
}else{
params = new HashMap<>();
params.put("state", "resolved");
}
@ -392,10 +396,24 @@ public class API {
endpoint = String.format("/admin/reports/%s/unassign", id);
break;
case REOPEN:
endpoint = String.format("/admin/reports/%s/reopen", id);
if(MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) {
endpoint = String.format("/admin/reports/%s/reopen", id);
}else if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
endpoint = String.format("/admin/reports/%s", id);
params = new HashMap<>();
params.put("state","open");
http_action = "PUT";
}
break;
case RESOLVE:
endpoint = String.format("/admin/reports/%s/resolve", id);
if(MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) {
endpoint = String.format("/admin/reports/%s/resolve", id);
}else if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
endpoint = String.format("/admin/reports/%s", id);
params = new HashMap<>();
params.put("state","resolved");
http_action = "PUT";
}
break;
case NONE:
params = new HashMap<>();
@ -464,6 +482,9 @@ public class API {
case "PATCH":
response = new HttpsConnection(context, this.instance).patch(url_action, 60, params, null, null, null, null, prefKeyOauthTokenT);
break;
case "PUT":
response = new HttpsConnection(context, this.instance).put(url_action, 60, params, prefKeyOauthTokenT);
break;
case "DELETE":
new HttpsConnection(context, this.instance).delete(url_action, 60, params, prefKeyOauthTokenT);
break;
@ -5217,7 +5238,7 @@ public class API {
if( !resobj.isNull("action_taken")) {
report.setAction_taken(resobj.getBoolean("action_taken"));
}else if( !resobj.isNull("state")) {
report.setAction_taken(!resobj.has("open"));
report.setAction_taken(!resobj.getString("state").equals("open"));
}
if( !resobj.isNull("comment")) {
report.setComment(resobj.getString("comment"));
@ -5491,8 +5512,17 @@ public class API {
if( resobj.has("source")){
JSONObject source = resobj.getJSONObject("source");
try{
account.setPrivacy(source.getString("privacy"));
account.setSensitive(source.getBoolean("sensitive"));
if( source.has("privacy")) {
account.setPrivacy(source.getString("privacy"));
}else{
account.setPrivacy("public");
}
if( source.has("sensitive")) {
account.setSensitive(source.getBoolean("sensitive"));
}else{
account.setSensitive(false);
}
}catch (Exception e){
account.setPrivacy("public");
account.setSensitive(false);

View File

@ -2920,7 +2920,7 @@ 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){
if( MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.MASTODON && MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){
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);
@ -2962,9 +2962,14 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
return true;
case R.id.action_admin:
String account_id = status.getReblog() != null ? status.getReblog().getAccount().getId() : status.getAccount().getId();
String acct = status.getReblog() != null ? status.getReblog().getAccount().getAcct() : status.getAccount().getAcct();
Intent intent = new Intent(context, AccountReportActivity.class);
Bundle b = new Bundle();
b.putString("account_id", account_id);
if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) {
b.putString("account_id", account_id);
}else if( social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){
b.putString("account_id", acct);
}
intent.putExtras(b);
context.startActivity(intent);
return true;