5180 fichiers 38.5 Mo 0 téléchargements 417 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / room / widgets / avatar-info / AvatarInfoRentableBotChatView.tsx
AvatarInfoRentableBotChatView.tsx 4.4 Ko Télécharger le fichier
import { BotSkillSaveComposer } from '@octane/renderer';
import { FC, useState } from 'react';
import { BotSkillsEnum, GetConfigurationValue, LocalizeText, OpenUrl, RoomWidgetUpdateRentableBotChatEvent, SendMessageComposer } from '../../../../api';
import { AvatarInfoBotSkillButtonsView, AvatarInfoBotSkillWindowView } from './AvatarInfoBotSkillWindowView';
import { BaseButton } from '../../../../common/BaseButton';
import { Checkbox } from '../../../../common/Checkbox';
import { NativeTextTree } from '../../../../common/native-text/NativeTextTree';

interface AvatarInfoRentableBotChatViewProps {
    chatEvent: RoomWidgetUpdateRentableBotChatEvent;
    onClose(): void;
}

const CHAT_TEXT_MAX_CHARS = 1000;

export const AvatarInfoRentableBotChatView: FC<AvatarInfoRentableBotChatViewProps> = (props) => {
    const { chatEvent = null, onClose = null } = props;

    const [newText, setNewText] = useState<string>(chatEvent.chat === '${bot.skill.chatter.configuration.text.placeholder}' ? '' : chatEvent.chat);
    const [automaticChat, setAutomaticChat] = useState<boolean>(chatEvent.automaticChat);
    const [mixSentences, setMixSentences] = useState<boolean>(chatEvent.mixSentences);
    const [chatDelay, setChatDelay] = useState<string>(String(chatEvent.chatDelay));
    const helpUrl = GetConfigurationValue<string>('link.format.bots.help', '');

    const formatChatString = (value: string) => value.replace(/;#;/g, ' ').replace(/\r\n|\r|\n/g, '\r');

    const save = () => {
        const delay = parseInt(chatDelay, 10) || 0;
        const chatConfiguration = formatChatString(newText) + ';#;' + automaticChat + ';#;' + delay + ';#;' + mixSentences;

        SendMessageComposer(new BotSkillSaveComposer(chatEvent.botId, BotSkillsEnum.SETUP_CHAT, chatConfiguration));

        onClose();
    };

    return (
        <NativeTextTree>
            <AvatarInfoBotSkillWindowView
                category={chatEvent.category}
                layout="chatter"
                objectId={chatEvent.objectId}
                title={LocalizeText('bot.skill.chatter.configuration.title')}
            >
                <div className="air-bot-skill-label">{LocalizeText('bot.skill.chatter.configuration.chat.text')}</div>
                <textarea
                    className="air-bot-skill-input air-bot-skill-chat-text"
                    maxLength={CHAT_TEXT_MAX_CHARS}
                    placeholder={LocalizeText('bot.skill.chatter.configuration.text.placeholder')}
                    value={newText}
                    onChange={(event) => setNewText(event.target.value)}
                />
                <label className="air-bot-skill-row">
                    <span className="air-bot-skill-label">{LocalizeText('bot.skill.chatter.configuration.automatic.chat')}</span>
                    <Checkbox checked={automaticChat} className="air-bot-skill-checkbox" onCheckedChange={ nextChecked => setAutomaticChat(nextChecked) } />
                </label>
                <label className="air-bot-skill-row">
                    <span className="air-bot-skill-label">{LocalizeText('bot.skill.chatter.configuration.markov')}</span>
                    <Checkbox checked={mixSentences} className="air-bot-skill-checkbox" onCheckedChange={ nextChecked => setMixSentences(nextChecked) } />
                </label>
                <label className="air-bot-skill-row">
                    <span className="air-bot-skill-label">{LocalizeText('bot.skill.chatter.configuration.chat.delay')}</span>
                    <input
                        className="air-bot-skill-input air-bot-skill-chat-delay"
                        inputMode="numeric"
                        type="text"
                        value={chatDelay}
                        onChange={(event) => setChatDelay(event.target.value.replace(/[^0-9]/g, ''))}
                    />
                </label>
                <BaseButton
                    className="air-bot-skill-help-link"
                    disabled={!helpUrl}
                    type="button"
                    onClick={() => OpenUrl(helpUrl)}
                >
                    {LocalizeText('bot.skill.chatter.configuration.help.link')}
                </BaseButton>
                <AvatarInfoBotSkillButtonsView cancelLabel={LocalizeText('cancel')} saveLabel={LocalizeText('save')} onCancel={onClose} onSave={save} />
            </AvatarInfoBotSkillWindowView>
        </NativeTextTree>
    );
};
15Sujets
1Dépôts
20Membres
3En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser