From 8bac350f611aa0f300245214753c68855698102b Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Sun, 14 Mar 2021 11:39:07 -0700 Subject: [PATCH] Add server setting to disable chat (#61) * Add server setting to disable chat * Prettified Code! Co-authored-by: gabek --- web/components/config/edit-server-details.tsx | 15 ++++++++++++++- web/types/config-section.ts | 1 + web/utils/config-constants.tsx | 9 +++++++++ web/utils/server-status-context.tsx | 1 + 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/web/components/config/edit-server-details.tsx b/web/components/config/edit-server-details.tsx index c13acfc9b..e3d2f76c0 100644 --- a/web/components/config/edit-server-details.tsx +++ b/web/components/config/edit-server-details.tsx @@ -4,6 +4,7 @@ import { CopyOutlined, RedoOutlined } from '@ant-design/icons'; import { TEXTFIELD_TYPE_NUMBER, TEXTFIELD_TYPE_PASSWORD } from './form-textfield'; import TextFieldWithSubmit from './form-textfield-with-submit'; +import ToggleSwitch from './form-toggleswitch'; import { ServerStatusContext } from '../../utils/server-status-context'; import { AlertMessageContext } from '../../utils/alert-message-context'; @@ -13,6 +14,7 @@ import { TEXTFIELD_PROPS_RTMP_PORT, TEXTFIELD_PROPS_STREAM_KEY, TEXTFIELD_PROPS_WEB_PORT, + FIELD_PROPS_DISABLE_CHAT, } from '../../utils/config-constants'; import { UpdateArgs } from '../../types/config-section'; @@ -27,7 +29,7 @@ export default function EditInstanceDetails() { const { serverConfig } = serverStatusData || {}; - const { streamKey, ffmpegPath, rtmpServerPort, webServerPort, yp } = serverConfig; + const { chatDisabled, streamKey, ffmpegPath, rtmpServerPort, webServerPort, yp } = serverConfig; const [copyIsVisible, setCopyVisible] = useState(false); @@ -39,6 +41,7 @@ export default function EditInstanceDetails() { ffmpegPath, rtmpServerPort, webServerPort, + chatDisabled, }); }, [serverConfig]); @@ -85,6 +88,10 @@ export default function EditInstanceDetails() { }); } + function handleChatDisableChange(disabled: boolean) { + handleFieldChange({ fieldName: 'chatDisabled', value: disabled }); + } + return (
@@ -138,6 +145,12 @@ export default function EditInstanceDetails() { onChange={handleFieldChange} onSubmit={showConfigurationRestartMessage} /> + {yp.enabled && ( diff --git a/web/types/config-section.ts b/web/types/config-section.ts index 31cdd1ba4..ee565782b 100644 --- a/web/types/config-section.ts +++ b/web/types/config-section.ts @@ -88,4 +88,5 @@ export interface ConfigDetails { webServerPort: string; yp: ConfigDirectoryFields; videoSettings: VideoSettingsFields; + chatDisabled: boolean; } diff --git a/web/utils/config-constants.tsx b/web/utils/config-constants.tsx index 909ae2580..e01d793ee 100644 --- a/web/utils/config-constants.tsx +++ b/web/utils/config-constants.tsx @@ -25,6 +25,7 @@ export const API_VIDEO_SEGMENTS = '/video/streamlatencylevel'; export const API_VIDEO_VARIANTS = '/video/streamoutputvariants'; export const API_WEB_PORT = '/webserverport'; export const API_YP_SWITCH = '/directoryenabled'; +export const API_CHAT_DISABLE = '/chat/disable'; export async function postConfigUpdateToAPI(args: ApiPostArgs) { const { apiPath, data, onSuccess, onError } = args; @@ -159,6 +160,14 @@ export const DEFAULT_VARIANT_STATE: VideoVariant = { name: '', }; +export const FIELD_PROPS_DISABLE_CHAT = { + apiPath: API_CHAT_DISABLE, + configPath: 'chatDisabled', + label: 'Disable chat', + tip: 'Hide the web chat interface.', + useSubmit: true, +}; + export const VIDEO_VARIANT_SETTING_DEFAULTS = { // this one is currently unused audioBitrate: { diff --git a/web/utils/server-status-context.tsx b/web/utils/server-status-context.tsx index 689934525..803ecd7e3 100644 --- a/web/utils/server-status-context.tsx +++ b/web/utils/server-status-context.tsx @@ -23,6 +23,7 @@ export const initialServerConfigState: ConfigDetails = { ffmpegPath: '', rtmpServerPort: '', webServerPort: '', + chatDisabled: false, s3: { accessKey: '', acl: '',