Skip to content

Commit eb57ec3

Browse files
authored
feat: add sse event handler for space enabled (#2652)
1 parent 8b22e46 commit eb57ec3

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

packages/web-client/src/sse/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export enum MESSAGE_TYPE {
1313
FOLDER_CREATED = 'folder-created',
1414
SPACE_CREATED = 'space-created',
1515
SPACE_DISABLED = 'space-disabled',
16+
SPACE_ENABLED = 'space-enabled',
1617
SPACE_DELETED = 'space-deleted',
1718
SPACE_MEMBER_ADDED = 'space-member-added',
1819
SPACE_MEMBER_REMOVED = 'space-member-removed',

packages/web-runtime/src/container/bootstrap.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ import {
8484
SseEventWrapperOptions,
8585
onSSESpaceCreatedEvent,
8686
onSSESpaceDisabledEvent,
87-
onSSESpaceDeletedEvent
87+
onSSESpaceDeletedEvent,
88+
onSSESpaceEnabledEvent
8889
} from './sse'
8990
import { loadAppTranslations } from '../helpers/language'
9091
import { urlJoin } from '@opencloud-eu/web-client'
@@ -990,6 +991,15 @@ export const registerSSEEventListeners = ({
990991
})
991992
)
992993

994+
clientService.sseAuthenticated.addEventListener(MESSAGE_TYPE.SPACE_ENABLED, (msg) =>
995+
sseEventWrapper({
996+
topic: MESSAGE_TYPE.SPACE_ENABLED,
997+
msg,
998+
...sseEventWrapperOptions,
999+
method: onSSESpaceEnabledEvent
1000+
})
1001+
)
1002+
9931003
clientService.sseAuthenticated.addEventListener(MESSAGE_TYPE.SPACE_DISABLED, (msg) =>
9941004
sseEventWrapper({
9951005
topic: MESSAGE_TYPE.SPACE_DISABLED,

packages/web-runtime/src/container/sse/spaces.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,28 @@ export const onSSESpaceCreatedEvent = async ({
2323
resourcesStore.upsertResource(space)
2424
}
2525

26+
export const onSSESpaceEnabledEvent = async ({
27+
sseData,
28+
resourcesStore,
29+
spacesStore,
30+
clientService,
31+
router
32+
}: SSEEventOptions) => {
33+
if (sseData.initiatorid === clientService.initiatorId) {
34+
// If initiated by current client (browser tab), action unnecessary. Web manages its own logic, return early.
35+
return
36+
}
37+
38+
const space = await clientService.graphAuthenticated.drives.getDrive(sseData.spaceid)
39+
spacesStore.upsertSpace(space)
40+
41+
if (!isLocationSpacesActive(router, 'files-spaces-projects')) {
42+
return
43+
}
44+
45+
resourcesStore.upsertResource(space)
46+
}
47+
2648
export const onSSESpaceDisabledEvent = async ({
2749
sseData,
2850
resourcesStore,

0 commit comments

Comments
 (0)