diff --git a/res/menu/conversation_context.xml b/res/menu/conversation_context.xml
index 76c7318a9d..6f30718145 100644
--- a/res/menu/conversation_context.xml
+++ b/res/menu/conversation_context.xml
@@ -16,6 +16,11 @@
android:icon="?menu_copy_icon"
app:showAsAction="always" />
+
+
Scan QR Code
Scan the QR code of the person you\'d like to securely message. They can find their QR code by going into Loki Messenger\'s in-app settings and clicking \"Show QR Code\".
+
+ Copy public key
diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
index 074ac80b89..88c13cbdcb 100644
--- a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
@@ -410,13 +410,15 @@ public class ConversationFragment extends Fragment
if (isGroupChat) {
boolean isLokiPublicChat = recipient.getName() != null && recipient.getName().equals("Loki Public Chat");
int selectedMessageCount = messageRecords.size();
+ boolean isSentByUser = ((MessageRecord)messageRecords.toArray()[0]).isOutgoing();
+ menu.findItem(R.id.menu_context_copy_public_key).setVisible(isLokiPublicChat && selectedMessageCount == 1 && !isSentByUser);
menu.findItem(R.id.menu_context_reply).setVisible(isLokiPublicChat && selectedMessageCount == 1);
LokiAPIDatabase lokiAPIDatabase = DatabaseFactory.getLokiAPIDatabase(getContext());
- boolean isSentByUser = ((MessageRecord)messageRecords.toArray()[0]).isOutgoing();
boolean userCanModerate = lokiAPIDatabase.isModerator(LokiGroupChatAPI.getPublicChatServerID(), LokiGroupChatAPI.getPublicChatServer());
boolean isDeleteOptionVisible = isLokiPublicChat && selectedMessageCount == 1 && (isSentByUser || userCanModerate);
menu.findItem(R.id.menu_context_delete_message).setVisible(isDeleteOptionVisible);
} else {
+ menu.findItem(R.id.menu_context_copy_public_key).setVisible(false);
menu.findItem(R.id.menu_context_delete_message).setVisible(true);
}
}
@@ -493,6 +495,11 @@ public class ConversationFragment extends Fragment
clipboard.setText(result);
}
+ private void handleCopyPublicKey(MessageRecord messageRecord) {
+ ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
+ clipboard.setText(messageRecord.getRecipient().getAddress().toString());
+ }
+
private void handleDeleteMessages(final Set messageRecords) {
int messagesCount = messageRecords.size();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
@@ -1121,6 +1128,10 @@ public class ConversationFragment extends Fragment
handleCopyMessage(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
+ case R.id.menu_context_copy_public_key:
+ handleCopyPublicKey((MessageRecord) getListAdapter().getSelectedItems().toArray()[0]);
+ actionMode.finish();
+ return true;
case R.id.menu_context_delete_message:
handleDeleteMessages(getListAdapter().getSelectedItems());
actionMode.finish();