From d689bf57c1be69758c60abc63a5dc020c14ee8fd Mon Sep 17 00:00:00 2001 From: Denis Bunakalya Date: Tue, 17 May 2022 10:11:09 +0300 Subject: [PATCH] Chunter: Convert direct message to private channel (#1752) Signed-off-by: Denis Bunakalya --- models/chunter/src/index.ts | 16 +++++ models/chunter/src/plugin.ts | 6 +- plugins/chunter-assets/lang/en.json | 3 +- plugins/chunter-assets/lang/ru.json | 3 +- .../ConvertDmToPrivateChannel.svelte | 71 +++++++++++++++++++ plugins/chunter-resources/src/index.ts | 13 +++- plugins/chunter/src/index.ts | 3 +- 7 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 plugins/chunter-resources/src/components/ConvertDmToPrivateChannel.svelte diff --git a/models/chunter/src/index.ts b/models/chunter/src/index.ts index 69d47fce0a..a5e224feb5 100644 --- a/models/chunter/src/index.ts +++ b/models/chunter/src/index.ts @@ -278,6 +278,22 @@ export function createModel (builder: Builder): void { chunter.action.UnarchiveChannel ) + createAction( + builder, + { + action: chunter.actionImpl.ConvertDmToPrivateChannel, + label: chunter.string.ConvertToPrivate, + icon: chunter.icon.Lock, + input: 'focus', + category: chunter.category.Chunter, + target: chunter.class.DirectMessage, + context: { + mode: 'context' + } + }, + chunter.action.ConvertToPrivate + ) + builder.createDoc( workbench.class.Application, core.space.Model, diff --git a/models/chunter/src/plugin.ts b/models/chunter/src/plugin.ts index f83c0589bf..3eaf6ec341 100644 --- a/models/chunter/src/plugin.ts +++ b/models/chunter/src/plugin.ts @@ -35,13 +35,15 @@ export default mergeIds(chunterId, chunter, { MarkCommentUnread: '' as Ref, MarkUnread: '' as Ref, ArchiveChannel: '' as Ref, - UnarchiveChannel: '' as Ref + UnarchiveChannel: '' as Ref, + ConvertToPrivate: '' as Ref }, actionImpl: { MarkUnread: '' as ViewAction, MarkCommentUnread: '' as ViewAction, ArchiveChannel: '' as ViewAction, - UnarchiveChannel: '' as ViewAction + UnarchiveChannel: '' as ViewAction, + ConvertDmToPrivateChannel: '' as ViewAction }, category: { Chunter: '' as Ref diff --git a/plugins/chunter-assets/lang/en.json b/plugins/chunter-assets/lang/en.json index 090abe9d6d..967517f736 100644 --- a/plugins/chunter-assets/lang/en.json +++ b/plugins/chunter-assets/lang/en.json @@ -58,6 +58,7 @@ "LeaveChannel": "Leave channel", "ChannelBrowser": "Channel browser", "SavedItems": "Saved items", - "AddMembersHeader": "Add members to {channel}:" + "AddMembersHeader": "Add members to {channel}:", + "ConvertToPrivate": "Convert to private channel" } } \ No newline at end of file diff --git a/plugins/chunter-assets/lang/ru.json b/plugins/chunter-assets/lang/ru.json index cc53a5a833..f710feffe1 100644 --- a/plugins/chunter-assets/lang/ru.json +++ b/plugins/chunter-assets/lang/ru.json @@ -57,6 +57,7 @@ "LeaveChannel": "Покинуть канал", "ChannelBrowser": "Браузер каналов", "SavedItems": "Сохраненные объекты", - "AddMembersHeader": "Добавить пользователей в {channel}:" + "AddMembersHeader": "Добавить пользователей в {channel}:", + "ConvertToPrivate": "Конвертировать в закрытый канал" } } \ No newline at end of file diff --git a/plugins/chunter-resources/src/components/ConvertDmToPrivateChannel.svelte b/plugins/chunter-resources/src/components/ConvertDmToPrivateChannel.svelte new file mode 100644 index 0000000000..c91449cb68 --- /dev/null +++ b/plugins/chunter-resources/src/components/ConvertDmToPrivateChannel.svelte @@ -0,0 +1,71 @@ + + + + { + dispatch('close') + }} +> + + diff --git a/plugins/chunter-resources/src/index.ts b/plugins/chunter-resources/src/index.ts index 76db973e36..5851773855 100644 --- a/plugins/chunter-resources/src/index.ts +++ b/plugins/chunter-resources/src/index.ts @@ -14,7 +14,7 @@ // import core from '@anticrm/core' -import chunter, { ChunterSpace, Channel, ChunterMessage, Message, ThreadMessage } from '@anticrm/chunter' +import chunter, { ChunterSpace, Channel, ChunterMessage, Message, ThreadMessage, DirectMessage } from '@anticrm/chunter' import { NotificationClientImpl } from '@anticrm/notification-resources' import { Resources } from '@anticrm/platform' import preference from '@anticrm/preference' @@ -37,6 +37,7 @@ import EditChannel from './components/EditChannel.svelte' import ThreadView from './components/ThreadView.svelte' import Threads from './components/Threads.svelte' import SavedMessages from './components/SavedMessages.svelte' +import ConvertDmToPrivateChannelModal from './components/ConvertDmToPrivateChannel.svelte' import { getDmName } from './utils' @@ -135,6 +136,13 @@ async function UnarchiveChannel (channel: Channel): Promise { ) } +async function ConvertDmToPrivateChannel (dm: DirectMessage): Promise { + showPopup(ConvertDmToPrivateChannelModal, { + label: chunter.string.ConvertToPrivate, + dm + }) +} + export async function AddMessageToSaved (message: ChunterMessage): Promise { const client = getClient() @@ -185,6 +193,7 @@ export default async (): Promise => ({ PinMessage, UnpinMessage, ArchiveChannel, - UnarchiveChannel + UnarchiveChannel, + ConvertDmToPrivateChannel } }) diff --git a/plugins/chunter/src/index.ts b/plugins/chunter/src/index.ts index 9ef898bc0e..3ee2ffe6c5 100644 --- a/plugins/chunter/src/index.ts +++ b/plugins/chunter/src/index.ts @@ -140,7 +140,8 @@ export default plugin(chunterId, { ArchiveChannel: '' as IntlString, UnarchiveChannel: '' as IntlString, ArchiveConfirm: '' as IntlString, - UnarchiveConfirm: '' as IntlString + UnarchiveConfirm: '' as IntlString, + ConvertToPrivate: '' as IntlString }, app: { Chunter: '' as Ref