mirror of
https://github.com/hcengineering/platform.git
synced 2024-12-27 05:23:11 +03:00
UBERF-4161: Few inbox fixes (#3976)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
parent
0a16c2ff88
commit
29b9296a0e
@ -44,7 +44,7 @@
|
|||||||
const empAccIds = dm?.members.length !== 1 ? dm?.members.filter((accId) => accId !== myAccId) : dm?.members
|
const empAccIds = dm?.members.length !== 1 ? dm?.members.filter((accId) => accId !== myAccId) : dm?.members
|
||||||
|
|
||||||
const employeeAccounts = await client.findAll(contact.class.PersonAccount, {
|
const employeeAccounts = await client.findAll(contact.class.PersonAccount, {
|
||||||
_id: { $in: empAccIds as Ref<PersonAccount>[] }
|
_id: { $in: (empAccIds ?? []) as Ref<PersonAccount>[] }
|
||||||
})
|
})
|
||||||
|
|
||||||
return employeeAccounts.map((ea) => ea.person)
|
return employeeAccounts.map((ea) => ea.person)
|
||||||
|
@ -236,9 +236,10 @@ class Connection implements ClientConnection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const request = this.requests.get(resp.id)
|
||||||
this.requests.delete(resp.id)
|
this.requests.delete(resp.id)
|
||||||
if (resp.error !== undefined) {
|
if (resp.error !== undefined) {
|
||||||
console.log('ERROR', promise, resp.id)
|
console.log('ERROR', promise, request, resp.id)
|
||||||
promise.reject(new PlatformError(resp.error))
|
promise.reject(new PlatformError(resp.error))
|
||||||
} else {
|
} else {
|
||||||
promise.resolve(resp.result)
|
promise.resolve(resp.result)
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
import { IntlString } from '@hcengineering/platform'
|
import { IntlString } from '@hcengineering/platform'
|
||||||
import { createQuery, getClient } from '@hcengineering/presentation'
|
import { createQuery, getClient } from '@hcengineering/presentation'
|
||||||
import { ButtonKind, ButtonSize } from '@hcengineering/ui'
|
import { ButtonKind, ButtonSize } from '@hcengineering/ui'
|
||||||
|
import { onDestroy } from 'svelte'
|
||||||
import { personAccountByIdStore } from '../utils'
|
import { personAccountByIdStore } from '../utils'
|
||||||
import UserBoxList from './UserBoxList.svelte'
|
import UserBoxList from './UserBoxList.svelte'
|
||||||
|
|
||||||
@ -30,17 +31,30 @@
|
|||||||
export let width: string | undefined = undefined
|
export let width: string | undefined = undefined
|
||||||
export let excludeItems: Ref<Account>[] | undefined = undefined
|
export let excludeItems: Ref<Account>[] | undefined = undefined
|
||||||
|
|
||||||
let timer: any
|
let timer: any = null
|
||||||
const client = getClient()
|
const client = getClient()
|
||||||
|
let update: (() => Promise<void>) | undefined
|
||||||
|
|
||||||
function onUpdate (evt: CustomEvent<Ref<Employee>[]>): void {
|
function onUpdate (evt: CustomEvent<Ref<Employee>[]>): void {
|
||||||
clearTimeout(timer)
|
if (timer !== null) {
|
||||||
timer = setTimeout(async () => {
|
clearTimeout(timer)
|
||||||
|
}
|
||||||
|
update = async () => {
|
||||||
const accounts = await client.findAll(contact.class.PersonAccount, { person: { $in: evt.detail } })
|
const accounts = await client.findAll(contact.class.PersonAccount, { person: { $in: evt.detail } })
|
||||||
onChange(accounts.map((it) => it._id))
|
onChange(accounts.map((it) => it._id))
|
||||||
}, 500)
|
if (timer !== null) {
|
||||||
|
clearTimeout(timer)
|
||||||
|
}
|
||||||
|
timer = null
|
||||||
|
update = undefined
|
||||||
|
}
|
||||||
|
timer = setTimeout(() => update?.(), 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
update?.()
|
||||||
|
})
|
||||||
|
|
||||||
const excludedQuery = createQuery()
|
const excludedQuery = createQuery()
|
||||||
|
|
||||||
let excluded: Account[] = []
|
let excluded: Account[] = []
|
||||||
|
@ -21,19 +21,19 @@
|
|||||||
import EmptyAvatar from './icons/EmptyAvatar.svelte'
|
import EmptyAvatar from './icons/EmptyAvatar.svelte'
|
||||||
|
|
||||||
export let _class: Ref<Class<Contact>>
|
export let _class: Ref<Class<Contact>>
|
||||||
export let items: (Ref<Contact> | undefined | null)[] = []
|
export let items: (Ref<Contact> | undefined | null)[] | undefined = []
|
||||||
export let size: IconSize
|
export let size: IconSize
|
||||||
export let limit: number = 3
|
export let limit: number = 3
|
||||||
export let hideLimit: boolean = false
|
export let hideLimit: boolean = false
|
||||||
|
|
||||||
let persons: Contact[] = []
|
let persons: Contact[] = []
|
||||||
|
|
||||||
$: includeEmpty = items.includes(undefined) || items.includes(null)
|
$: includeEmpty = items?.includes(undefined) || items?.includes(null)
|
||||||
|
|
||||||
const query = createQuery()
|
const query = createQuery()
|
||||||
$: query.query<Contact>(
|
$: query.query<Contact>(
|
||||||
_class,
|
_class,
|
||||||
{ _id: { $in: items.filter((p) => p) as Ref<Contact>[] } },
|
{ _id: { $in: (items?.filter((p) => p) as Ref<Contact>[]) ?? [] } },
|
||||||
(result) => {
|
(result) => {
|
||||||
persons = result
|
persons = result
|
||||||
},
|
},
|
||||||
@ -48,18 +48,20 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="avatars-container">
|
{#if items !== undefined}
|
||||||
{#if includeEmpty}
|
<div class="avatars-container">
|
||||||
<div class="combine-avatar {size}" data-over={getDataOver(persons.length === 0, items)}>
|
{#if includeEmpty}
|
||||||
<EmptyAvatar {size} />
|
<div class="combine-avatar {size}" data-over={getDataOver(persons.length === 0, items)}>
|
||||||
</div>
|
<EmptyAvatar {size} />
|
||||||
{/if}
|
</div>
|
||||||
{#each persons as person, i}
|
{/if}
|
||||||
<div class="combine-avatar {size}" data-over={getDataOver(persons.length === i + 1, items)}>
|
{#each persons as person, i}
|
||||||
<Avatar avatar={person.avatar} {size} name={person.name} />
|
<div class="combine-avatar {size}" data-over={getDataOver(persons.length === i + 1, items)}>
|
||||||
</div>
|
<Avatar avatar={person.avatar} {size} name={person.name} />
|
||||||
{/each}
|
</div>
|
||||||
</div>
|
{/each}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.avatars-container {
|
.avatars-container {
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
import IconMembers from './icons/Members.svelte'
|
import IconMembers from './icons/Members.svelte'
|
||||||
import UsersPopup from './UsersPopup.svelte'
|
import UsersPopup from './UsersPopup.svelte'
|
||||||
|
|
||||||
export let items: Ref<Contact>[] = []
|
export let items: Ref<Contact>[] | undefined = []
|
||||||
export let _class: Ref<Class<Contact>> = contact.class.Contact
|
export let _class: Ref<Class<Contact>> = contact.class.Contact
|
||||||
export let label: IntlString
|
export let label: IntlString
|
||||||
export let docQuery: DocumentQuery<Contact> | undefined = {}
|
export let docQuery: DocumentQuery<Contact> | undefined = {}
|
||||||
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
const query = createQuery()
|
const query = createQuery()
|
||||||
|
|
||||||
$: query.query<Contact>(_class, { _id: { $in: items } }, (result) => {
|
$: query.query<Contact>(_class, { _id: { $in: items ?? [] } }, (result) => {
|
||||||
contacts = result
|
contacts = result
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -40,8 +40,7 @@
|
|||||||
createFocusManager,
|
createFocusManager,
|
||||||
getCurrentResolvedLocation,
|
getCurrentResolvedLocation,
|
||||||
navigate,
|
navigate,
|
||||||
showPopup,
|
showPopup
|
||||||
deviceOptionsStore as deviceInfo
|
|
||||||
} from '@hcengineering/ui'
|
} from '@hcengineering/ui'
|
||||||
import { ContextMenu, DocNavLink, ParentsNavigator } from '@hcengineering/view-resources'
|
import { ContextMenu, DocNavLink, ParentsNavigator } from '@hcengineering/view-resources'
|
||||||
import view from '@hcengineering/view'
|
import view from '@hcengineering/view'
|
||||||
@ -251,7 +250,6 @@
|
|||||||
placeholder={tracker.string.IssueTitlePlaceholder}
|
placeholder={tracker.string.IssueTitlePlaceholder}
|
||||||
kind="large-style"
|
kind="large-style"
|
||||||
on:blur={save}
|
on:blur={save}
|
||||||
autoFocus={!$deviceInfo.isMobile}
|
|
||||||
/>
|
/>
|
||||||
<div class="w-full mt-6">
|
<div class="w-full mt-6">
|
||||||
<AttachmentStyleBoxEditor
|
<AttachmentStyleBoxEditor
|
||||||
|
Loading…
Reference in New Issue
Block a user