diff --git a/web/pages/components/main-layout.tsx b/web/pages/components/main-layout.tsx index 45b85759eb..61da0db191 100644 --- a/web/pages/components/main-layout.tsx +++ b/web/pages/components/main-layout.tsx @@ -88,7 +88,7 @@ export default function MainLayout(props) { } title="Utilities"> - Update Server Configuration + Server Configuration Change Stream Key diff --git a/web/pages/update-server-config.tsx b/web/pages/update-server-config.tsx index 3abc521781..2016565079 100644 --- a/web/pages/update-server-config.tsx +++ b/web/pages/update-server-config.tsx @@ -1,23 +1,22 @@ import React, { useState, useEffect, useContext } from 'react'; +import { Table, Typography, Input } from 'antd'; import { SERVER_CONFIG, fetchData, FETCH_INTERVAL } from './utils/apis'; -import { BroadcastStatusContext } from './utils/broadcast-status-context'; -export default function ServerConfig() { - const context = useContext(BroadcastStatusContext); - const { broadcastActive } = context || {}; - +const { Title } = Typography; +const { TextArea } = Input; - const [clients, setClients] = useState({}); +export default function ServerConfig() { + const [config, setConfig] = useState(); const getInfo = async () => { try { const result = await fetchData(SERVER_CONFIG); console.log("viewers result", result) - setClients({ ...result }); + setConfig({ ...result }); } catch (error) { - setClients({ ...clients, message: error.message }); + setConfig({ ...config, message: error.message }); } }; @@ -36,10 +35,266 @@ export default function ServerConfig() { return (

Server Config

-

Display this data all pretty, most things will be editable in the future, not now.

-
- {JSON.stringify(clients)} +

+ Display this data all pretty, most things will be editable in the + future, not now. +

+
+ + + + + + + {JSON.stringify(config)}
); + + function InstanceDetails() { + console.log(config) + if (!config) { + return null; + } + + const data = [ + { + name: "Server name", + value: config.instanceDetails.name, + }, + { + name: "Title", + value: config.instanceDetails.title, + }, + { + name: "Summary", + value: config.instanceDetails.summary, + }, + { + name: "Logo", + value: config.instanceDetails.logo.large, + }, + { + name: "Tags", + value: config.instanceDetails.tags.join(", "), + }, + { + name: "NSFW", + value: config.instanceDetails.nsfw.toString(), + }, + { + name: "Shows in Owncast directory", + value: config.yp.enabled.toString(), + }, + ]; + + const configData = [ + { + name: "Stream key", + value: config.streamKey, + }, + { + name: "ffmpeg path", + value: config.ffmpegPath, + }, + { + name: "Web server port", + value: config.webServerPort, + }, + ]; + + return ( + <> + + + + ); + } + + function SocialHandles() { + if (!config) { + return null; + } + + const columns = [ + { + title: "Platform", + dataIndex: "platform", + key: "platform", + }, + { + title: "URL", + dataIndex: "url", + key: "url", + render: (url) => `${url}` + }, + ]; + + return ( +
+ Social Handles + + + ); + } + + function VideoVariants() { + if (!config) { + return null; + } + + const videoQualityColumns = [ + { + title: "Video bitrate", + dataIndex: "videoBitrate", + key: "videoBitrate", + render: (bitrate) => + bitrate === 0 || !bitrate ? "Passthrough" : `${bitrate} kbps`, + }, + { + title: "Framerate", + dataIndex: "framerate", + key: "framerate", + }, + { + title: "Encoder preset", + dataIndex: "encoderPreset", + key: "framerate", + }, + { + title: "Audio bitrate", + dataIndex: "audioBitrate", + key: "audioBitrate", + render: (bitrate) => + bitrate === 0 || !bitrate ? "Passthrough" : `${bitrate} kbps`, + }, + ]; + + const miscVideoSettingsColumns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + }, + { + title: "Value", + dataIndex: "value", + key: "value", + }, + ]; + + const miscVideoSettings = [ + { + name: "Segment length", + value: config.videoSettings.segmentLengthSeconds, + }, + { + name: "Number of segments", + value: config.videoSettings.numberOfPlaylistItems, + }, + ]; + + return ( +
+ Video configuration +
+ +
+ + ); + } + + + function PageContent() { + if (!config) { + return null; + } + + return ( +
+ Page content +