diff --git a/plugins/love-resources/src/components/EditRoom.svelte b/plugins/love-resources/src/components/EditRoom.svelte
index 4a5d3a0304..970cd09657 100644
--- a/plugins/love-resources/src/components/EditRoom.svelte
+++ b/plugins/love-resources/src/components/EditRoom.svelte
@@ -75,7 +75,13 @@
connectLabel = love.string.StartMeeting
}
- function showConnectionButton (object: Room, isConnected: boolean, myOffice?: Room, currentRoom?: Room): boolean {
+ function showConnectionButton (
+ object: Room,
+ connecting: boolean,
+ isConnected: boolean,
+ myOffice?: Room,
+ currentRoom?: Room
+ ): boolean {
// Do not show connect button in my office
if (object._id === myOffice?._id) return false
// Show during connecting with spinner
@@ -98,7 +104,7 @@
focusIndex={1}
/>
- {#if showConnectionButton(object, $isConnected, $myOffice, $currentRoom)}
+ {#if showConnectionButton(object, connecting, $isConnected, $myOffice, $currentRoom)}
{/if}
diff --git a/plugins/love-resources/src/utils.ts b/plugins/love-resources/src/utils.ts
index 1c3681f244..00c4a9e363 100644
--- a/plugins/love-resources/src/utils.ts
+++ b/plugins/love-resources/src/utils.ts
@@ -374,16 +374,12 @@ lk.on(RoomEvent.RecordingStatusChanged, (evt) => {
isRecording.set(evt)
})
lk.on(RoomEvent.RoomMetadataChanged, (metadata) => {
- try {
- const data = JSON.parse(metadata) as RoomMetadata
- if (data.recording !== undefined) {
- isRecording.set(data.recording)
- }
- if (data.transcription !== undefined) {
- isTranscription.set(data.transcription === TranscriptionStatus.InProgress)
- }
- } catch (err: any) {
- Analytics.handleError(err)
+ const data = parseMetadata(metadata)
+ if (data.recording !== undefined) {
+ isRecording.set(data.recording)
+ }
+ if (data.transcription !== undefined) {
+ isTranscription.set(data.transcription === TranscriptionStatus.InProgress)
}
})
@@ -392,7 +388,7 @@ lk.on(RoomEvent.Connected, () => {
sendMessage({ type: 'connect', value: true })
isCurrentInstanceConnected.set(true)
isRecording.set(lk.isRecording)
- void initRoomMetadata(lk.metadata)
+ void initRoom()
Analytics.handleEvent(LoveEvents.ConnectedToRoom)
})
lk.on(RoomEvent.Disconnected, () => {
@@ -402,25 +398,19 @@ lk.on(RoomEvent.Disconnected, () => {
Analytics.handleEvent(LoveEvents.DisconnectedFromRoom)
})
-async function initRoomMetadata (metadata: string | undefined): Promise {
- let data: RoomMetadata
- try {
- data = metadata == null || metadata === '' ? {} : JSON.parse(metadata)
- } catch (err: any) {
- data = {}
- Analytics.handleError(err)
- }
-
- isTranscription.set(data.transcription === TranscriptionStatus.InProgress)
-
+async function initRoom (): Promise {
const room = get(currentRoom)
- const meetingMinutes = get(currentMeetingMinutes)
- const isValidMeeting =
- meetingMinutes != null && meetingMinutes.attachedTo === room?._id && meetingMinutes.status === MeetingStatus.Active
-
- if (room != null && !isValidMeeting) {
+ if (room !== undefined) {
await initMeetingMinutes(room)
}
+ await initRoomMetadata(lk.metadata)
+}
+
+async function initRoomMetadata (metadata: string | undefined): Promise {
+ const room = get(currentRoom)
+ const data: RoomMetadata = parseMetadata(metadata)
+
+ isTranscription.set(data.transcription === TranscriptionStatus.InProgress)
if (
(data.transcription == null || data.transcription === TranscriptionStatus.Idle) &&
@@ -434,6 +424,15 @@ async function initRoomMetadata (metadata: string | undefined): Promise {
}
}
+function parseMetadata (metadata: string | undefined): RoomMetadata {
+ try {
+ return metadata == null || metadata === '' ? {} : JSON.parse(metadata)
+ } catch (err: any) {
+ Analytics.handleError(err)
+ return {}
+ }
+}
+
async function withRetries (fn: () => Promise, retries: number, delay: number): Promise {
for (let attempt = 0; attempt < retries; attempt++) {
try {
@@ -738,7 +737,6 @@ export async function connectRoom (
3,
1000
)
- await initMeetingMinutes(room)
} catch (err) {
console.error(err)
await leaveRoom(currentInfo, get(myOffice))