diff --git a/models/love/src/index.ts b/models/love/src/index.ts index 775e5d556b4..cb7139738f9 100644 --- a/models/love/src/index.ts +++ b/models/love/src/index.ts @@ -31,8 +31,6 @@ import { import { type DevicesPreference, type Floor, - type Invite, - type JoinRequest, loveId, type Meeting, type MeetingMinutes, @@ -40,7 +38,6 @@ import { type MeetingSchedule, type Office, type ParticipantInfo, - type RequestStatus, type Room, type RoomAccess, type RoomInfo, @@ -163,31 +160,6 @@ export class TParticipantInfo extends TDoc implements ParticipantInfo { account!: AccountUuid | null } -@Model(love.class.JoinRequest, core.class.Doc, DOMAIN_TRANSIENT) -export class TJoinRequest extends TDoc implements JoinRequest { - @Prop(TypeRef(contact.class.Person), getEmbeddedLabel('From')) - person!: Ref - - @Prop(TypeRef(love.class.Room), love.string.Room) - room!: Ref - - status!: RequestStatus -} - -@Model(love.class.Invite, core.class.Doc, DOMAIN_TRANSIENT) -export class TInvite extends TDoc implements Invite { - @Prop(TypeRef(contact.class.Person), getEmbeddedLabel('From')) - from!: Ref - - @Prop(TypeRef(contact.class.Person), getEmbeddedLabel('Target')) - target!: Ref - - @Prop(TypeRef(love.class.Room), love.string.Room) - room!: Ref - - status!: RequestStatus -} - @Model(love.class.DevicesPreference, preference.class.Preference) export class TDevicesPreference extends TPreference implements DevicesPreference { blurRadius!: number @@ -272,10 +244,8 @@ export function createModel (builder: Builder): void { TFloor, TOffice, TParticipantInfo, - TJoinRequest, TDevicesPreference, TRoomInfo, - TInvite, TMeeting, TMeetingMinutes, TMeetingSchedule @@ -388,36 +358,6 @@ export function createModel (builder: Builder): void { love.ids.LoveNotificationGroup ) - builder.createDoc( - notification.class.NotificationType, - core.space.Model, - { - hidden: false, - generated: false, - label: love.string.InivitingLabel, - group: love.ids.LoveNotificationGroup, - txClasses: [core.class.TxCreateDoc], - objectClass: love.class.Invite, - defaultEnabled: true - }, - love.ids.InviteNotification - ) - - builder.createDoc( - notification.class.NotificationType, - core.space.Model, - { - hidden: false, - generated: false, - label: love.string.KnockingLabel, - group: love.ids.LoveNotificationGroup, - txClasses: [], - objectClass: love.class.JoinRequest, - defaultEnabled: true - }, - love.ids.KnockNotification - ) - builder.createDoc(notification.class.NotificationProviderDefaults, core.space.Model, { provider: notification.providers.SoundNotificationProvider, excludeIgnore: [love.ids.KnockNotification], @@ -514,11 +454,6 @@ export function createModel (builder: Builder): void { components: { input: { component: chunter.component.ChatMessageInput, props: { collection: 'messages' } } } }) - builder.mixin(love.class.JoinRequest, core.class.Class, core.mixin.TxAccessLevel, { - createAccessLevel: AccountRole.Guest, - removeAccessLevel: AccountRole.Guest - }) - builder.mixin(love.class.ParticipantInfo, core.class.Class, core.mixin.TxAccessLevel, { createAccessLevel: AccountRole.Guest, updateAccessLevel: AccountRole.Guest diff --git a/models/server-love/src/index.ts b/models/server-love/src/index.ts index c2984c8088b..2ddca004b31 100644 --- a/models/server-love/src/index.ts +++ b/models/server-love/src/index.ts @@ -64,22 +64,6 @@ export function createModel (builder: Builder): void { } }) - builder.createDoc(serverCore.class.Trigger, core.space.Model, { - trigger: serverLove.trigger.OnKnock, - txMatch: { - objectClass: love.class.JoinRequest, - _class: core.class.TxCreateDoc - } - }) - - builder.createDoc(serverCore.class.Trigger, core.space.Model, { - trigger: serverLove.trigger.OnInvite, - txMatch: { - objectClass: love.class.Invite, - _class: core.class.TxCreateDoc - } - }) - builder.mixin(love.class.MeetingMinutes, core.class.Class, serverCore.mixin.SearchPresenter, { searchIcon: love.icon.MeetingMinutes, title: [['title']] diff --git a/packages/presentation/package.json b/packages/presentation/package.json index 859147965aa..ab2678614ed 100644 --- a/packages/presentation/package.json +++ b/packages/presentation/package.json @@ -62,6 +62,7 @@ "@hcengineering/theme": "^0.6.5", "@hcengineering/retry": "^0.6.0", "@hcengineering/hulylake-client": "^0.6.0", + "@hcengineering/hulypulse-client": "^0.6.0", "fast-equals": "^5.2.2", "png-chunks-extract": "^1.0.0", "svelte": "^4.2.20", diff --git a/packages/presentation/src/index.ts b/packages/presentation/src/index.ts index 899c0ed61ce..ba646872468 100644 --- a/packages/presentation/src/index.ts +++ b/packages/presentation/src/index.ts @@ -78,3 +78,4 @@ export * from './drawingCommand' export * from './drawingCommandsProcessor' export * from './link-preview' export * from './communication' +export * from './pulse' diff --git a/plugins/presence-resources/src/pulse.ts b/packages/presentation/src/pulse.ts similarity index 95% rename from plugins/presence-resources/src/pulse.ts rename to packages/presentation/src/pulse.ts index 52b379090ef..93681b8093a 100644 --- a/plugins/presence-resources/src/pulse.ts +++ b/packages/presentation/src/pulse.ts @@ -13,7 +13,7 @@ import { HulypulseClient } from '@hcengineering/hulypulse-client' import { getMetadata } from '@hcengineering/platform' -import presentation from '@hcengineering/presentation' +import presentation from './plugin' let pulseclient: HulypulseClient | undefined diff --git a/packages/ui/src/popups.ts b/packages/ui/src/popups.ts index 705befff00e..b82eb6cda64 100644 --- a/packages/ui/src/popups.ts +++ b/packages/ui/src/popups.ts @@ -143,7 +143,7 @@ export function showPopup ( id, close: closePopupOp, update: (props) => { - updatePopup(id, props) + updatePopup(id, { props }) } } } diff --git a/plugins/love-resources/package.json b/plugins/love-resources/package.json index a2782eea1e4..fe69c4e322c 100644 --- a/plugins/love-resources/package.json +++ b/plugins/love-resources/package.json @@ -65,6 +65,7 @@ "@hcengineering/emoji-resources": "^0.6.0", "@hcengineering/theme": "^0.6.5", "@hcengineering/account-client": "^0.6.0", + "@hcengineering/hulypulse-client": "^0.6.0", "@livekit/krisp-noise-filter": "^0.3.0", "@livekit/track-processors": "^0.5.6", "livekit-client": "^2.15.6", diff --git a/plugins/love-resources/src/components/PersonActionPopup.svelte b/plugins/love-resources/src/components/PersonActionPopup.svelte index db142f9d4f8..192125b637e 100644 --- a/plugins/love-resources/src/components/PersonActionPopup.svelte +++ b/plugins/love-resources/src/components/PersonActionPopup.svelte @@ -5,7 +5,8 @@ import { ActionIcon } from '@hcengineering/ui' import love from '../plugin' import { myInfo } from '../stores' - import { joinMeeting, kick, sendInvites } from '../meetings' + import { joinMeeting, kick } from '../meetings' + import { sendInvites } from '../invites' export let room: Room export let person: Ref @@ -30,7 +31,7 @@ label={love.string.Invite} icon={love.icon.Invite} action={() => { - void sendInvites([person]) + sendInvites([person]) }} /> {#if room.access === RoomAccess.Knock} diff --git a/plugins/love-resources/src/components/WorkbenchExtension.svelte b/plugins/love-resources/src/components/WorkbenchExtension.svelte index 0091f5e31f2..c95321ec25b 100644 --- a/plugins/love-resources/src/components/WorkbenchExtension.svelte +++ b/plugins/love-resources/src/components/WorkbenchExtension.svelte @@ -5,6 +5,11 @@ import love from '../plugin' import { liveKitClient, lk } from '../utils' import { lkSessionConnected } from '../liveKitClient' + import { subscribeInviteRequests, unsubscribeInviteRequests } from '../invites' + import { Room } from '@hcengineering/love' + import { subscribeJoinRequests, unsubscribeJoinRequests } from '../joinRequests' + import { Ref } from '@hcengineering/core' + import { myInfo } from '../stores' let parentElement: HTMLDivElement @@ -33,13 +38,26 @@ } } - onMount(() => { + function subscribeRoomRequests (room: Ref | undefined): void { + unsubscribeJoinRequests() + .then(() => subscribeJoinRequests(room)) + .catch((e) => { + console.log(e) + }) + } + + $: subscribeRoomRequests($myInfo?.room) + + onMount(async () => { pushRootBarComponent('left', love.component.ControlExt, 20) lk.on(RoomEvent.TrackSubscribed, handleTrackSubscribed) lk.on(RoomEvent.TrackUnsubscribed, handleTrackUnsubscribed) + + await subscribeInviteRequests() }) onDestroy(async () => { + await unsubscribeInviteRequests() lk.off(RoomEvent.TrackSubscribed, handleTrackSubscribed) lk.off(RoomEvent.TrackUnsubscribed, handleTrackUnsubscribed) if ($lkSessionConnected) { diff --git a/plugins/love-resources/src/components/meeting/ControlExt.svelte b/plugins/love-resources/src/components/meeting/ControlExt.svelte index a1157f8ec06..7a990fc4d3a 100644 --- a/plugins/love-resources/src/components/meeting/ControlExt.svelte +++ b/plugins/love-resources/src/components/meeting/ControlExt.svelte @@ -14,29 +14,17 @@ --> diff --git a/plugins/love-resources/src/components/meeting/invites/InvitePopup.svelte b/plugins/love-resources/src/components/meeting/invites/InviteResponsePopup.svelte similarity index 82% rename from plugins/love-resources/src/components/meeting/invites/InvitePopup.svelte rename to plugins/love-resources/src/components/meeting/invites/InviteResponsePopup.svelte index 99e365eca15..f8777c6f940 100644 --- a/plugins/love-resources/src/components/meeting/invites/InvitePopup.svelte +++ b/plugins/love-resources/src/components/meeting/invites/InviteResponsePopup.svelte @@ -15,17 +15,16 @@ diff --git a/plugins/love-resources/src/components/meeting/invites/RequestPopup.svelte b/plugins/love-resources/src/components/meeting/invites/JoinResponsePopup.svelte similarity index 80% rename from plugins/love-resources/src/components/meeting/invites/RequestPopup.svelte rename to plugins/love-resources/src/components/meeting/invites/JoinResponsePopup.svelte index 9cacc9c0964..ce1f8696475 100644 --- a/plugins/love-resources/src/components/meeting/invites/RequestPopup.svelte +++ b/plugins/love-resources/src/components/meeting/invites/JoinResponsePopup.svelte @@ -15,30 +15,29 @@