From 8b8c992ff0077d6f34e72d159c327354343a68e0 Mon Sep 17 00:00:00 2001 From: Alex <41288429+Dvinyanin@users.noreply.github.com> Date: Wed, 29 Jun 2022 12:52:30 +0700 Subject: [PATCH] Tracker: Fix extra refresh (#2160) Signed-off-by: Dvinyanin Alexandr --- .../src/components/myissues/MyIssues.svelte | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/plugins/tracker-resources/src/components/myissues/MyIssues.svelte b/plugins/tracker-resources/src/components/myissues/MyIssues.svelte index 2fe9847a67..b7dda3f1cc 100644 --- a/plugins/tracker-resources/src/components/myissues/MyIssues.svelte +++ b/plugins/tracker-resources/src/components/myissues/MyIssues.svelte @@ -30,15 +30,23 @@ ['subscribed', tracker.string.Subscribed] ] const currentUser = getCurrentAccount() as EmployeeAccount - const queries: { [n: string]: DocumentQuery | undefined } = { assigned: { assignee: currentUser.employee } } + const assigned = { assignee: currentUser.employee } + const created = { _id: { $in: [] as Ref[] } } + const subscribed = { _id: { $in: [] as Ref[] } } const createdQuery = createQuery() $: createdQuery.query>( core.class.TxCollectionCUD, - { modifiedBy: currentUser._id, objectClass: tracker.class.Issue, collection: 'subIssues' }, + { + modifiedBy: currentUser._id, + objectClass: tracker.class.Issue, + collection: 'subIssues', + 'tx._class': core.class.TxCreateDoc + }, (result) => { - queries.created = { _id: { $in: result.map(({ tx: { objectId } }) => objectId) } } - } + created._id.$in = result.map(({ tx: { objectId } }) => objectId) + }, + { sort: { _id: 1 } } ) const subscribedQuery = createQuery() @@ -46,8 +54,13 @@ notification.class.LastView, { user: getCurrentAccount()._id, attachedToClass: tracker.class.Issue, lastView: { $gte: 0 } }, (result) => { - queries.subscribed = { _id: { $in: result.map(({ attachedTo }) => attachedTo as Ref) } } - } + const newSub = result.map(({ attachedTo }) => attachedTo as Ref) + const curSub = subscribed._id.$in + if (curSub.length !== newSub.length || curSub.some((id, i) => newSub[i] !== id)) { + subscribed._id.$in = newSub + } + }, + { sort: { _id: 1 } } ) let [[mode]] = config @@ -55,9 +68,14 @@ if (newMode === mode) return mode = newMode } + + function getQuery (mode: string, queries: { [key: string]: DocumentQuery }) { + return queries[mode] + } + $: query = getQuery(mode, { assigned, created, subscribed }) - +