offer to copy error message to clipboard. fixes #3277

This commit is contained in:
Daniel Gultsch 2018-11-18 11:45:24 +01:00
parent 6715a4c353
commit 300006a529
2 changed files with 11 additions and 4 deletions

View File

@ -1117,9 +1117,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
MenuItem cancelTransmission = menu.findItem(R.id.cancel_transmission); MenuItem cancelTransmission = menu.findItem(R.id.cancel_transmission);
MenuItem deleteFile = menu.findItem(R.id.delete_file); MenuItem deleteFile = menu.findItem(R.id.delete_file);
MenuItem showErrorMessage = menu.findItem(R.id.show_error_message); MenuItem showErrorMessage = menu.findItem(R.id.show_error_message);
final boolean showError = m.getStatus() == Message.STATUS_SEND_FAILED && m.getErrorMessage() != null && !Message.ERROR_MESSAGE_CANCELLED.equals(m.getErrorMessage());
if (!m.isFileOrImage() && !encrypted && !m.isGeoUri() && !m.treatAsDownloadable()) { if (!m.isFileOrImage() && !encrypted && !m.isGeoUri() && !m.treatAsDownloadable()) {
copyMessage.setVisible(true); copyMessage.setVisible(true);
quoteMessage.setVisible(MessageUtils.prepareQuote(m).length() > 0); quoteMessage.setVisible(!showError && MessageUtils.prepareQuote(m).length() > 0);
String body = m.getMergedBody().toString(); String body = m.getMergedBody().toString();
if (ShareUtil.containsXmppUri(body)) { if (ShareUtil.containsXmppUri(body)) {
copyLink.setTitle(R.string.copy_jabber_id); copyLink.setTitle(R.string.copy_jabber_id);
@ -1131,7 +1132,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
if (m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { if (m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) {
retryDecryption.setVisible(true); retryDecryption.setVisible(true);
} }
if (relevantForCorrection.getType() == Message.TYPE_TEXT if (!showError
&& relevantForCorrection.getType() == Message.TYPE_TEXT
&& relevantForCorrection.isLastCorrectableMessage() && relevantForCorrection.isLastCorrectableMessage()
&& m.getConversation() instanceof Conversation && m.getConversation() instanceof Conversation
&& (((Conversation) m.getConversation()).getMucOptions().nonanonymous() || m.getConversation().getMode() == Conversation.MODE_SINGLE)) { && (((Conversation) m.getConversation()).getMucOptions().nonanonymous() || m.getConversation().getMode() == Conversation.MODE_SINGLE)) {
@ -1167,7 +1169,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m))); deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m)));
} }
} }
if (m.getStatus() == Message.STATUS_SEND_FAILED && m.getErrorMessage() != null && !Message.ERROR_MESSAGE_CANCELLED.equals(m.getErrorMessage())) { if (showError) {
showErrorMessage.setVisible(true); showErrorMessage.setVisible(true);
} }
} }
@ -1656,6 +1658,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.error_message); builder.setTitle(R.string.error_message);
builder.setMessage(message.getErrorMessage()); builder.setMessage(message.getErrorMessage());
builder.setNegativeButton(R.string.copy_to_clipboard, (dialog, which) -> {
activity.copyTextToClipboard(message.getErrorMessage(),R.string.error_message);
Toast.makeText(activity,R.string.error_message_copied_to_clipboard, Toast.LENGTH_SHORT).show();
});
builder.setPositiveButton(R.string.confirm, null); builder.setPositiveButton(R.string.confirm, null);
builder.create().show(); builder.create().show();
} }

View File

@ -300,7 +300,8 @@
<string name="send_again">Send again</string> <string name="send_again">Send again</string>
<string name="file_url">File URL</string> <string name="file_url">File URL</string>
<string name="url_copied_to_clipboard">Copied URL to clipboard</string> <string name="url_copied_to_clipboard">Copied URL to clipboard</string>
<string name="jabber_id_copied_to_clipboard">Copied Jabberd ID to clipboard</string> <string name="jabber_id_copied_to_clipboard">Copied Jabber ID ID to clipboard</string>
<string name="error_message_copied_to_clipboard">Copied error message to clipboard</string>
<string name="web_address">web address</string> <string name="web_address">web address</string>
<string name="scan_qr_code">Scan 2D Barcode</string> <string name="scan_qr_code">Scan 2D Barcode</string>
<string name="show_qr_code">Show 2D Barcode</string> <string name="show_qr_code">Show 2D Barcode</string>