owncast/web/utils/config-constants.tsx

585 lines
18 KiB
TypeScript
Raw Normal View History

2020-12-27 05:04:23 +03:00
// DEFAULT VALUES
import { fetchData, SERVER_CONFIG_UPDATE_URL } from './apis';
import { ApiPostArgs, VideoVariant, SocialHandle } from '../types/config-section';
reafctor: normalize component formatting (#2082) * refactor: move/rename BanUserButton file * refactor: move/rename Chart file * refactor: update generic component filenames to PascalCase * refactor: update config component filenames to PascalCase * refactor: update AdminLayout component filename to PascalCase * refactor: update/move VideoJS component * chore(eslint): disable bad react/require-default-props rule * refactor: normalize ActionButton component * refactor: normalize ActionButtonRow component * refactor: normalize FollowButton component * refactor: normalize NotifyButton component * refactor: normalize ChatActionMessage component * refactor: normalize ChatContainer component * refactor: normalize ChatJoinMessage component * refactor: normalize ChatModerationActionMenu component * refactor: normalize ChatModerationDetailsModal component * refactor: normalize ChatModeratorNotification component * refactor: normalize ChatSocialMessage component * refactor: normalize ChatSystemMessage component * refactor: normalize ChatTextField component * refactor: normalize ChatUserBadge component * refactor: normalize ChatUserMessage component * refactor: normalize ContentHeader component * refactor: normalize OwncastLogo component * refactor: normalize UserDropdown component * chore(eslint): modify react/function-component-definition rule * refactor: normalize CodecSelector component * refactor: update a bunch of functional components using eslint * refactor: update a bunch of functional components using eslint, pt2 * refactor: update a bunch of functional components using eslint, pt3 * refactor: replace all component->component default imports with named imports * refactor: replace all component-stories->component default imports with named imports * refactor: remove default exports from most components * chore(eslint): add eslint config files for the components and pages dirs * fix: use-before-define error in ChatContainer * Fix ChatContainer import * Only process .tsx files in Next builds Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2022-09-07 10:00:28 +03:00
import { TEXTFIELD_TYPE_URL } from '../components/config/TextField';
import { DEFAULT_TEXTFIELD_URL_PATTERN } from './urls';
2020-12-27 05:04:23 +03:00
export const TEXT_MAXLENGTH = 255;
2021-01-02 05:23:23 +03:00
export const RESET_TIMEOUT = 3000;
// CONFIG API ENDPOINTS
export const API_CUSTOM_CONTENT = '/pagecontent';
export const API_CUSTOM_CSS_STYLES = '/customstyles';
export const API_FFMPEG = '/ffmpegpath';
export const API_INSTANCE_URL = '/serverurl';
export const API_LOGO = '/logo';
export const API_NSFW_SWITCH = '/nsfw';
export const API_RTMP_PORT = '/rtmpserverport';
export const API_S3_INFO = '/s3';
export const API_SERVER_SUMMARY = '/serversummary';
2021-03-15 07:55:01 +03:00
export const API_SERVER_WELCOME_MESSAGE = '/welcomemessage';
export const API_SERVER_OFFLINE_MESSAGE = '/offlinemessage';
export const API_SERVER_NAME = '/name';
2021-01-19 21:34:06 +03:00
export const API_SOCIAL_HANDLES = '/socialhandles';
export const API_STREAM_KEY = '/key';
export const API_STREAM_TITLE = '/streamtitle';
export const API_TAGS = '/tags';
export const API_USERNAME = '/name';
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_HIDE_VIEWER_COUNT = '/hideviewercount';
export const API_CHAT_DISABLE = '/chat/disable';
export const API_CHAT_JOIN_MESSAGES_ENABLED = '/chat/joinmessagesenabled';
export const API_CHAT_ESTABLISHED_MODE = '/chat/establishedusermode';
2021-07-20 08:02:02 +03:00
export const API_CHAT_FORBIDDEN_USERNAMES = '/chat/forbiddenusernames';
export const API_CHAT_SUGGESTED_USERNAMES = '/chat/suggestedusernames';
2021-05-02 07:05:04 +03:00
export const API_EXTERNAL_ACTIONS = '/externalactions';
2021-03-23 06:34:52 +03:00
export const API_VIDEO_CODEC = '/video/codec';
export const API_SOCKET_HOST_OVERRIDE = '/sockethostoverride';
Admin social features (#408) * ActivityPub admin pages for configuration * Fix dev build * Add support for requiring follow approval. Closes https://github.com/owncast/owncast/issues/1208 * Point at admin version of followers endpoint * Add setting for toggling displaying fediverse engagement in admin. https://github.com/owncast/owncast/issues/1404 * Add instance URL textfield to federation config and disable federation if it is empty * If instance URL is not https disable federation * Tweak federation toggle text. Make go live message optional * Add federation info modal. Closes https://github.com/owncast/owncast/issues/1544 * Add support for blocked federated domains. For https://github.com/owncast/owncast/issues/1209 * Simplify fediverse post input * Add placeholder Fediverse icon * Tweak federation logo in admin menu. Closes https://github.com/owncast/owncast/issues/1603 * Add global button for composing a fediverse post. Closes https://github.com/owncast/owncast/issues/1610 * Federation -> Social * Add page for listing federated actions. Closes https://github.com/owncast/owncast/issues/1573 * Auto-close social post modal after success * Make user modal action buttons look nicer * Center and reduce width and center count column. Closes https://github.com/owncast/owncast/issues/1580 * Update the followers table to be clearer * Fix exception thrown when passing undefined * Disable federation settings if feature is disabled * Update enable social modal. For https://github.com/owncast/owncast/issues/1594 * Fix type props * Quiet, linter * Move compose button to the left * Add tooltip for compose button * Add NSFW toggle to federation config. Closes https://github.com/owncast/owncast/issues/1628 * Add support for blocking/removing followers. For https://github.com/owncast/owncast/issues/1630 * Allow editing the server url field even when federation is disabled * Continue to update the copy around the social features * Use relative path to action images. Fixes https://github.com/owncast/owncast/issues/1646 * Link IRIs and make action verbse present tense * Update caniuse
2022-01-13 00:52:37 +03:00
// Federation
export const API_FEDERATION_ENABLED = '/federation/enable';
export const API_FEDERATION_PRIVATE = '/federation/private';
export const API_FEDERATION_USERNAME = '/federation/username';
export const API_FEDERATION_GOLIVE_MESSAGE = '/federation/livemessage';
export const API_FEDERATION_SHOW_ENGAGEMENT = '/federation/showengagement';
export const API_FEDERATION_BLOCKED_DOMAINS = '/federation/blockdomains';
export async function postConfigUpdateToAPI(args: ApiPostArgs) {
2021-01-31 12:38:20 +03:00
const { apiPath, data, onSuccess, onError } = args;
const result = await fetchData(`${SERVER_CONFIG_UPDATE_URL}${apiPath}`, {
data,
method: 'POST',
auth: true,
});
if (result.success && onSuccess) {
2021-01-03 12:54:04 +03:00
onSuccess(result.message);
} else if (onError) {
2021-01-03 12:54:04 +03:00
onError(result.message);
}
}
// Some default props to help build out a TextField
export const TEXTFIELD_PROPS_SERVER_NAME = {
apiPath: API_SERVER_NAME,
configPath: 'instanceDetails',
maxLength: TEXT_MAXLENGTH,
placeholder: 'Owncast site name', // like "gothland"
label: 'Name',
tip: 'The name of your Owncast server',
required: true,
useTrimLead: true,
};
export const TEXTFIELD_PROPS_STREAM_TITLE = {
apiPath: API_STREAM_TITLE,
configPath: 'instanceDetails',
maxLength: 100,
placeholder: 'Doing cool things...',
label: 'Stream Title',
tip: 'What is your stream about today?',
};
export const TEXTFIELD_PROPS_SERVER_SUMMARY = {
apiPath: API_SERVER_SUMMARY,
configPath: 'instanceDetails',
maxLength: 500,
placeholder: '',
label: 'About',
tip: 'A brief blurb about you, your server, or what your stream is about.',
};
export const TEXTFIELD_PROPS_SERVER_OFFLINE_MESSAGE = {
apiPath: API_SERVER_OFFLINE_MESSAGE,
configPath: 'instanceDetails',
maxLength: 2500,
placeholder: 'An optional message you can leave people when your stream is not live.',
label: 'Offline Message',
tip: 'An optional message you can leave people when your stream is not live.',
};
2021-03-15 07:55:01 +03:00
export const TEXTFIELD_PROPS_SERVER_WELCOME_MESSAGE = {
apiPath: API_SERVER_WELCOME_MESSAGE,
configPath: 'instanceDetails',
maxLength: 2500,
2021-03-15 07:55:01 +03:00
placeholder: '',
label: 'Welcome Message',
2021-05-23 09:28:21 +03:00
tip: 'A system chat message sent to viewers when they first connect to chat. Leave blank to disable.',
2021-03-15 07:55:01 +03:00
};
export const TEXTFIELD_PROPS_LOGO = {
apiPath: API_LOGO,
configPath: 'instanceDetails',
maxLength: 255,
placeholder: '/img/mylogo.png',
label: 'Logo',
2022-01-14 22:19:53 +03:00
tip: 'Upload your logo if you have one. We recommend that you use a square image that is at least 256x256. SVGs are discouraged as they cannot be displayed on all social media platforms.',
};
export const TEXTFIELD_PROPS_STREAM_KEY = {
apiPath: API_STREAM_KEY,
configPath: '',
maxLength: TEXT_MAXLENGTH,
placeholder: 'abc123',
label: 'Stream Key',
2021-02-02 01:12:26 +03:00
tip: 'Save this key somewhere safe, you will need it to stream or login to the admin dashboard!',
required: true,
};
export const TEXTFIELD_PROPS_FFMPEG = {
apiPath: API_FFMPEG,
configPath: '',
maxLength: TEXT_MAXLENGTH,
placeholder: '/usr/local/bin/ffmpeg',
label: 'FFmpeg Path',
tip: 'Absolute file path of the FFMPEG application on your server',
required: true,
};
export const TEXTFIELD_PROPS_WEB_PORT = {
apiPath: API_WEB_PORT,
configPath: '',
maxLength: 6,
placeholder: '8080',
label: 'Owncast port',
tip: 'What port is your Owncast web server listening? Default is 8080',
required: true,
};
export const TEXTFIELD_PROPS_RTMP_PORT = {
apiPath: API_RTMP_PORT,
configPath: '',
maxLength: 6,
placeholder: '1935',
label: 'RTMP port',
tip: 'What port should accept inbound broadcasts? Default is 1935',
required: true,
};
export const TEXTFIELD_PROPS_INSTANCE_URL = {
apiPath: API_INSTANCE_URL,
configPath: 'yp',
maxLength: 255,
placeholder: 'https://owncast.mysite.com',
2021-02-17 22:17:07 +03:00
label: 'Server URL',
tip: 'The full url to your Owncast server.',
type: TEXTFIELD_TYPE_URL,
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
useTrim: true,
};
export const TEXTFIELD_PROPS_SOCKET_HOST_OVERRIDE = {
apiPath: API_SOCKET_HOST_OVERRIDE,
configPath: '',
maxLength: 255,
placeholder: 'https://owncast.mysite.com',
label: 'Websocket host override',
tip: 'The direct URL of your Owncast server.',
type: TEXTFIELD_TYPE_URL,
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
useTrim: true,
};
// MISC FIELDS
export const FIELD_PROPS_TAGS = {
apiPath: API_TAGS,
configPath: 'instanceDetails',
maxLength: 24,
placeholder: 'Add a new tag',
required: true,
label: '',
tip: '',
};
export const FIELD_PROPS_NSFW = {
apiPath: API_NSFW_SWITCH,
configPath: 'instanceDetails',
label: 'NSFW?',
2021-05-23 09:28:21 +03:00
tip: "Turn this ON if you plan to steam explicit or adult content. Please respectfully set this flag so unexpected eyes won't accidentally see it in the Directory.",
};
2021-01-03 15:03:18 +03:00
export const FIELD_PROPS_YP = {
apiPath: API_YP_SWITCH,
configPath: 'yp',
2021-02-17 22:17:07 +03:00
label: 'Enable directory',
tip: 'Turn this ON to request to show up in the directory.',
};
export const FIELD_PROPS_HIDE_VIEWER_COUNT = {
apiPath: API_HIDE_VIEWER_COUNT,
configPath: '',
label: 'Hide viewer count',
tip: 'Turn this ON to hide the viewer count the web page.',
};
2021-01-31 12:38:20 +03:00
export const DEFAULT_VARIANT_STATE: VideoVariant = {
2021-01-10 13:37:22 +03:00
framerate: 24,
videoPassthrough: false,
videoBitrate: 800,
audioPassthrough: true, // if false, then CAN set audiobitrate
audioBitrate: 0,
2021-01-31 09:53:00 +03:00
cpuUsageLevel: 3,
scaledHeight: null,
scaledWidth: null,
name: '',
2021-01-10 13:37:22 +03:00
};
2021-01-24 07:16:01 +03:00
export const FIELD_PROPS_DISABLE_CHAT = {
apiPath: API_CHAT_DISABLE,
2021-07-20 08:02:02 +03:00
configPath: '',
label: 'Chat',
tip: 'Turn the chat functionality on/off on your Owncast server.',
useSubmit: true,
};
export const FIELD_PROPS_CHAT_JOIN_MESSAGES_ENABLED = {
apiPath: API_CHAT_JOIN_MESSAGES_ENABLED,
configPath: '',
label: 'Join Messages',
tip: 'Show when a viewer joins the chat.',
useSubmit: true,
};
export const CHAT_ESTABLISHED_USER_MODE = {
apiPath: API_CHAT_ESTABLISHED_MODE,
configPath: '',
label: 'Established users only',
tip: 'Only users who have previously been established for some time may chat.',
useSubmit: true,
};
2021-07-20 08:02:02 +03:00
export const TEXTFIELD_PROPS_CHAT_FORBIDDEN_USERNAMES = {
apiPath: API_CHAT_FORBIDDEN_USERNAMES,
placeholder: 'username',
2021-07-20 08:02:02 +03:00
label: 'Forbidden usernames',
tip: 'A list of words in chat usernames you disallow.',
2021-06-22 06:19:00 +03:00
};
export const TEXTFIELD_PROPS_CHAT_SUGGESTED_USERNAMES = {
apiPath: API_CHAT_SUGGESTED_USERNAMES,
placeholder: 'username',
label: 'Default usernames',
tip: 'An optional list of chat usernames that new users get assigned. If the list holds less then 10 items, random names will be generated. Users can change their usernames afterwards and the same username may be given out multple times.',
min_not_reached: 'At least 10 items are required for this feature.',
no_entries: 'The default name generator is used.',
};
Admin social features (#408) * ActivityPub admin pages for configuration * Fix dev build * Add support for requiring follow approval. Closes https://github.com/owncast/owncast/issues/1208 * Point at admin version of followers endpoint * Add setting for toggling displaying fediverse engagement in admin. https://github.com/owncast/owncast/issues/1404 * Add instance URL textfield to federation config and disable federation if it is empty * If instance URL is not https disable federation * Tweak federation toggle text. Make go live message optional * Add federation info modal. Closes https://github.com/owncast/owncast/issues/1544 * Add support for blocked federated domains. For https://github.com/owncast/owncast/issues/1209 * Simplify fediverse post input * Add placeholder Fediverse icon * Tweak federation logo in admin menu. Closes https://github.com/owncast/owncast/issues/1603 * Add global button for composing a fediverse post. Closes https://github.com/owncast/owncast/issues/1610 * Federation -> Social * Add page for listing federated actions. Closes https://github.com/owncast/owncast/issues/1573 * Auto-close social post modal after success * Make user modal action buttons look nicer * Center and reduce width and center count column. Closes https://github.com/owncast/owncast/issues/1580 * Update the followers table to be clearer * Fix exception thrown when passing undefined * Disable federation settings if feature is disabled * Update enable social modal. For https://github.com/owncast/owncast/issues/1594 * Fix type props * Quiet, linter * Move compose button to the left * Add tooltip for compose button * Add NSFW toggle to federation config. Closes https://github.com/owncast/owncast/issues/1628 * Add support for blocking/removing followers. For https://github.com/owncast/owncast/issues/1630 * Allow editing the server url field even when federation is disabled * Continue to update the copy around the social features * Use relative path to action images. Fixes https://github.com/owncast/owncast/issues/1646 * Link IRIs and make action verbse present tense * Update caniuse
2022-01-13 00:52:37 +03:00
export const FIELD_PROPS_ENABLE_FEDERATION = {
apiPath: API_FEDERATION_ENABLED,
configPath: 'federation',
label: 'Enable Social Features',
tip: 'Send and receive activities on the Fediverse.',
useSubmit: true,
};
export const FIELD_PROPS_FEDERATION_IS_PRIVATE = {
apiPath: API_FEDERATION_PRIVATE,
configPath: 'federation',
label: 'Private',
tip: 'Follow requests will require approval and only followers will see your activity.',
useSubmit: true,
};
export const FIELD_PROPS_SHOW_FEDERATION_ENGAGEMENT = {
apiPath: API_FEDERATION_SHOW_ENGAGEMENT,
configPath: 'showEngagement',
label: 'Show engagement',
tip: 'Following, liking and sharing will appear in the chat feed.',
useSubmit: true,
};
export const TEXTFIELD_PROPS_FEDERATION_LIVE_MESSAGE = {
apiPath: API_FEDERATION_GOLIVE_MESSAGE,
configPath: 'federation',
maxLength: 500,
placeholder: 'My stream has started, tune in!',
label: 'Now Live message',
tip: 'The message sent announcing that your live stream has begun. Tags will be automatically added. Leave blank to disable.',
};
export const TEXTFIELD_PROPS_FEDERATION_DEFAULT_USER = {
apiPath: API_FEDERATION_USERNAME,
configPath: 'federation',
maxLength: 10,
placeholder: 'owncast',
default: 'owncast',
label: 'Username',
tip: 'The username used for sending and receiving activities from the Fediverse. For example, if you use "bob" as a username you would send messages to the fediverse from @bob@yourserver. Once people start following your instance you should not change this.',
};
export const TEXTFIELD_PROPS_FEDERATION_INSTANCE_URL = {
apiPath: API_INSTANCE_URL,
configPath: 'yp',
maxLength: 255,
placeholder: 'https://owncast.mysite.com',
label: 'Server URL',
tip: 'The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.',
type: TEXTFIELD_TYPE_URL,
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
useTrim: true,
};
export const FIELD_PROPS_FEDERATION_NSFW = {
apiPath: API_NSFW_SWITCH,
configPath: 'instanceDetails',
label: 'Potentially NSFW',
tip: 'Turn this ON if you plan to steam explicit or adult content so previews of your stream can be marked as potentially sensitive.',
};
export const FIELD_PROPS_FEDERATION_BLOCKED_DOMAINS = {
apiPath: API_FEDERATION_BLOCKED_DOMAINS,
configPath: 'federation',
label: 'Blocked domains',
placeholder: 'bad.domain.biz',
tip: 'You can block specific domains from interacting with you.',
};
export const VIDEO_VARIANT_SETTING_DEFAULTS = {
// this one is currently unused
audioBitrate: {
min: 600,
max: 1200,
defaultValue: 800,
unit: 'kbps',
incrementBy: 100,
tip: 'nothing to see here',
},
videoPassthrough: {
tip: 'If enabled, all other settings will be disabled. Otherwise configure as desired.',
},
audioPassthrough: {
tip: 'If No is selected, then you should set your desired Audio Bitrate.',
},
scaledWidth: {
fieldName: 'scaledWidth',
label: 'Resized Width',
maxLength: 4,
placeholder: '1080',
tip: "Optionally resize this content's width.",
},
scaledHeight: {
fieldName: 'scaledHeight',
label: 'Resized Height',
maxLength: 4,
placeholder: '720',
tip: "Optionally resize this content's height.",
},
};
// VIDEO VARIANT FORM - framerate
export const FRAMERATE_DEFAULTS = {
min: 24,
max: 120,
defaultValue: 24,
unit: 'fps',
incrementBy: null,
2021-05-23 09:28:21 +03:00
tip: 'Reducing your framerate will decrease the amount of video that needs to be encoded and sent to your viewers, saving CPU and bandwidth at the expense of smoothness. A lower value is generally is fine for most content.',
};
export const FRAMERATE_SLIDER_MARKS = {
[FRAMERATE_DEFAULTS.min]: `${FRAMERATE_DEFAULTS.min} ${FRAMERATE_DEFAULTS.unit}`,
25: ' ',
30: ' ',
50: ' ',
60: ' ',
90: ' ',
[FRAMERATE_DEFAULTS.max]: `${FRAMERATE_DEFAULTS.max} ${FRAMERATE_DEFAULTS.unit}`,
};
export const FRAMERATE_TOOLTIPS = {
[FRAMERATE_DEFAULTS.min]: `${FRAMERATE_DEFAULTS.min}fps - Good for film, presentations, music, low power/bandwidth servers.`,
25: '25fps - Good for film, presentations, music, low power/bandwidth servers.',
30: '30fps - Good for slow/casual games, chat, general purpose.',
50: '50fps - Good for fast/action games, sports, HD video.',
60: '60fps - Good for fast/action games, sports, HD video.',
90: '90fps - Good for newer fast games and hardware.',
[FRAMERATE_DEFAULTS.max]: `${FRAMERATE_DEFAULTS.max}fps - Experimental, use at your own risk!`,
};
// VIDEO VARIANT FORM - bitrate
export const VIDEO_BITRATE_DEFAULTS = {
min: 400,
max: 6000,
defaultValue: 1200,
unit: 'kbps',
incrementBy: 100,
tip: 'The overall quality of your stream is generally impacted most by bitrate.',
};
export const VIDEO_NAME_DEFAULTS = {
fieldName: 'name',
label: 'Name',
maxLength: 15,
placeholder: 'HD or Low',
2021-04-02 08:00:10 +03:00
tip: 'Human-readable name for for displaying in the player.',
};
export const VIDEO_BITRATE_SLIDER_MARKS = {
[VIDEO_BITRATE_DEFAULTS.min]: `${VIDEO_BITRATE_DEFAULTS.min} ${VIDEO_BITRATE_DEFAULTS.unit}`,
3000: 3000,
4500: 4500,
[VIDEO_BITRATE_DEFAULTS.max]: `${VIDEO_BITRATE_DEFAULTS.max} ${VIDEO_BITRATE_DEFAULTS.unit}`,
};
// VIDEO VARIANT FORM - encoder preset
// CPU
export const ENCODER_PRESET_SLIDER_MARKS = {
1: 'lowest',
2: '',
3: '',
4: '',
5: 'highest',
};
export const ENCODER_PRESET_TOOLTIPS = {
2021-04-02 08:00:10 +03:00
1: 'Lowest hardware usage - lowest quality video',
2: 'Low hardware usage - low quality video',
3: 'Medium hardware usage - average quality video',
4: 'High hardware usage - high quality video',
5: 'Highest hardware usage - higher quality video',
};
export const ENCODER_RECOMMENDATION_THRESHOLD = {
VIDEO_HEIGHT: 1080,
VIDEO_BITRATE: 3000,
HELP_TEXT:
'You have only set one video quality variant. If your server has the computing resources, consider adding another, lower-quality variant, so more people can view your content!',
};
2021-01-31 12:38:20 +03:00
export const DEFAULT_SOCIAL_HANDLE: SocialHandle = {
2021-01-24 07:16:01 +03:00
url: '',
platform: '',
2021-01-24 12:22:28 +03:00
};
export const OTHER_SOCIAL_HANDLE_OPTION = 'OTHER_SOCIAL_HANDLE_OPTION';
export const TEXTFIELD_PROPS_S3_COMMON = {
maxLength: 255,
};
export const S3_TEXT_FIELDS_INFO = {
accessKey: {
fieldName: 'accessKey',
label: 'Access Key',
maxLength: 255,
placeholder: 'access key 123',
tip: '',
},
acl: {
fieldName: 'acl',
label: 'ACL',
maxLength: 255,
placeholder: '',
tip: 'Optional specific access control value to add to your content. Generally not required.',
},
bucket: {
fieldName: 'bucket',
label: 'Bucket',
maxLength: 255,
placeholder: 'bucket 123',
tip: 'Create a new bucket for each Owncast instance you may be running.',
},
endpoint: {
fieldName: 'endpoint',
label: 'Endpoint',
maxLength: 255,
placeholder: 'https://your.s3.provider.endpoint.com',
tip: 'The full URL (with "https://") endpoint from your storage provider.',
useTrim: true,
type: TEXTFIELD_TYPE_URL,
2021-05-23 09:28:21 +03:00
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
},
region: {
fieldName: 'region',
label: 'Region',
maxLength: 255,
placeholder: 'region 123',
tip: '',
},
secret: {
fieldName: 'secret',
label: 'Secret key',
maxLength: 255,
placeholder: 'your secret key',
tip: '',
},
servingEndpoint: {
fieldName: 'servingEndpoint',
label: 'Serving Endpoint',
maxLength: 255,
placeholder: 'http://cdn.ss3.provider.endpoint.com',
2021-05-23 09:28:21 +03:00
tip: 'Optional URL that content should be accessed from instead of the default. Used with CDNs and specific storage providers. Generally not required.',
type: TEXTFIELD_TYPE_URL,
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
useTrim: true,
},
forcePathStyle: {
fieldName: 'forcePathStyle',
label: 'Force path-style',
2021-10-29 03:34:07 +03:00
tip: "If your S3 provider doesn't support virtual-hosted-style URLs set this to ON (i.e. Oracle Cloud Object Storage)",
},
};
Mange outbound notification settings (#458) * ActivityPub admin pages for configuration * Fix dev build * Add support for requiring follow approval. Closes https://github.com/owncast/owncast/issues/1208 * Point at admin version of followers endpoint * Add setting for toggling displaying fediverse engagement in admin. https://github.com/owncast/owncast/issues/1404 * Add instance URL textfield to federation config and disable federation if it is empty * If instance URL is not https disable federation * Tweak federation toggle text. Make go live message optional * Add federation info modal. Closes https://github.com/owncast/owncast/issues/1544 * Add support for blocked federated domains. For https://github.com/owncast/owncast/issues/1209 * Simplify fediverse post input * Add placeholder Fediverse icon * Tweak federation logo in admin menu. Closes https://github.com/owncast/owncast/issues/1603 * Add global button for composing a fediverse post. Closes https://github.com/owncast/owncast/issues/1610 * Federation -> Social * Add page for listing federated actions. Closes https://github.com/owncast/owncast/issues/1573 * Auto-close social post modal after success * Make user modal action buttons look nicer * Center and reduce width and center count column. Closes https://github.com/owncast/owncast/issues/1580 * Update the followers table to be clearer * Fix exception thrown when passing undefined * Disable federation settings if feature is disabled * Update enable social modal. For https://github.com/owncast/owncast/issues/1594 * Fix type props * Quiet, linter * Move compose button to the left * Add tooltip for compose button * Add NSFW toggle to federation config. Closes https://github.com/owncast/owncast/issues/1628 * Add support for blocking/removing followers. For https://github.com/owncast/owncast/issues/1630 * Allow editing the server url field even when federation is disabled * Continue to update the copy around the social features * Use relative path to action images. Fixes https://github.com/owncast/owncast/issues/1646 * Link IRIs and make action verbse present tense * Update caniuse * Notifications configuration UI * Remove twilio add email notifications * WIP email support * Add support for managing twitter notifications * Mark fields as passwords * Continued WIP * Post merge cleanup * Cleanup * Remove email config. Handle disabled notifications state * Remove email related components * Remove email related settings properties
2022-03-23 18:57:09 +03:00
export const DISCORD_CONFIG_FIELDS = {
webhookUrl: {
fieldName: 'webhook',
label: 'Webhook URL',
maxLength: 255,
placeholder: 'https://discord.com/api/webhooks/837/jf38-6iNEv',
tip: 'The webhook assigned to your channel.',
type: TEXTFIELD_TYPE_URL,
pattern: DEFAULT_TEXTFIELD_URL_PATTERN,
useTrim: true,
},
goLiveMessage: {
fieldName: 'goLiveMessage',
label: 'Go Live Text',
maxLength: 300,
tip: 'The text to send when you go live.',
placeholder: `I've gone live! Come watch!`,
},
};
export const BROWSER_PUSH_CONFIG_FIELDS = {
goLiveMessage: {
fieldName: 'goLiveMessage',
label: 'Go Live Text',
maxLength: 200,
tip: 'The text to send when you go live.',
placeholder: `I've gone live! Come watch!`,
},
};
export const TWITTER_CONFIG_FIELDS = {
apiKey: {
fieldName: 'apiKey',
label: 'API Key',
maxLength: 200,
tip: '',
placeholder: `gaUQhRC2lqfrEFfElBXJgOctU`,
},
apiSecret: {
fieldName: 'apiSecret',
label: 'API Secret',
maxLength: 200,
tip: '',
placeholder: `IIz4jFZMWbUKdFOEGUprFjRwIslG56d1SPQlolJYjXwJ2y2qKS`,
},
accessToken: {
fieldName: 'accessToken',
label: 'Access Token',
maxLength: 200,
tip: '',
placeholder: `952540400-EEiwe9fkuSvWjnNC82YFa9kgpqbyAP3J7FjE2dkka`,
},
accessTokenSecret: {
fieldName: 'accessTokenSecret',
label: 'Access Token Secret',
maxLength: 200,
tip: '',
placeholder: `xO0AZWNGfZxpNsYPg3zNEKhAsPPGvNZFlzQArA2khI9Kg`,
},
bearerToken: {
fieldName: 'bearerToken',
label: 'Bearer Token',
maxLength: 200,
tip: '',
placeholder: `AAAAAAAAAAAAAAFqpXwEAAnnepHkjA8XD5ftx5jUadYIRtPtaq7AAAAwpXPpDWKDcdhiWr0tVDjsgW%2B4awGOM9VQ%3XPoMFuWcHsE42TK`,
},
goLiveMessage: {
fieldName: 'goLiveMessage',
label: 'Go Live Text',
maxLength: 200,
tip: 'The text to send when you go live.',
placeholder: `I've gone live! Come watch!`,
},
};