diff --git a/app/actions/websocket/index.ts b/app/actions/websocket/index.ts index dd129b336..84cebc33b 100644 --- a/app/actions/websocket/index.ts +++ b/app/actions/websocket/index.ts @@ -24,6 +24,7 @@ import {handleNewPostEvent, handlePostDeleted, handlePostEdited, handlePostUnrea import {handlePreferenceChangedEvent, handlePreferencesChangedEvent, handlePreferencesDeletedEvent} from './preferences'; import {handleAddCustomEmoji, handleReactionRemovedFromPostEvent, handleReactionAddedToPostEvent} from './reactions'; import {handleUserRoleUpdatedEvent, handleTeamMemberRoleUpdatedEvent, handleRoleUpdatedEvent} from './roles'; +import {handleLicenseChangedEvent, handleConfigChangedEvent} from './system'; import {handleLeaveTeamEvent, handleUserAddedToTeamEvent, handleUpdateTeamEvent} from './teams'; import {handleUserUpdatedEvent, handleUserTypingEvent} from './users'; @@ -294,11 +295,7 @@ export async function handleEvent(serverUrl: string, msg: WebSocketMessage) { case WebsocketEvents.TYPING: handleUserTypingEvent(serverUrl, msg); break; - case WebsocketEvents.HELLO: - break; - // handleHelloEvent(msg); - // break; case WebsocketEvents.REACTION_ADDED: handleReactionAddedToPostEvent(serverUrl, msg); break; @@ -312,13 +309,13 @@ export async function handleEvent(serverUrl: string, msg: WebSocketMessage) { break; case WebsocketEvents.LICENSE_CHANGED: + handleLicenseChangedEvent(serverUrl, msg); break; - // return dispatch(handleLicenseChangedEvent(msg)); case WebsocketEvents.CONFIG_CHANGED: + handleConfigChangedEvent(serverUrl, msg); break; - // return dispatch(handleConfigChangedEvent(msg)); case WebsocketEvents.OPEN_DIALOG: break; diff --git a/app/actions/websocket/system.ts b/app/actions/websocket/system.ts new file mode 100644 index 000000000..857e8516f --- /dev/null +++ b/app/actions/websocket/system.ts @@ -0,0 +1,41 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {SYSTEM_IDENTIFIERS} from '@app/constants/database'; +import DatabaseManager from '@database/manager'; + +export async function handleLicenseChangedEvent(serverUrl: string, msg: WebSocketMessage): Promise { + const operator = DatabaseManager.serverDatabases[serverUrl]?.operator; + if (!operator) { + return; + } + + try { + const license = msg.data.license; + const systems: IdValue[] = [{ + id: SYSTEM_IDENTIFIERS.LICENSE, + value: JSON.stringify(license), + }]; + await operator.handleSystem({systems, prepareRecordsOnly: false}); + } catch { + // do nothing + } +} + +export async function handleConfigChangedEvent(serverUrl: string, msg: WebSocketMessage): Promise { + const operator = DatabaseManager.serverDatabases[serverUrl]?.operator; + if (!operator) { + return; + } + + try { + const config = msg.data.config; + const systems: IdValue[] = [{ + id: SYSTEM_IDENTIFIERS.CONFIG, + value: JSON.stringify(config), + }]; + await operator.handleSystem({systems, prepareRecordsOnly: false}); + } catch { + // do nothing + } +}