feat: add api to delete a community channel

This commit is contained in:
Jonathan Rainville 2021-07-30 12:14:10 -04:00 committed by Iuri Matias
parent b5aa8d876e
commit 9f21740bae
6 changed files with 56 additions and 25 deletions

View File

@ -498,6 +498,15 @@ QtObject:
chat.muted = true
return chat
proc deleteCommunityChat*(self: CommunitiesView, communityId: string, channelId: string): string {.slot.} =
try:
self.status.chat.deleteCommunityChat(communityId, channelId)
self.joinedCommunityList.removeChannelInCommunity(communityId, channelId)
except RpcException as e:
error "Error deleting channel", msg=e.msg, channelId
result = StatusGoError(error: e.msg).toJson
proc setCommunityMuted*(self: CommunitiesView, communityId: string, muted: bool) {.slot.} =
self.status.chat.setCommunityMuted(communityId, muted)
if (communityId == self.activeCommunity.communityItem.id):

View File

@ -194,6 +194,14 @@ QtObject:
let channelIdx = community.chats.findIndexById(channel.id)
if channelIdx > -1:
community.chats[channelIdx] = channel
proc removeChannelInCommunity*(self: CommunityList, communityId: string, channelId: string) =
var community = self.getCommunityById(communityId)
let idx = community.chats.findIndexById(channelId)
if idx == -1: return
community.chats.delete(idx)
let index = self.communities.findIndexById(communityId)
self.communities[index] = community
proc addCategoryToCommunity*(self: CommunityList, communityId: string, category: CommunityCategory) =
var community = self.getCommunityById(communityId)

View File

@ -467,6 +467,9 @@ proc createCommunityChannel*(self: ChatModel, communityId: string, name: string,
proc editCommunityChannel*(self: ChatModel, communityId: string, channelId: string, name: string, description: string, categoryId: string): Chat =
result = status_chat.editCommunityChannel(communityId, channelId, name, description, categoryId)
proc deleteCommunityChat*(self: ChatModel, communityId: string, channelId: string) =
status_chat.deleteCommunityChat(communityId, channelId)
proc createCommunityCategory*(self: ChatModel, communityId: string, name: string, channels: seq[string]): CommunityCategory =
result = status_chat.createCommunityCategory(communityId, name, channels)

View File

@ -424,6 +424,9 @@ proc editCommunityChannel*(communityId: string, channelId: string, name: string,
if rpcResult{"result"} != nil and rpcResult{"result"}.kind != JNull:
result = rpcResult["result"]["chats"][0].toChat()
proc deleteCommunityChat*(communityId: string, chatId: string) =
discard callPrivateRPC("deleteCommunityChat".prefix, %*[communityId, chatId])
proc createCommunityCategory*(communityId: string, name: string, channels: seq[string]): CommunityCategory =
let rpcResult = callPrivateRPC("createCommunityCategory".prefix, %*[
{

View File

@ -10,6 +10,7 @@ import StatusQ.Popups 0.1
StatusPopupMenu {
property var chatItem
property bool communityActive: chatsModel.communities.activeCommunity.active
StatusMenuItem {
id: viewProfileMenuItem
@ -19,11 +20,9 @@ StatusPopupMenu {
case Constants.chatTypeOneToOne:
//% "View Profile"
return qsTrId("view-profile")
break;
case Constants.chatTypePrivateGroupChat:
//% "View Group"
return qsTrId("view-group")
break;
}
}
return ""
@ -58,7 +57,7 @@ StatusPopupMenu {
Action {
enabled: profileModel.fleets.fleet == Constants.waku_prod || profileModel.fleets.fleet == Constants.waku_test
enabled: profileModel.fleets.fleet == Constants.waku_prod || profileModel.fleets.fleet === Constants.waku_test
//% "Test WakuV2 - requestAllHistoricMessages"
text: qsTrId("test-wakuv2---requestallhistoricmessages")
onTriggered: chatsModel.requestAllHistoricMessages()
@ -99,7 +98,7 @@ StatusPopupMenu {
//% "Edit Channel"
text: qsTrId("edit-channel")
icon.name: "edit"
enabled: chatsModel.communities.activeCommunity.active &&
enabled: communityActive &&
chatsModel.communities.activeCommunity.admin
onTriggered: openPopup(editChannelPopup, {
communityId: chatsModel.communities.activeCommunity.id,
@ -113,30 +112,35 @@ StatusPopupMenu {
StatusMenuItem {
id: deleteOrLeaveMenuItem
text: chatItem && chatItem.chatType === Constants.chatTypeOneToOne ?
//% "Delete chat"
qsTrId("delete-chat") :
//% "Leave chat"
qsTrId("leave-chat")
icon.name: chatItem && chatItem.chatType === Constants.chatTypeOneToOne ? "delete" : "arrow-right"
text: {
if (communityActive) {
return qsTr("Delete Channel")
}
return chatItem && chatItem.chatType === Constants.chatTypeOneToOne ?
//% "Delete chat"
qsTrId("delete-chat") :
//% "Leave chat"
qsTrId("leave-chat")
}
icon.name: chatItem && chatItem.chatType === Constants.chatTypeOneToOne || communityActive ? "delete" : "arrow-right"
icon.width: chatItem && chatItem.chatType === Constants.chatTypeOneToOne ? 18 : 14
iconRotation: chatItem && chatItem.chatType === Constants.chatTypeOneToOne ? 0 : 180
type: StatusMenuItem.Type.Danger
onTriggered: {
let label = chatItem && chatItem.chatType === Constants.chatTypeOneToOne ?
//% "Delete chat"
qsTrId("delete-chat") :
//% "Leave chat"
qsTrId("leave-chat")
openPopup(deleteChatConfirmationDialogComponent, {
title: label,
confirmButtonLabel: label,
chatId: chatItem.id
})
let label = chatItem && chatItem.chatType === Constants.chatTypeOneToOne ?
//% "Delete chat"
qsTrId("delete-chat") :
//% "Leave chat"
qsTrId("leave-chat")
openPopup(deleteChatConfirmationDialogComponent, {
title: label,
confirmButtonLabel: label,
chatId: chatItem.id
})
}
enabled: !chatsModel.communities.activeCommunity.active
enabled: !communityActive || chatsModel.communities.activeCommunity.admin
}
Component {
@ -144,13 +148,17 @@ StatusPopupMenu {
ConfirmationDialog {
property string chatId
btnType: "warn"
//% "Are you sure you want to leave this chat?"
confirmationText: qsTrId("are-you-sure-you-want-to-leave-this-chat-")
confirmationText: communityActive ? qsTr("Are you sure you want to delete this channel?") :
qsTr("Are you sure you want to leave this chat?")
onClosed: {
destroy()
}
onConfirmButtonClicked: {
chatsModel.channelView.leaveChat(chatId)
if (communityActive) {
chatsModel.communities.deleteCommunityChat(chatsModel.communities.activeCommunity.id, chatId)
} else {
chatsModel.channelView.leaveChat(chatId)
}
close();
}
}

2
vendor/status-go vendored

@ -1 +1 @@
Subproject commit cdc7c5503001e2c987cf657dc707a3da81ea397e
Subproject commit 151edb36077cdbb9f1f2b89f32cd939ee873ed98