import React, { useCallback, useEffect, type JSX } from 'react'; import { useTranslation } from 'next-i18next'; import { useForm } from 'react-hook-form'; import { PrismAsyncLight } from 'react-syntax-highlighter'; import { oneDark } from 'react-syntax-highlighter/dist/cjs/styles/prism'; import { Card, CardBody } from 'reactstrap'; import AdminCustomizeContainer from '~/client/services/AdminCustomizeContainer'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; type Props = { adminCustomizeContainer: AdminCustomizeContainer } const CustomizeScriptSetting = (props: Props): JSX.Element => { const { adminCustomizeContainer } = props; const { t } = useTranslation(); const { register, handleSubmit, reset, } = useForm(); // Sync form with container state useEffect(() => { reset({ customizeScript: adminCustomizeContainer.state.currentCustomizeScript || '', }); }, [adminCustomizeContainer.state.currentCustomizeScript, reset]); const onSubmit = useCallback(async(data) => { try { // Update container state before API call await adminCustomizeContainer.changeCustomizeScript(data.customizeScript); await adminCustomizeContainer.updateCustomizeScript(); toastSuccess(t('toaster.update_successed', { target: t('admin:customize_settings.custom_script'), ns: 'commons' })); } catch (err) { toastError(err); } }, [t, adminCustomizeContainer]); return (

{t('admin:customize_settings.custom_script')}

{t('admin:customize_settings.write_java')}
{t('admin:customize_settings.reflect_change')}