Implement copy public key action for group chats

pull/50/head
Niels Andriesse 6 years ago
parent 295bc57a99
commit 052c9176c2

@ -8,6 +8,7 @@ import Foundation
protocol MessageActionsDelegate: class { protocol MessageActionsDelegate: class {
func messageActionsShowDetailsForItem(_ conversationViewItem: ConversationViewItem) func messageActionsShowDetailsForItem(_ conversationViewItem: ConversationViewItem)
func messageActionsReplyToItem(_ conversationViewItem: ConversationViewItem) func messageActionsReplyToItem(_ conversationViewItem: ConversationViewItem)
func copyPublicKey(for conversationViewItem: ConversationViewItem)
} }
struct MessageActionBuilder { struct MessageActionBuilder {
@ -30,6 +31,14 @@ struct MessageActionBuilder {
}) })
} }
static func copyPublicKey(conversationViewItem: ConversationViewItem, delegate: MessageActionsDelegate) -> MenuAction {
return MenuAction(image: #imageLiteral(resourceName: "table_ic_add_to_existing_contact"),
title: NSLocalizedString("Copy Public Key", comment: ""),
subtitle: nil,
block: { [weak delegate] _ in delegate?.copyPublicKey(for: conversationViewItem) }
)
}
static func showDetails(conversationViewItem: ConversationViewItem, delegate: MessageActionsDelegate) -> MenuAction { static func showDetails(conversationViewItem: ConversationViewItem, delegate: MessageActionsDelegate) -> MenuAction {
return MenuAction(image: #imageLiteral(resourceName: "ic_info"), return MenuAction(image: #imageLiteral(resourceName: "ic_info"),
title: NSLocalizedString("MESSAGE_ACTION_DETAILS", comment: "Action sheet button title"), title: NSLocalizedString("MESSAGE_ACTION_DETAILS", comment: "Action sheet button title"),
@ -87,6 +96,11 @@ class ConversationViewItemActions: NSObject {
actions.append(copyTextAction) actions.append(copyTextAction)
} }
if isGroup && !isRSSFeed && conversationViewItem.interaction is TSIncomingMessage {
let copyPublicKeyAction = MessageActionBuilder.copyPublicKey(conversationViewItem: conversationViewItem, delegate: delegate)
actions.append(copyPublicKeyAction)
}
if !isGroup || conversationViewItem.userCanDeleteGroupMessage { if !isGroup || conversationViewItem.userCanDeleteGroupMessage {
let deleteAction = MessageActionBuilder.deleteMessage(conversationViewItem: conversationViewItem, delegate: delegate) let deleteAction = MessageActionBuilder.deleteMessage(conversationViewItem: conversationViewItem, delegate: delegate)
actions.append(deleteAction) actions.append(deleteAction)
@ -137,6 +151,12 @@ class ConversationViewItemActions: NSObject {
} }
let isGroup = conversationViewItem.isGroupThread; let isGroup = conversationViewItem.isGroupThread;
let isRSSFeed = conversationViewItem.isRSSFeed;
if isGroup && !isRSSFeed && conversationViewItem.interaction is TSIncomingMessage {
let copyPublicKeyAction = MessageActionBuilder.copyPublicKey(conversationViewItem: conversationViewItem, delegate: delegate)
actions.append(copyPublicKeyAction)
}
if !isGroup || conversationViewItem.userCanDeleteGroupMessage { if !isGroup || conversationViewItem.userCanDeleteGroupMessage {
let deleteAction = MessageActionBuilder.deleteMessage(conversationViewItem: conversationViewItem, delegate: delegate) let deleteAction = MessageActionBuilder.deleteMessage(conversationViewItem: conversationViewItem, delegate: delegate)

@ -2037,6 +2037,11 @@ typedef enum : NSUInteger {
[self populateReplyForViewItem:conversationViewItem]; [self populateReplyForViewItem:conversationViewItem];
} }
- (void)copyPublicKeyFor:(id<ConversationViewItem>)conversationViewItem
{
UIPasteboard.generalPasteboard.string = ((TSIncomingMessage *)conversationViewItem.interaction).authorId;
}
#pragma mark - MessageDetailViewDelegate #pragma mark - MessageDetailViewDelegate
- (void)detailViewMessageWasDeleted:(MessageDetailViewController *)messageDetailViewController - (void)detailViewMessageWasDeleted:(MessageDetailViewController *)messageDetailViewController

@ -2620,3 +2620,4 @@
"Can't Start Conversation" = "Can't Start Conversation"; "Can't Start Conversation" = "Can't Start Conversation";
"Please enter the public key of the person you'd like to message." = "Please enter the public key of the person you'd like to message."; "Please enter the public key of the person you'd like to message." = "Please enter the public key of the person you'd like to message.";
"Loki Messenger is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't provide full privacy and shouldn't be used to transmit sensitive information." = "Loki Messenger is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't provide full privacy and shouldn't be used to transmit sensitive information."; "Loki Messenger is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't provide full privacy and shouldn't be used to transmit sensitive information." = "Loki Messenger is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't provide full privacy and shouldn't be used to transmit sensitive information.";
"Copy Public Key" = "Copy Public Key";

Loading…
Cancel
Save