Extract collaborators (#9217)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov
2025-06-20 13:50:51 +05:00
committed by GitHub
parent 7a61728079
commit 17d804e639
53 changed files with 936 additions and 832 deletions
@@ -20,7 +20,13 @@
import tags from '@hcengineering/tags'
import type { Issue } from '@hcengineering/tracker'
import { Component, Label } from '@hcengineering/ui'
import { getFiltredKeys, isCollectionAttr, ObjectBox, restrictionStore } from '@hcengineering/view-resources'
import {
getDocMixins,
getFiltredKeys,
isCollectionAttr,
ObjectBox,
restrictionStore
} from '@hcengineering/view-resources'
import tracker from '../../../plugin'
import ComponentEditor from '../../components/ComponentEditor.svelte'
@@ -30,6 +36,7 @@
import PriorityEditor from '../PriorityEditor.svelte'
import RelationEditor from '../RelationEditor.svelte'
import StatusEditor from '../StatusEditor.svelte'
import notification from '@hcengineering/notification'
export let issue: Issue
export let showAllMixins: boolean = false
@@ -69,18 +76,13 @@
let mixins: Mixin<Doc>[] = []
$: getMixins(issue, showAllMixins)
$: _mixins = getDocMixins(issue, showAllMixins)
function getMixins (object: Issue, showAllMixins: boolean): void {
const descendants = hierarchy.getDescendants(core.class.Doc).map((p) => hierarchy.getClass(p))
$: mixins = _mixins.find((p) => p._id === notification.mixin.Collaborators)
? _mixins
: [..._mixins, hierarchy.getClass(notification.mixin.Collaborators)]
mixins = descendants.filter(
(m) =>
m.kind === ClassifierKind.MIXIN &&
(hierarchy.hasMixin(object, m._id) ||
(showAllMixins && hierarchy.isDerived(tracker.class.Issue, hierarchy.getBaseClass(m._id))))
)
}
const allowedCollections = ['collaborators']
function getMixinKeys (mixin: Ref<Mixin<Doc>>): KeyedAttribute[] {
const mixinClass = hierarchy.getClass(mixin)
@@ -90,7 +92,7 @@
[],
hierarchy.isMixin(mixinClass.extends as Ref<Class<Doc>>) ? mixinClass.extends : issue._class
)
return filtredKeys.filter((key) => !isCollectionAttr(hierarchy, key))
return filtredKeys.filter((key) => !isCollectionAttr(hierarchy, key) || allowedCollections.includes(key.key))
}
$: updateKeys(issue._class, ignoreKeys)