import React, { useState, useEffect } from 'react'; import { Table, Typography, Input } from 'antd'; import { SERVER_CONFIG, fetchData, FETCH_INTERVAL } from './utils/apis'; import { isEmptyObject } from './utils/format'; const { Title } = Typography; const { TextArea } = Input; function KeyValueTable({ title, data }) { const columns = [ { title: "Name", dataIndex: "name", key: "name", }, { title: "Value", dataIndex: "value", key: "value", }, ]; return (
{title} ); } function SocialHandles({ config }) { 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 InstanceDetails({ config }) { console.log(config) if (!config || isEmptyObject(config)) { return null; } const { instanceDetails = {}, yp, streamKey, ffmpegPath, webServerPort } = config; const data = [ { name: "Server name", value: instanceDetails.name, }, { name: "Title", value: instanceDetails.title, }, { name: "Summary", value: instanceDetails.summary, }, { name: "Logo", value: instanceDetails.logo.large, }, { name: "Tags", value: instanceDetails.tags.join(", "), }, { name: "NSFW", value: instanceDetails.nsfw.toString(), }, { name: "Shows in Owncast directory", value: yp.enabled.toString(), }, ]; const configData = [ { name: "Stream key", value: streamKey, }, { name: "ffmpeg path", value: ffmpegPath, }, { name: "Web server port", value: webServerPort, }, ]; return ( <> ); } function VideoVariants({ config }) { 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 Storage({ config }) { if (!config) { return null; } const data = [ { name: "Enabled", value: config.s3.enabled.toString(), }, { name: "Endpoint", value: config.s3.endpoint, }, { name: "Access Key", value: config.s3.accessKey, }, { name: "Secret", value: config.s3.secret, }, { name: "Bucket", value: config.s3.bucket, }, { name: "Region", value: config.s3.region, }, ]; return } function PageContent({ config }) { if (!config) { return null; } return (
Page content