diff --git a/models/activity/src/index.ts b/models/activity/src/index.ts index 778d177abb..7e1296b4f9 100644 --- a/models/activity/src/index.ts +++ b/models/activity/src/index.ts @@ -137,7 +137,10 @@ export class TDocUpdateMessage extends TActivityMessage implements DocUpdateMess @Index(IndexKind.Indexed) txId!: Ref> - action!: DocUpdateAction + @Prop(TypeString(), core.string.Object) + @Index(IndexKind.Indexed) + action!: DocUpdateAction + updateCollection?: string attributeUpdates?: DocAttributeUpdates } @@ -227,8 +230,10 @@ export class TReaction extends TAttachedDoc implements Reaction { @Model(activity.class.SavedMessage, preference.class.Preference) export class TSavedMessage extends TPreference implements SavedMessage { @Prop(TypeRef(activity.class.ActivityMessage), view.string.Save) + @Index(IndexKind.Indexed) declare attachedTo: Ref } + export function createModel (builder: Builder): void { builder.createModel( TTxViewlet, @@ -247,8 +252,6 @@ export function createModel (builder: Builder): void { TIgnoreActivity ) - builder.mixin(activity.class.DocUpdateMessage, core.class.Class, activity.mixin.ActivityDoc, {}) - builder.mixin(activity.class.DocUpdateMessage, core.class.Class, view.mixin.ObjectPresenter, { presenter: activity.component.DocUpdateMessagePresenter }) diff --git a/models/chunter/src/index.ts b/models/chunter/src/index.ts index 89fe74a3b8..9079933f47 100644 --- a/models/chunter/src/index.ts +++ b/models/chunter/src/index.ts @@ -171,7 +171,6 @@ export class TChatMessage extends TActivityMessage implements ChatMessage { message!: string @Prop(TypeTimestamp(), chunter.string.Edit) - @Index(IndexKind.Indexed) editedOn?: Timestamp @Prop(PropCollection(attachment.class.Attachment), attachment.string.Attachments, { @@ -183,9 +182,11 @@ export class TChatMessage extends TActivityMessage implements ChatMessage { @Model(chunter.class.ThreadMessage, chunter.class.ChatMessage) export class TThreadMessage extends TChatMessage implements ThreadMessage { @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedTo) + @Index(IndexKind.Indexed) declare attachedTo: Ref @Prop(TypeRef(activity.class.ActivityMessage), core.string.AttachedToClass) + @Index(IndexKind.Indexed) declare attachedToClass: Ref> @Prop(TypeRef(core.class.Doc), core.string.Object) @@ -406,7 +407,7 @@ export function createModel (builder: Builder, options = { addApplication: true alias: chunterId, hidden: false, component: chunter.component.Chat, - aside: chunter.component.ThreadView + aside: chunter.component.ChatAside }, chunter.app.Chunter ) @@ -429,6 +430,7 @@ export function createModel (builder: Builder, options = { addApplication: true input: 'none', category: chunter.category.Chunter, target: activity.class.ActivityMessage, + visibilityTester: chunter.function.CanCopyMessageLink, context: { mode: ['context', 'browser'], application: chunter.app.Chunter, @@ -585,8 +587,6 @@ export function createModel (builder: Builder, options = { addApplication: true filter: chunter.filter.ChatMessagesFilter }) - builder.mixin(chunter.class.ChatMessage, core.class.Class, activity.mixin.ActivityDoc, {}) - builder.mixin(chunter.class.DirectMessage, core.class.Class, view.mixin.ObjectIdentifier, { provider: chunter.function.DmIdentifierProvider }) @@ -639,6 +639,7 @@ export function createModel (builder: Builder, options = { addApplication: true 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 @@ -677,6 +678,21 @@ export function createModel (builder: Builder, options = { addApplication: true ofClass: chunter.class.ChatMessage, components: { input: chunter.component.ChatMessageInput } }) + + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: chunter.class.ChatMessage, + components: [{ kind: 'footer', component: chunter.component.Replies }] + }) + + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: activity.class.DocUpdateMessage, + components: [{ kind: 'footer', component: chunter.component.Replies }] + }) + + builder.createDoc(activity.class.ActivityMessageExtension, core.space.Model, { + ofMessage: activity.class.ActivityInfoMessage, + components: [{ kind: 'footer', component: chunter.component.Replies }] + }) } export default chunter diff --git a/models/chunter/src/plugin.ts b/models/chunter/src/plugin.ts index 9041a376b8..438567ea07 100644 --- a/models/chunter/src/plugin.ts +++ b/models/chunter/src/plugin.ts @@ -75,7 +75,6 @@ export default mergeIds(chunterId, chunter, { ConfigLabel: '' as IntlString, ConfigDescription: '' as IntlString, Reacted: '' as IntlString, - Saved: '' as IntlString, RepliedToThread: '' as IntlString }, viewlet: { @@ -107,6 +106,8 @@ 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> }, filter: { diff --git a/models/notification/src/index.ts b/models/notification/src/index.ts index 03e0622ca4..eeedda3428 100644 --- a/models/notification/src/index.ts +++ b/models/notification/src/index.ts @@ -203,11 +203,9 @@ export class TDocNotifyContext extends TDoc implements DocNotifyContext { hidden!: boolean @Prop(TypeDate(), core.string.Date) - @Index(IndexKind.Indexed) lastViewedTimestamp?: Timestamp @Prop(TypeDate(), core.string.Date) - @Index(IndexKind.Indexed) lastUpdateTimestamp?: Timestamp @Prop(TypeBoolean(), notification.string.Pinned) @@ -337,7 +335,8 @@ export function createModel (builder: Builder): void { alias: inboxId, hidden: true, locationResolver: notification.resolver.Location, - component: notification.component.Inbox + component: notification.component.Inbox, + aside: chunter.component.ThreadView }, notification.app.Inbox ) diff --git a/models/server-activity/src/migration.ts b/models/server-activity/src/migration.ts index cde26e27a4..fb00113947 100644 --- a/models/server-activity/src/migration.ts +++ b/models/server-activity/src/migration.ts @@ -95,9 +95,7 @@ async function generateDocUpdateMessageByTx ( async function createDocUpdateMessages (client: MigrationClient): Promise { const activityDocs = await client.model.findAll(activity.mixin.ActivityDoc, {}) - const activityDocClasses = activityDocs - .map(({ _id }) => _id) - .filter((_class) => !client.hierarchy.isDerived(_class, activity.class.ActivityMessage)) + const activityDocClasses = activityDocs.map(({ _id }) => _id) const notificationControl = getActivityControl(client) diff --git a/packages/theme/styles/_layouts.scss b/packages/theme/styles/_layouts.scss index 55ddcb22f1..38a46075bb 100644 --- a/packages/theme/styles/_layouts.scss +++ b/packages/theme/styles/_layouts.scss @@ -512,6 +512,7 @@ input.search { .mb-0 { margin-bottom: 0 !important; } .mb-1 { margin-bottom: .25rem; } .mb-2 { margin-bottom: .5rem; } +.mb-2-5 { margin-bottom: .625rem; } .mb-3 { margin-bottom: .75rem; } .mb-4 { margin-bottom: 1rem; } .mb-6 { margin-bottom: 1.5rem; } diff --git a/packages/theme/styles/_lumia-colors.scss b/packages/theme/styles/_lumia-colors.scss index a39c2340e7..5335e00f2c 100644 --- a/packages/theme/styles/_lumia-colors.scss +++ b/packages/theme/styles/_lumia-colors.scss @@ -49,6 +49,8 @@ --global-focus-BorderColor: #2A59D6; --global-popover-ShadowColor: #0E131E59; --global-modal-ShadowColor: #0E131E73; + --global-higlight-Color: #F76E53; + --global-accent-SkyText: #B9D1F5; /** Buttons **/ --button-subtle-LabelColor: #fff; @@ -104,6 +106,8 @@ --global-focus-BorderColor: #204DC8; --global-popover-ShadowColor: #0E131E1F; --global-modal-ShadowColor: #0E131E14; + --global-higlight-Color: #F76E53; + --global-accent-SkyText:#B9D1F5; /** Buttons **/ --button-subtle-LabelColor: #000; diff --git a/packages/ui/src/components/Breadcrumb.svelte b/packages/ui/src/components/Breadcrumb.svelte index 76672cb4c8..8a45e2b132 100644 --- a/packages/ui/src/components/Breadcrumb.svelte +++ b/packages/ui/src/components/Breadcrumb.svelte @@ -20,6 +20,9 @@ import Label from './Label.svelte' export let icon: Asset | AnySvelteComponent | ComponentType | undefined = undefined + export let iconProps: any | undefined = undefined + export let iconWidth: string | undefined = undefined + export let withoutIconBackground = false export let label: IntlString | undefined = undefined export let title: string | undefined = undefined export let size: 'large' | 'small' @@ -28,8 +31,8 @@