From e2715d1ee9c0e39048c076e1ee10e9e87a950067 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 7 May 2021 14:08:52 +1000 Subject: [PATCH] Implement sending logic --- .../OWSConversationSettingsViewController.m | 20 +++++++++++++++++-- .../VisibleMessage+OpenGroupInvitation.swift | 3 ++- .../Open Groups/V2/OpenGroupV2.swift | 4 ++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Session/Conversations/Settings/OWSConversationSettingsViewController.m b/Session/Conversations/Settings/OWSConversationSettingsViewController.m index 47bfde914..ae8ba7aa0 100644 --- a/Session/Conversations/Settings/OWSConversationSettingsViewController.m +++ b/Session/Conversations/Settings/OWSConversationSettingsViewController.m @@ -1105,10 +1105,26 @@ CGFloat kIconViewLength = 24; - (void)inviteUsersToOpenGroup { - SNUserSelectionVC *userSelectionVC = [[SNUserSelectionVC alloc] initWithTitle:@"vc_conversation_settings_invite_button_title" + NSString *threadID = self.thread.uniqueId; + SNOpenGroupV2 *openGroup = [LKStorage.shared getV2OpenGroupForThreadID:threadID]; + NSString *url = [NSString stringWithFormat:@"%@/%@?public_key=%@", openGroup.server, openGroup.room, openGroup.publicKey]; + SNUserSelectionVC *userSelectionVC = [[SNUserSelectionVC alloc] initWithTitle:NSLocalizedString(@"vc_conversation_settings_invite_button_title", @"") excluding:[NSSet new] completion:^(NSSet *selectedUsers) { - + for (NSString *user in selectedUsers) { + SNVisibleMessage *message = [SNVisibleMessage new]; + message.sentTimestamp = [NSDate millisecondTimestamp]; + message.openGroupInvitation = [[SNOpenGroupInvitation alloc] initWithName:openGroup.name url:url]; + TSOutgoingMessage *tsMessage = [TSOutgoingMessage from:message associatedWith:self.thread]; + [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + [tsMessage saveWithTransaction:transaction]; + }]; + [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + TSContactThread *thread = [TSContactThread getThreadWithContactSessionID:user transaction:transaction]; + [SNMessageSender send:message inThread:thread usingTransaction:transaction]; + [self.navigationController popViewControllerAnimated:YES]; + }]; + } }]; [self.navigationController pushViewController:userSelectionVC animated:YES]; } diff --git a/SessionMessagingKit/Messages/Visible Messages/VisibleMessage+OpenGroupInvitation.swift b/SessionMessagingKit/Messages/Visible Messages/VisibleMessage+OpenGroupInvitation.swift index 6c3ef7628..97295578a 100644 --- a/SessionMessagingKit/Messages/Visible Messages/VisibleMessage+OpenGroupInvitation.swift +++ b/SessionMessagingKit/Messages/Visible Messages/VisibleMessage+OpenGroupInvitation.swift @@ -7,7 +7,8 @@ public extension VisibleMessage { public var name: String? public var url: String? - internal init(name: String, url: String) { + @objc + public init(name: String, url: String) { self.name = name self.url = url } diff --git a/SessionMessagingKit/Open Groups/V2/OpenGroupV2.swift b/SessionMessagingKit/Open Groups/V2/OpenGroupV2.swift index bd62c31f7..504920b76 100644 --- a/SessionMessagingKit/Open Groups/V2/OpenGroupV2.swift +++ b/SessionMessagingKit/Open Groups/V2/OpenGroupV2.swift @@ -4,8 +4,8 @@ public final class OpenGroupV2 : NSObject, NSCoding { // NSObject/NSCoding confo @objc public let server: String @objc public let room: String public let id: String - public let name: String - public let publicKey: String + @objc public let name: String + @objc public let publicKey: String /// The ID with which the image can be retrieved from the server. public let imageID: String?