From e8c24fd2d415f58bfc1b8efc23fffba7a47d1fa7 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Wed, 3 Feb 2021 23:24:12 -0800 Subject: [PATCH] Add alert message for global notifications --- web/pages/_app.tsx | 10 ++++--- .../components/config/edit-server-details.tsx | 10 +++++++ web/pages/components/config/edit-storage.tsx | 15 ++++------- .../config/video-variants-table.tsx | 5 ++++ web/pages/components/main-layout.tsx | 20 +++++++++++++- web/utils/alert-message-context.tsx | 27 +++++++++++++++++++ 6 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 web/utils/alert-message-context.tsx diff --git a/web/pages/_app.tsx b/web/pages/_app.tsx index 448ebecdd..208b832ff 100644 --- a/web/pages/_app.tsx +++ b/web/pages/_app.tsx @@ -10,14 +10,18 @@ import '../styles/config-formfields.scss'; import { AppProps } from 'next/app'; import ServerStatusProvider from '../utils/server-status-context'; +import AlertMessageProvider from '../utils/alert-message-context'; + import MainLayout from './components/main-layout'; function App({ Component, pageProps }: AppProps) { return ( - - - + + + + + ); } diff --git a/web/pages/components/config/edit-server-details.tsx b/web/pages/components/config/edit-server-details.tsx index 679922121..82389086f 100644 --- a/web/pages/components/config/edit-server-details.tsx +++ b/web/pages/components/config/edit-server-details.tsx @@ -6,6 +6,8 @@ import { TEXTFIELD_TYPE_NUMBER, TEXTFIELD_TYPE_PASSWORD } from './form-textfield import TextFieldWithSubmit from './form-textfield-with-submit'; import { ServerStatusContext } from '../../../utils/server-status-context'; +import { AlertMessageContext } from '../../../utils/alert-message-context'; + import { TEXTFIELD_PROPS_FFMPEG, TEXTFIELD_PROPS_RTMP_PORT, @@ -18,6 +20,8 @@ import { UpdateArgs } from '../../../types/config-section'; export default function EditInstanceDetails() { const [formDataValues, setFormDataValues] = useState(null); const serverStatusData = useContext(ServerStatusContext); + const { setMessage } = useContext(AlertMessageContext); + const { serverConfig } = serverStatusData || {}; const { streamKey, ffmpegPath, rtmpServerPort, webServerPort } = serverConfig; @@ -46,6 +50,10 @@ export default function EditInstanceDetails() { }); }; + const showConfigurationRestartMessage = () => { + setMessage('Updating server settings requires a restart of your Owncast server.') + } + function generateStreamKey() { let key = ''; for (let i = 0; i < 3; i += 1) { @@ -102,6 +110,7 @@ export default function EditInstanceDetails() { initialValue={webServerPort} type={TEXTFIELD_TYPE_NUMBER} onChange={handleFieldChange} + onSubmit={showConfigurationRestartMessage} /> ); diff --git a/web/pages/components/config/edit-storage.tsx b/web/pages/components/config/edit-storage.tsx index b6df52749..2a12a6846 100644 --- a/web/pages/components/config/edit-storage.tsx +++ b/web/pages/components/config/edit-storage.tsx @@ -3,6 +3,8 @@ import classNames from 'classnames'; import React, { useContext, useState, useEffect } from 'react'; import { UpdateArgs } from '../../../types/config-section'; import { ServerStatusContext } from '../../../utils/server-status-context'; +import { AlertMessageContext } from '../../../utils/alert-message-context'; + import { postConfigUpdateToAPI, API_S3_INFO, @@ -56,6 +58,8 @@ export default function EditStorage() { const serverStatusData = useContext(ServerStatusContext); const { serverConfig, setFieldInConfigState } = serverStatusData || {}; + const {message, setMessage} = useContext(AlertMessageContext); + const { s3 } = serverConfig; const { accessKey = '', @@ -114,6 +118,7 @@ export default function EditStorage() { setSubmitStatus(createInputStatus(STATUS_SUCCESS, 'Updated.')); resetTimer = setTimeout(resetStates, RESET_TIMEOUT); setSaved(true); + setMessage('Changing your storage configuration will take place the next time you start a new stream.'); }, onError: (message: string) => { setSubmitStatus(createInputStatus(STATUS_ERROR, message)); @@ -139,14 +144,6 @@ export default function EditStorage() { enabled: shouldDisplayForm, }); - const saveWarning = saved ? ( - ) : null; - const isSaveable = checkSaveable(formDataValues, s3); return ( @@ -219,8 +216,6 @@ export default function EditStorage() { - {saveWarning} -
{statusIndicatorWithThumb} + + {headerAlertMessage} + {children}