diff --git a/res/menu/profile_context.xml b/res/menu/profile_context.xml index 8c3b3ec5e..408771636 100644 --- a/res/menu/profile_context.xml +++ b/res/menu/profile_context.xml @@ -27,4 +27,8 @@ + + diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index ab1e47415..96db5476d 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -478,20 +478,6 @@ public class ConversationFragment extends MessageSelectorFragment } } - private void handleResendMessage(final Set dcMsgsSet) { - int[] ids = DcMsg.msgSetToIds(dcMsgsSet); - if (dcContext.resendMsgs(ids)) { - actionMode.finish(); - Toast.makeText(getContext(), R.string.sending, Toast.LENGTH_SHORT).show(); - } else { - new AlertDialog.Builder(getContext()) - .setMessage(dcContext.getLastError()) - .setCancelable(false) - .setPositiveButton(android.R.string.ok, null) - .show(); - } - } - private void reloadList() { reloadList(false); } diff --git a/src/org/thoughtcrime/securesms/MessageSelectorFragment.java b/src/org/thoughtcrime/securesms/MessageSelectorFragment.java index e3ce36c9c..3451ceb05 100644 --- a/src/org/thoughtcrime/securesms/MessageSelectorFragment.java +++ b/src/org/thoughtcrime/securesms/MessageSelectorFragment.java @@ -7,6 +7,7 @@ import android.os.AsyncTask; import android.view.Menu; import android.view.View; import android.widget.TextView; +import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.view.ActionMode; @@ -115,4 +116,18 @@ public abstract class MessageSelectorFragment protected void handleShare(final DcMsg dcMsg) { DcHelper.openForViewOrShare(getContext(), dcMsg.getId(), Intent.ACTION_SEND); } + + protected void handleResendMessage(final Set dcMsgsSet) { + int[] ids = DcMsg.msgSetToIds(dcMsgsSet); + if (dcContext.resendMsgs(ids)) { + actionMode.finish(); + Toast.makeText(getContext(), R.string.sending, Toast.LENGTH_SHORT).show(); + } else { + new AlertDialog.Builder(getContext()) + .setMessage(dcContext.getLastError()) + .setCancelable(false) + .setPositiveButton(android.R.string.ok, null) + .show(); + } + } } diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java index d9c405061..12eb90ab4 100644 --- a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java @@ -204,6 +204,15 @@ public class ProfileDocumentsFragment menu.findItem(R.id.show_in_chat).setVisible(singleSelection); menu.findItem(R.id.share).setVisible(singleSelection); + boolean canResend = true; + for (DcMsg messageRecord : messageRecords) { + if (!messageRecord.isOutgoing()) { + canResend = false; + break; + } + } + menu.findItem(R.id.menu_resend).setVisible(canResend); + boolean webxdcApp = singleSelection && messageRecords.iterator().next().getType() == DcMsg.DC_MSG_WEBXDC; menu.findItem(R.id.menu_add_to_home_screen).setVisible(webxdcApp); } @@ -259,6 +268,9 @@ public class ProfileDocumentsFragment case R.id.save: handleSaveAttachment(getListAdapter().getSelectedMedia()); return true; + case R.id.menu_resend: + handleResendMessage(getListAdapter().getSelectedMedia()); + return true; } return false; } diff --git a/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java b/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java index cf4c15884..8118f572b 100644 --- a/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java @@ -197,6 +197,15 @@ public class ProfileGalleryFragment menu.findItem(R.id.details).setVisible(singleSelection); menu.findItem(R.id.show_in_chat).setVisible(singleSelection); menu.findItem(R.id.share).setVisible(singleSelection); + + boolean canResend = true; + for (DcMsg messageRecord : messageRecords) { + if (!messageRecord.isOutgoing()) { + canResend = false; + break; + } + } + menu.findItem(R.id.menu_resend).setVisible(canResend); } private ProfileGalleryAdapter getListAdapter() { @@ -246,6 +255,9 @@ public class ProfileGalleryFragment case R.id.save: handleSaveAttachment(getListAdapter().getSelectedMedia()); return true; + case R.id.menu_resend: + handleResendMessage(getListAdapter().getSelectedMedia()); + return true; } return false; } diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java index 43b726f3e..553cfab71 100644 --- a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java +++ b/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java @@ -271,6 +271,7 @@ public class ProfileSettingsFragment extends Fragment menu.findItem(R.id.show_in_chat).setVisible(false); menu.findItem(R.id.save).setVisible(false); menu.findItem(R.id.share).setVisible(false); + menu.findItem(R.id.menu_resend).setVisible(false); mode.setTitle("1"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {