Fix office load waiting before joining meeting (#8484)

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
This commit is contained in:
Chunosov
2025-04-07 16:41:43 +07:00
committed by GitHub
parent 57114e9888
commit 92889e2413
4 changed files with 29 additions and 23 deletions
@@ -29,7 +29,7 @@
myRequests,
rooms,
selectedFloor,
storePromise
waitForOfficeLoaded
} from '../stores'
import { connectToMeeting, tryConnect } from '../utils'
import Floor from './Floor.svelte'
@@ -72,11 +72,11 @@
const { sessionId, meetId, ...query } = loc.query ?? {}
loc.query = Object.keys(query).length === 0 ? undefined : query
navigate(loc, true)
if (sessionId != null) {
await $storePromise
if (sessionId) {
await waitForOfficeLoaded()
await connectToSession(sessionId)
} else if (meetId != null) {
await $storePromise
} else if (meetId) {
await waitForOfficeLoaded()
await connectToMeeting($personByIdStore, $myInfo, $infos, $myRequests, $invites, meetId)
}
})
@@ -23,7 +23,7 @@
import { getMetadata } from '@hcengineering/platform'
import love from '../plugin'
import { tryConnect, isConnected, isCurrentInstanceConnected, screenSharing } from '../utils'
import { infos, invites, myInfo, myRequests, storePromise, currentRoom } from '../stores'
import { infos, invites, myInfo, myRequests, waitForOfficeLoaded, currentRoom } from '../stores'
const localNav: boolean = $deviceInfo.navigator.visible
const savedNav = localStorage.getItem('love-visibleNav')
@@ -41,7 +41,7 @@
return
}
await $storePromise
await waitForOfficeLoaded()
const room = $currentRoom
if (room === undefined) return
@@ -34,7 +34,7 @@
import { aiBotSocialIdentityStore } from '@hcengineering/ai-bot-resources'
import love from '../plugin'
import { storePromise, currentRoom, infos, invites, myInfo, myRequests } from '../stores'
import { waitForOfficeLoaded, currentRoom, infos, invites, myInfo, myRequests } from '../stores'
import {
awaitConnect,
isConnected,
@@ -231,7 +231,7 @@
configured = true
await $storePromise
await waitForOfficeLoaded()
if (
!$isConnected &&
+20 -14
View File
@@ -72,7 +72,7 @@ function filterParticipantInfo (value: ParticipantInfo[]): ParticipantInfo[] {
return Array.from(map.values())
}
export const storePromise = writable<Promise<void>>(new Promise((resolve) => {}))
const officeLoaded = writable(false)
const query = createQuery(true)
const statusQuery = createQuery(true)
@@ -124,19 +124,25 @@ onClient(() => {
resolve()
})
)
storePromise.set(
new Promise((resolve) => {
void Promise.all([
roomPromise,
infoPromise,
floorPromise,
requestPromise,
preferencePromise,
invitesPromise
]).then(() => {
resolve()
})
})
void Promise.all([roomPromise, infoPromise, floorPromise, requestPromise, preferencePromise, invitesPromise]).then(
() => {
officeLoaded.set(true)
}
)
})
export async function waitForOfficeLoaded (): Promise<void> {
if (!get(officeLoaded)) {
await new Promise((resolve) => {
const unsubscribe = officeLoaded.subscribe((loaded) => {
if (loaded) {
unsubscribe()
resolve(null)
}
})
})
}
}
export const lockedRoom = writable<string>('')