mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-30 13:35:18 +00:00
Implement copy public key action for group chats
This commit is contained in:
parent
7cf543bdf8
commit
7cc7f907fe
@ -16,6 +16,11 @@
|
|||||||
android:icon="?menu_copy_icon"
|
android:icon="?menu_copy_icon"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
|
<item android:title="@string/activity_conversation_copy_public_key_button_title"
|
||||||
|
android:id="@+id/menu_context_copy_public_key"
|
||||||
|
android:icon="@drawable/ic_profile_default"
|
||||||
|
app:showAsAction="always" />
|
||||||
|
|
||||||
<!-- <item android:title="@string/conversation_context__menu_forward_message"
|
<!-- <item android:title="@string/conversation_context__menu_forward_message"
|
||||||
android:id="@+id/menu_context_forward"
|
android:id="@+id/menu_context_forward"
|
||||||
android:icon="?menu_forward_icon"
|
android:icon="?menu_forward_icon"
|
||||||
|
@ -1613,5 +1613,7 @@
|
|||||||
<!-- Scan QR code fragment -->
|
<!-- Scan QR code fragment -->
|
||||||
<string name="fragment_scan_qr_code_title">Scan QR Code</string>
|
<string name="fragment_scan_qr_code_title">Scan QR Code</string>
|
||||||
<string name="fragment_scan_qr_code_explanation">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\".</string>
|
<string name="fragment_scan_qr_code_explanation">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\".</string>
|
||||||
|
<!-- Conversation activity -->
|
||||||
|
<string name="activity_conversation_copy_public_key_button_title">Copy public key</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -410,13 +410,15 @@ public class ConversationFragment extends Fragment
|
|||||||
if (isGroupChat) {
|
if (isGroupChat) {
|
||||||
boolean isLokiPublicChat = recipient.getName() != null && recipient.getName().equals("Loki Public Chat");
|
boolean isLokiPublicChat = recipient.getName() != null && recipient.getName().equals("Loki Public Chat");
|
||||||
int selectedMessageCount = messageRecords.size();
|
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);
|
menu.findItem(R.id.menu_context_reply).setVisible(isLokiPublicChat && selectedMessageCount == 1);
|
||||||
LokiAPIDatabase lokiAPIDatabase = DatabaseFactory.getLokiAPIDatabase(getContext());
|
LokiAPIDatabase lokiAPIDatabase = DatabaseFactory.getLokiAPIDatabase(getContext());
|
||||||
boolean isSentByUser = ((MessageRecord)messageRecords.toArray()[0]).isOutgoing();
|
|
||||||
boolean userCanModerate = lokiAPIDatabase.isModerator(LokiGroupChatAPI.getPublicChatServerID(), LokiGroupChatAPI.getPublicChatServer());
|
boolean userCanModerate = lokiAPIDatabase.isModerator(LokiGroupChatAPI.getPublicChatServerID(), LokiGroupChatAPI.getPublicChatServer());
|
||||||
boolean isDeleteOptionVisible = isLokiPublicChat && selectedMessageCount == 1 && (isSentByUser || userCanModerate);
|
boolean isDeleteOptionVisible = isLokiPublicChat && selectedMessageCount == 1 && (isSentByUser || userCanModerate);
|
||||||
menu.findItem(R.id.menu_context_delete_message).setVisible(isDeleteOptionVisible);
|
menu.findItem(R.id.menu_context_delete_message).setVisible(isDeleteOptionVisible);
|
||||||
} else {
|
} else {
|
||||||
|
menu.findItem(R.id.menu_context_copy_public_key).setVisible(false);
|
||||||
menu.findItem(R.id.menu_context_delete_message).setVisible(true);
|
menu.findItem(R.id.menu_context_delete_message).setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -493,6 +495,11 @@ public class ConversationFragment extends Fragment
|
|||||||
clipboard.setText(result);
|
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<MessageRecord> messageRecords) {
|
private void handleDeleteMessages(final Set<MessageRecord> messageRecords) {
|
||||||
int messagesCount = messageRecords.size();
|
int messagesCount = messageRecords.size();
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
@ -1121,6 +1128,10 @@ public class ConversationFragment extends Fragment
|
|||||||
handleCopyMessage(getListAdapter().getSelectedItems());
|
handleCopyMessage(getListAdapter().getSelectedItems());
|
||||||
actionMode.finish();
|
actionMode.finish();
|
||||||
return true;
|
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:
|
case R.id.menu_context_delete_message:
|
||||||
handleDeleteMessages(getListAdapter().getSelectedItems());
|
handleDeleteMessages(getListAdapter().getSelectedItems());
|
||||||
actionMode.finish();
|
actionMode.finish();
|
||||||
|
Loading…
Reference in New Issue
Block a user