From 9cb8cae8b5caf23d02bba5afe9df6244bed70e91 Mon Sep 17 00:00:00 2001 From: Jason Frerich Date: Thu, 10 Feb 2022 05:16:25 -0600 Subject: [PATCH] [Gekidou MM-39729] Websocket Events - hello, license, config (#5926) * handle license changed * move inside trycatch * handle config changed * remove hello WS handler. Not needed for V2. https://community.mattermost.com/core/pl/9tom9ck3cty1pk9ft64m3jzj9w --- app/actions/websocket/index.ts | 9 +++----- app/actions/websocket/system.ts | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 app/actions/websocket/system.ts 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 + } +}