diff --git a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java index b9bf22986..78ea69ff6 100644 --- a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java @@ -41,6 +41,8 @@ import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; + +import android.text.Html; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; @@ -50,6 +52,7 @@ import android.text.style.UnderlineSpan; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; @@ -1026,6 +1029,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt }if( isOwner) { popup.getMenu().findItem(R.id.action_block).setVisible(false); + popup.getMenu().findItem(R.id.action_report).setVisible(false); popup.getMenu().findItem(R.id.action_mute).setVisible(false); popup.getMenu().findItem(R.id.action_mention).setVisible(false); popup.getMenu().findItem(R.id.action_follow_instance).setVisible(false); @@ -1223,6 +1227,36 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt doActionAccount = API.StatusAction.MUTE; } break; + case R.id.action_report: + builderInner = new AlertDialog.Builder(ShowAccountActivity.this, style); + builderInner.setTitle(R.string.report_account); + //Text for report + EditText input = new EditText(ShowAccountActivity.this); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT); + input.setLayoutParams(lp); + builderInner.setView(input); + doActionAccount = API.StatusAction.REPORT; + builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int which) { + dialog.dismiss(); + } + }); + builderInner.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int which) { + String targetedId; + String comment = null; + if (input.getText() != null) + comment = input.getText().toString(); + new PostActionAsyncTask(getApplicationContext(), doActionAccount, account.getId(), null, comment, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + dialog.dismiss(); + } + }); + builderInner.show(); + return true; case R.id.action_block: builderInner = new AlertDialog.Builder(ShowAccountActivity.this, style); builderInner.setTitle(stringArrayConf[1]); diff --git a/app/src/main/java/app/fedilab/android/asynctasks/PostActionAsyncTask.java b/app/src/main/java/app/fedilab/android/asynctasks/PostActionAsyncTask.java index 8975a5251..3f4cb538b 100644 --- a/app/src/main/java/app/fedilab/android/asynctasks/PostActionAsyncTask.java +++ b/app/src/main/java/app/fedilab/android/asynctasks/PostActionAsyncTask.java @@ -161,8 +161,13 @@ public class PostActionAsyncTask extends AsyncTask { } } } else { - if (apiAction == API.StatusAction.REPORT) - statusCode = api.reportAction(status, comment); + if (apiAction == API.StatusAction.REPORT) { + if( status != null ) { + statusCode = api.reportAction(status, comment); + }else{ + statusCode = api.reportAction(targetedId, comment); + } + } else if (apiAction == API.StatusAction.CREATESTATUS) statusCode = api.statusAction(status); else if(apiAction == API.StatusAction.UPDATESERVERSCHEDULE) { diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java index 6ab3ad0e5..756e7af64 100644 --- a/app/src/main/java/app/fedilab/android/client/API.java +++ b/app/src/main/java/app/fedilab/android/client/API.java @@ -2623,6 +2623,16 @@ public class API { return postAction(API.StatusAction.REPORT, null, status, comment); } + /** + * Makes the post action + * @param targetedId targeted account + * @param comment String comment for the report + * @return in status code - Should be equal to 200 when action is done + */ + public int reportAction(String targetedId, String comment){ + return postAction(API.StatusAction.REPORT, targetedId, null, comment); + } + public int statusAction(Status status){ return postAction(StatusAction.CREATESTATUS, null, status, null); } @@ -2720,9 +2730,14 @@ public class API { case REPORT: action = "/reports"; params = new HashMap<>(); - params.put("account_id", status.getAccount().getId()); + if( status != null ) + params.put("account_id", status.getAccount().getId()); + else + params.put("account_id", targetedId); params.put("comment", comment); - params.put("status_ids[]", status.getId()); + if( status != null) { + params.put("status_ids[]", status.getId()); + } break; case CREATESTATUS: params = new HashMap<>(); diff --git a/app/src/main/res/menu/main_showaccount.xml b/app/src/main/res/menu/main_showaccount.xml index 68977a29e..f84709790 100644 --- a/app/src/main/res/menu/main_showaccount.xml +++ b/app/src/main/res/menu/main_showaccount.xml @@ -51,6 +51,11 @@ android:title="@string/follow_instance" android:icon="@drawable/ic_public_world" app:showAsAction="ifRoom" /> + Backup Auto backup statuses This option is per account. It will launch a service that will automatically store your statuses locally in the database. That allows to get statistics and charts + Report account %d vote %d votes