diff --git a/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java b/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java index 0b0d8fde49..23ca936b1f 100644 --- a/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java +++ b/app/src/main/java/fr/free/nrw/commons/delete/DeleteHelper.java @@ -110,7 +110,8 @@ private boolean delete(Media media, String reason) { mwApi.appendEdit(editToken, logPageString + "\n", "Commons:Deletion_requests/" + date, summary); mwApi.appendEdit(editToken, userPageString + "\n", - "User_Talk:" + sessionManager.getCurrentAccount().name, summary); + "User_Talk:" + media.getCreator(), summary); + } catch (Exception e) { Timber.e(e); return false; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 72789e1fcc..866c1c5416 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -44,6 +44,7 @@ import fr.free.nrw.commons.MediaDataExtractor; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; +import fr.free.nrw.commons.auth.AccountUtil; import fr.free.nrw.commons.category.CategoryDetailsActivity; import fr.free.nrw.commons.contributions.ContributionsFragment; import fr.free.nrw.commons.delete.DeleteHelper; @@ -366,66 +367,68 @@ public void onCopyWikicodeClicked(){ } @OnClick(R.id.nominateDeletion) - public void onDeleteButtonClicked(){ - final ArrayAdapter languageAdapter = new ArrayAdapter<>(getActivity(), - R.layout.simple_spinner_dropdown_list, reasonList); - final Spinner spinner = new Spinner(getActivity()); - spinner.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); - spinner.setAdapter(languageAdapter); - spinner.setGravity(17); - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setView(spinner); - builder.setTitle(R.string.nominate_delete) - .setPositiveButton(R.string.about_translate_proceed, (dialog, which) -> onDeleteClicked(spinner)); - builder.setNegativeButton(R.string.about_translate_cancel, (dialog, which) -> dialog.dismiss()); - AlertDialog dialog = builder.create(); - dialog.show(); - if(isDeleted) { - dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + public void onDeleteButtonClicked() { + if (media.getCreator().equals(AccountUtil.getUserName(getContext()))) { + final ArrayAdapter languageAdapter = new ArrayAdapter<>(getActivity(), + R.layout.simple_spinner_dropdown_list, reasonList); + final Spinner spinner = new Spinner(getActivity()); + spinner.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); + spinner.setAdapter(languageAdapter); + spinner.setGravity(17); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setView(spinner); + builder.setTitle(R.string.nominate_delete) + .setPositiveButton(R.string.about_translate_proceed, (dialog, which) -> onDeleteClicked(spinner)); + builder.setNegativeButton(R.string.about_translate_cancel, (dialog, which) -> dialog.dismiss()); + AlertDialog dialog = builder.create(); + dialog.show(); + if (isDeleted) { + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } } //Reviewer correct me if i have misunderstood something over here //But how does this if (delete.getVisibility() == View.VISIBLE) { // enableDeleteButton(true); makes sense ? - AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); - alert.setMessage("Why should this fileckathon-2018 be deleted?"); - final EditText input = new EditText(getActivity()); - alert.setView(input); - input.requestFocus(); - alert.setPositiveButton(R.string.ok, (dialog1, whichButton) -> { - String reason = input.getText().toString(); - - deleteHelper.makeDeletion(getContext(), media, reason); - enableDeleteButton(false); - }); - alert.setNegativeButton(R.string.cancel, (dialog12, whichButton) -> { - }); - AlertDialog d = alert.create(); - input.addTextChangedListener(new TextWatcher() { - private void handleText() { - final Button okButton = d.getButton(AlertDialog.BUTTON_POSITIVE); - if (input.getText().length() == 0) { - okButton.setEnabled(false); - } else { - okButton.setEnabled(true); + else { + AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); + alert.setMessage("Why should "+ media.getDisplayTitle() +" be deleted?"); + final EditText input = new EditText(getActivity()); + alert.setView(input); + input.requestFocus(); + alert.setPositiveButton(R.string.ok, (dialog1, whichButton) -> { + String reason = input.getText().toString(); + onDeleteClickedOthers(reason); + }); + alert.setNegativeButton(R.string.cancel, (dialog12, whichButton) -> { + }); + AlertDialog d = alert.create(); + input.addTextChangedListener(new TextWatcher() { + private void handleText() { + final Button okButton = d.getButton(AlertDialog.BUTTON_POSITIVE); + if (input.getText().length() == 0) { + okButton.setEnabled(false); + } else { + okButton.setEnabled(true); + } } - } - @Override - public void afterTextChanged(Editable arg0) { - handleText(); - } + @Override + public void afterTextChanged(Editable arg0) { + handleText(); + } - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - }); - d.show(); - d.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + }); + d.show(); + d.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } } @SuppressLint("CheckResult") @@ -443,6 +446,20 @@ private void onDeleteClicked(Spinner spinner) { } })); + } + private void onDeleteClickedOthers(String reason){ + Single resultSingles = reasonBuilder.getReason(media, reason) + .flatMap(reasonString -> deleteHelper.makeDeletion(getContext(), media, reason)); + compositeDisposable.add(resultSingles + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(s -> { + if (getActivity() != null) { + isDeleted = true; + enableDeleteButton(false); + } + })); + } @OnClick(R.id.seeMore)