From 318f4eab1af1145a7ac2d8386d1e771a0aae7004 Mon Sep 17 00:00:00 2001 From: Kristina Date: Mon, 12 Feb 2024 12:57:28 +0400 Subject: [PATCH] Move reply to thread to quick actions (#4603) Signed-off-by: Kristina Fefelova --- models/chunter/src/index.ts | 30 ++++++++--------- models/chunter/src/plugin.ts | 4 +-- .../components/ActivityMessageActions.svelte | 2 +- .../src/components/ReplyToThreadAction.svelte | 32 +++++++++++++++++++ plugins/chunter-resources/src/index.ts | 9 +++--- plugins/chunter-resources/src/utils.ts | 3 +- plugins/chunter/src/index.ts | 4 +-- 7 files changed, 56 insertions(+), 28 deletions(-) create mode 100644 plugins/chunter-resources/src/components/ReplyToThreadAction.svelte diff --git a/models/chunter/src/index.ts b/models/chunter/src/index.ts index 9dd2d56239..cdb4a3d5c7 100644 --- a/models/chunter/src/index.ts +++ b/models/chunter/src/index.ts @@ -630,21 +630,6 @@ export function createModel (builder: Builder, options = { addApplication: true chunter.action.DeleteChatMessage ) - createAction( - builder, - { - action: chunter.actionImpl.ReplyToThread, - label: chunter.string.ReplyToThread, - icon: chunter.icon.Thread, - input: 'focus', - category: chunter.category.Chunter, - target: activity.class.ActivityMessage, - visibilityTester: chunter.function.CanReplyToThread, - context: { mode: 'context', application: notification.app.Notification, group: 'edit' } - }, - chunter.action.ReplyToThread - ) - createAction( builder, { @@ -694,6 +679,21 @@ export function createModel (builder: Builder, options = { addApplication: true components: [{ kind: 'footer', component: chunter.component.Replies }] }) + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: chunter.class.ChatMessage, + components: [{ kind: 'action', component: chunter.component.ReplyToThreadAction }] + }) + + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: activity.class.DocUpdateMessage, + components: [{ kind: 'action', component: chunter.component.ReplyToThreadAction }] + }) + + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: activity.class.ActivityInfoMessage, + components: [{ kind: 'action', component: chunter.component.ReplyToThreadAction }] + }) + builder.mixin(chunter.class.Channel, core.class.Class, chunter.mixin.ObjectChatPanel, { ignoreKeys: ['archived', 'collaborators', 'lastMessage', 'pinned', 'topic', 'description'] }) diff --git a/models/chunter/src/plugin.ts b/models/chunter/src/plugin.ts index b8e1cd2c33..e9baeaf6f1 100644 --- a/models/chunter/src/plugin.ts +++ b/models/chunter/src/plugin.ts @@ -48,8 +48,7 @@ export default mergeIds(chunterId, chunter, { ArchiveChannel: '' as ViewAction, UnarchiveChannel: '' as ViewAction, ConvertDmToPrivateChannel: '' as ViewAction, - DeleteChatMessage: '' as ViewAction, - ReplyToThread: '' as ViewAction + DeleteChatMessage: '' as ViewAction }, category: { Chunter: '' as Ref @@ -106,7 +105,6 @@ export default mergeIds(chunterId, chunter, { GetFragment: '' as Resource<(doc: Doc, props: Record) => Promise>, DmIdentifierProvider: '' as Resource<(client: Client, ref: Ref, doc?: T) => Promise>, CanDeleteMessage: '' as Resource<(doc?: Doc | Doc[]) => Promise>, - CanReplyToThread: '' as Resource<(doc?: Doc | Doc[]) => Promise>, CanCopyMessageLink: '' as Resource<(doc?: Doc | Doc[]) => Promise>, GetChunterSpaceLinkFragment: '' as Resource<(doc: Doc, props: Record) => Promise>, GetThreadLink: '' as Resource<(doc: Doc, props: Record) => Promise> diff --git a/plugins/activity-resources/src/components/ActivityMessageActions.svelte b/plugins/activity-resources/src/components/ActivityMessageActions.svelte index b0efc64b2e..66ca178785 100644 --- a/plugins/activity-resources/src/components/ActivityMessageActions.svelte +++ b/plugins/activity-resources/src/components/ActivityMessageActions.svelte @@ -66,9 +66,9 @@
{#if withFlatActions} + - {/if} {#if withActionMenu} diff --git a/plugins/chunter-resources/src/components/ReplyToThreadAction.svelte b/plugins/chunter-resources/src/components/ReplyToThreadAction.svelte new file mode 100644 index 0000000000..0fa516f6e2 --- /dev/null +++ b/plugins/chunter-resources/src/components/ReplyToThreadAction.svelte @@ -0,0 +1,32 @@ + + + +{#if canReplyToThread(object)} + +{/if} diff --git a/plugins/chunter-resources/src/index.ts b/plugins/chunter-resources/src/index.ts index 214106cb5f..7b69620d20 100644 --- a/plugins/chunter-resources/src/index.ts +++ b/plugins/chunter-resources/src/index.ts @@ -68,13 +68,13 @@ import ThreadNotificationPresenter from './components/notification/ThreadNotific import ChatMessageNotificationLabel from './components/notification/ChatMessageNotificationLabel.svelte' import ChatAside from './components/chat/ChatAside.svelte' import Replies from './components/Replies.svelte' +import ReplyToThreadAction from './components/ReplyToThreadAction.svelte' import { updateBacklinksList } from './backlinks' import { ChannelTitleProvider, DirectTitleProvider, canDeleteMessage, - canReplyToThread, chunterSpaceLinkFragmentProvider, dmIdentifierProvider, getDmName, @@ -284,7 +284,8 @@ export default async (): Promise => ({ ChatMessageNotificationLabel, ThreadNotificationPresenter, ChatAside, - Replies + Replies, + ReplyToThreadAction }, function: { GetDmName: getDmName, @@ -295,7 +296,6 @@ export default async (): Promise => ({ ChannelTitleProvider, DmIdentifierProvider: dmIdentifierProvider, CanDeleteMessage: canDeleteMessage, - CanReplyToThread: canReplyToThread, CanCopyMessageLink: canCopyMessageLink, GetChunterSpaceLinkFragment: chunterSpaceLinkFragmentProvider, GetUnreadThreadsCount: getUnreadThreadsCount, @@ -310,8 +310,7 @@ export default async (): Promise => ({ ConvertDmToPrivateChannel, DeleteChatMessage: deleteChatMessage, OpenChannel, - UnpinAllChannels, - ReplyToThread: replyToThread + UnpinAllChannels }, backreference: { Update: update diff --git a/plugins/chunter-resources/src/utils.ts b/plugins/chunter-resources/src/utils.ts index 9a28577f40..e48ac40176 100644 --- a/plugins/chunter-resources/src/utils.ts +++ b/plugins/chunter-resources/src/utils.ts @@ -119,7 +119,7 @@ export async function canDeleteMessage (doc?: ChatMessage): Promise { return doc.createdBy === me._id } -export async function canReplyToThread (doc?: ActivityMessage): Promise { +export function canReplyToThread (doc?: ActivityMessage): boolean { if (doc === undefined) { return false } @@ -400,7 +400,6 @@ export function buildThreadLink (loc: Location, contextId: Ref loc.path[3] = contextId loc.path[4] = _id loc.fragment = undefined - loc.query = { message: _id } return loc } diff --git a/plugins/chunter/src/index.ts b/plugins/chunter/src/index.ts index 43c20c3e9e..1476d9c51d 100644 --- a/plugins/chunter/src/index.ts +++ b/plugins/chunter/src/index.ts @@ -179,7 +179,8 @@ export default plugin(chunterId, { ChatMessagePresenter: '' as AnyComponent, ThreadMessagePresenter: '' as AnyComponent, ChatAside: '' as AnyComponent, - Replies: '' as AnyComponent + Replies: '' as AnyComponent, + ReplyToThreadAction: '' as AnyComponent }, class: { Message: '' as Ref>, @@ -251,7 +252,6 @@ export default plugin(chunterId, { }, action: { DeleteChatMessage: '' as Ref, - ReplyToThread: '' as Ref, OpenChannel: '' as Ref } })