Slow mode WIP (#192):
* default delay is configurable in channel's chat rooms options.
This commit is contained in:
2
client/@types/global.d.ts
vendored
2
client/@types/global.d.ts
vendored
@ -44,6 +44,8 @@ declare const LOC_LIVECHAT_CONFIGURATION_DESC: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_PLEASE_SELECT: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_TITLE: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_DESC: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_DEFAULT_SLOW_MODE_LABEL: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_DEFAULT_SLOW_MODE_DESC: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_ENABLE_BOT_LABEL: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_BOT_OPTIONS_TITLE: string
|
||||
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL: string
|
||||
|
@ -9,6 +9,25 @@
|
||||
</h1>
|
||||
<p>{{description}}</p>
|
||||
<form livechat-configuration-channel-options role="form">
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 col-lg-4 col-xl-3">
|
||||
<h2>{{defaultSlowModeLabel}}</h2>
|
||||
<p>{{{defaultSlowModeDesc}}}</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-8 col-xl-9">
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input
|
||||
type="number"
|
||||
name="slow_mode_default_delay"
|
||||
min="0"
|
||||
max="1000"
|
||||
id="peertube-livechat-slow-mode-default-delay"
|
||||
value="{{channelConfiguration.configuration.slowMode.defaultDelay}}"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 col-lg-4 col-xl-3">
|
||||
<h2>{{botOptions}}</h2>
|
||||
|
@ -68,6 +68,10 @@ async function fillLabels (
|
||||
view.title = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_TITLE)
|
||||
view.description = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_DESC)
|
||||
|
||||
view.defaultSlowModeLabel = await peertubeHelpers.translate(
|
||||
LOC_LIVECHAT_CONFIGURATION_CHANNEL_DEFAULT_SLOW_MODE_LABEL
|
||||
)
|
||||
view.defaultSlowModeDesc = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_DEFAULT_SLOW_MODE_DESC)
|
||||
view.enableBot = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_ENABLE_BOT_LABEL)
|
||||
view.botOptions = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_BOT_OPTIONS_TITLE)
|
||||
view.forbiddenWords = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_LABEL)
|
||||
|
@ -165,8 +165,20 @@ async function vivifyConfigurationChannel (
|
||||
|
||||
const validateData: Function = async (channelConfigurationOptions: ChannelConfigurationOptions): Promise<boolean> => {
|
||||
const botConf = channelConfigurationOptions.bot
|
||||
const slowModeDefaultDelay = channelConfigurationOptions.slowMode.defaultDelay
|
||||
const errorFieldSelectors = []
|
||||
|
||||
if (
|
||||
(typeof slowModeDefaultDelay !== 'number') ||
|
||||
isNaN(slowModeDefaultDelay) ||
|
||||
slowModeDefaultDelay < 0 ||
|
||||
slowModeDefaultDelay > 1000
|
||||
) {
|
||||
const selector = '#peertube-livechat-slow-mode-default-delay'
|
||||
errorFieldSelectors.push(selector)
|
||||
await displayError(selector, await translate(LOC_INVALID_VALUE))
|
||||
}
|
||||
|
||||
// If !bot.enabled, we don't have to validate these fields:
|
||||
// The backend will ignore those values.
|
||||
if (botConf.enabled) {
|
||||
@ -220,6 +232,9 @@ async function vivifyConfigurationChannel (
|
||||
const data = new FormData(form)
|
||||
removeDisplayedErrors()
|
||||
const channelConfigurationOptions: ChannelConfigurationOptions = {
|
||||
slowMode: {
|
||||
defaultDelay: parseInt(data.get('slow_mode_default_delay')?.toString() ?? '0')
|
||||
},
|
||||
bot: {
|
||||
enabled: data.get('bot') === '1',
|
||||
nickname: data.get('bot_nickname')?.toString() ?? '',
|
||||
|
Reference in New Issue
Block a user