diff --git a/plugins/activity-resources/src/activity.ts b/plugins/activity-resources/src/activity.ts index cfdc4c7597..f201b0fb1f 100644 --- a/plugins/activity-resources/src/activity.ts +++ b/plugins/activity-resources/src/activity.ts @@ -337,7 +337,7 @@ class ActivityImpl implements Activity { // we have same keys, // Remember previous transactions if (result.txDocIds === undefined) { - result.txDocIds = new Set(prevTx.txDocIds) + result.txDocIds = new Set() } if (prevTx.doc?._id !== undefined) { result.txDocIds?.add(prevTx.doc._id) diff --git a/plugins/activity-resources/src/components/Activity.svelte b/plugins/activity-resources/src/components/Activity.svelte index 45f8f898db..7c6d589f96 100644 --- a/plugins/activity-resources/src/components/Activity.svelte +++ b/plugins/activity-resources/src/components/Activity.svelte @@ -21,7 +21,6 @@ import { Component, Grid, IconActivity, Label, Scroller } from '@anticrm/ui' import { ActivityKey, activityKey, DisplayTx, newActivity } from '../activity' import TxView from './TxView.svelte' - import { filterCollectionTxes } from './utils' export let object: Doc export let integrate: boolean = false @@ -49,7 +48,7 @@ $: activityQuery.update( object, (result) => { - txes = filterCollectionTxes(result) + txes = result }, SortingOrder.Descending, new Map( diff --git a/plugins/activity-resources/src/components/TxView.svelte b/plugins/activity-resources/src/components/TxView.svelte index d4c0980e09..35618bf7b5 100644 --- a/plugins/activity-resources/src/components/TxView.svelte +++ b/plugins/activity-resources/src/components/TxView.svelte @@ -249,7 +249,7 @@ {/await} {/each} {:else if viewlet && viewlet.display === 'inline' && viewlet.component} - {#if tx.collectionAttribute !== undefined} + {#if tx.collectionAttribute !== undefined && (tx.txDocIds?.size ?? 0) > 1}
@@ -270,7 +270,7 @@ {#if viewlet && viewlet.component && viewlet.display !== 'inline'}
- {#if tx.collectionAttribute !== undefined} + {#if tx.collectionAttribute !== undefined && (tx.txDocIds?.size ?? 0) > 1}
diff --git a/plugins/activity-resources/src/components/TxViewTx.svelte b/plugins/activity-resources/src/components/TxViewTx.svelte index 011870bea7..d783ba1508 100644 --- a/plugins/activity-resources/src/components/TxViewTx.svelte +++ b/plugins/activity-resources/src/components/TxViewTx.svelte @@ -22,7 +22,7 @@
- {#each filterTx([...tx.txes, tx], core.class.TxCreateDoc) as ctx, i} + {#each filterTx([tx, ...tx.txes], core.class.TxCreateDoc) as ctx, i} {#if i === 0}
{/if} @@ -34,7 +34,7 @@ {/if}
{/each} - {#each filterTx([...tx.txes, tx], core.class.TxRemoveDoc) as ctx, i} + {#each filterTx([tx, ...tx.txes], core.class.TxRemoveDoc) as ctx, i} {#if i === 0}
{/if} diff --git a/plugins/activity-resources/src/components/utils.ts b/plugins/activity-resources/src/components/utils.ts index eb7cffe2f9..0c3a61a02c 100644 --- a/plugins/activity-resources/src/components/utils.ts +++ b/plugins/activity-resources/src/components/utils.ts @@ -125,7 +125,7 @@ async function checkInlineViewlets ( client: TxOperations, model: AttributeModel[] ): Promise<{ viewlet: TxDisplayViewlet, model: AttributeModel[] }> { - if (dtx.collectionAttribute !== undefined) { + if (dtx.collectionAttribute !== undefined && (dtx.txDocIds?.size ?? 0) > 1) { // Check if we have a class presenter we could have a pseudo viewlet based on class presenter. viewlet = await createPseudoViewlet(client, dtx, activity.string.CollectionUpdated, 'content') } else if (dtx.tx._class === core.class.TxCreateDoc) { @@ -252,29 +252,3 @@ export async function getValue (client: TxOperations, m: AttributeModel, tx: Dis } return value } - -export function filterCollectionTxes (txes: DisplayTx[]): DisplayTx[] { - return txes.map(filterCollectionTx).filter(Boolean) as DisplayTx[] -} - -function filterCollectionTx (tx: DisplayTx): DisplayTx | undefined { - if (tx.collectionAttribute === undefined) return tx - const txes = tx.txes.reduceRight( - (txes, ctx) => { - const filtredTxes = txes.filter( - ({ tx: { _class }, doc }) => doc?._id !== ctx.doc?._id || _class === core.class.TxUpdateDoc - ) - return ctx.tx._class === core.class.TxUpdateDoc || filtredTxes.length === txes.length - ? [ctx, ...txes] - : filtredTxes - }, - [tx] - ) - const txDocIds = txes.map(({ doc }) => doc?._id).filter(Boolean) as Array> - const ctx = txes.pop() - if (ctx !== undefined) { - ctx.txes = txes - ctx.txDocIds = new Set(txDocIds) - } - return ctx -}