From da77487746d87cd432d5eaaff0759d922131a3c9 Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Wed, 17 Feb 2021 13:19:07 -0500 Subject: [PATCH] fix: fix invite to use new API and remove the double msg send --- src/app/chat/views/communities.nim | 14 +++++++++++++- src/status/chat.nim | 7 ++++--- src/status/libstatus/chat.nim | 7 +++++-- .../InviteFriendsToCommunityPopup.qml | 14 +++++++------- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/app/chat/views/communities.nim b/src/app/chat/views/communities.nim index 9cb5d979ea..e86f75cf2b 100644 --- a/src/app/chat/views/communities.nim +++ b/src/app/chat/views/communities.nim @@ -1,4 +1,4 @@ -import NimQml, json, sequtils, chronicles, strutils, strformat +import NimQml, json, sequtils, chronicles, strutils, strformat, json import ../../../status/status import ../../../status/chat/chat import ./community_list @@ -229,6 +229,18 @@ QtObject: error "Error inviting to the community", msg = e.msg result = fmt"Error inviting to the community: {e.msg}" + proc inviteUsersToCommunity*(self: CommunitiesView, pubKeysJSON: string): string {.slot.} = + try: + let pubKeysParsed = pubKeysJSON.parseJson + var pubKeys: seq[string] = @[] + for pubKey in pubKeysParsed: + pubKeys.add(pubKey.getStr) + + self.status.chat.inviteUsersToCommunity(self.activeCommunity.id(), pubKeys) + except Exception as e: + error "Error inviting to the community", msg = e.msg + result = fmt"Error inviting to the community: {e.msg}" + proc exportComumnity*(self: CommunitiesView): string {.slot.} = try: result = self.status.chat.exportCommunity(self.activeCommunity.communityItem.id) diff --git a/src/status/chat.nim b/src/status/chat.nim index cf86a2ef9d..5333e2eb08 100644 --- a/src/status/chat.nim +++ b/src/status/chat.nim @@ -429,9 +429,10 @@ proc leaveCommunity*(self: ChatModel, communityId: string) = status_chat.leaveCommunity(communityId) proc inviteUserToCommunity*(self: ChatModel, communityId: string, pubKey: string) = - status_chat.inviteUserToCommunity(communityId, pubKey) - # After sending the invite, we send a message with the community ID so they can join - self.sendMessage(pubKey, "Upgrade here to see an invitation to community", "", ContentType.Community.int, communityId, true) + status_chat.inviteUsersToCommunity(communityId, @[pubKey]) + +proc inviteUsersToCommunity*(self: ChatModel, communityId: string, pubKeys: seq[string]) = + status_chat.inviteUsersToCommunity(communityId, pubKeys) proc removeUserFromCommunity*(self: ChatModel, communityId: string, pubKey: string) = status_chat.removeUserFromCommunity(communityId, pubKey) diff --git a/src/status/libstatus/chat.nim b/src/status/libstatus/chat.nim index f7bdc94b4b..523ba3a338 100644 --- a/src/status/libstatus/chat.nim +++ b/src/status/libstatus/chat.nim @@ -305,8 +305,11 @@ proc joinCommunity*(communityId: string) = proc leaveCommunity*(communityId: string) = discard callPrivateRPC("leaveCommunity".prefix, %*[communityId]) -proc inviteUserToCommunity*(communityId: string, pubKey: string) = - discard callPrivateRPC("inviteUserToCommunity".prefix, %*[communityId, pubKey]) +proc inviteUsersToCommunity*(communityId: string, pubKeys: seq[string]) = + discard callPrivateRPC("inviteUsersToCommunity".prefix, %*[{ + "communityId": communityId, + "users": pubKeys + }]) proc exportCommunity*(communityId: string):string = result = callPrivateRPC("exportCommunity".prefix, %*[communityId]).parseJson()["result"].getStr diff --git a/ui/app/AppLayouts/Chat/CommunityComponents/InviteFriendsToCommunityPopup.qml b/ui/app/AppLayouts/Chat/CommunityComponents/InviteFriendsToCommunityPopup.qml index 19c298e88a..466d516274 100644 --- a/ui/app/AppLayouts/Chat/CommunityComponents/InviteFriendsToCommunityPopup.qml +++ b/ui/app/AppLayouts/Chat/CommunityComponents/InviteFriendsToCommunityPopup.qml @@ -113,13 +113,13 @@ ModalPopup { //% "Invite" text: qsTrId("invite-button") onClicked : { - console.log('invite') - popup.pubKeys.forEach(function (pubKey) { - const error = chatsModel.inviteUserToCommunity(pubKey) - if (error) { - console.log('do something?') - } - }) + const error = chatsModel.communities.inviteUsersToCommunity(JSON.stringify(popup.pubKeys)) + // TODO show error to user also should we show success? + if (error) { + console.error('Error inviting', error) + return + } + popup.close() } } }