import * as React from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; import I18n from 'i18n-js'; import Box from '../../common/Box'; import SiteSettingsInfoBox from '../../common/SiteSettingsInfoBox'; import Button from '../../common/Button'; import HttpStatus from '../../../constants/http_status'; import { TENANT_SETTING_BRAND_DISPLAY_NAME_AND_LOGO, TENANT_SETTING_BRAND_DISPLAY_NAME_ONLY, TENANT_SETTING_BRAND_DISPLAY_LOGO_ONLY, TENANT_SETTING_BRAND_DISPLAY_NONE, } from '../../../interfaces/ITenantSetting'; import { DangerText, SmallMutedText } from '../../common/CustomTexts'; import { getLabel, getValidationMessage } from '../../../helpers/formUtils'; import IBoardJSON from '../../../interfaces/json/IBoard'; export interface ISiteSettingsGeneralForm { siteName: string; siteLogo: string; brandDisplaySetting: string; locale: string; showVoteCount: boolean; showVoteButtonInBoard: boolean; rootBoardId?: string; } interface Props { originForm: ISiteSettingsGeneralForm; boards: IBoardJSON[]; authenticityToken: string; areUpdating: boolean; error: string; updateTenant( siteName: string, siteLogo: string, brandDisplaySetting: string, locale: string, rootBoardId: number, showVoteCount: boolean, showVoteButtonInBoard: boolean, authenticityToken: string ): Promise; } const GeneralSiteSettingsP = ({ originForm, boards, authenticityToken, areUpdating, error, updateTenant, }: Props) => { const { register, handleSubmit, formState: { isDirty, isSubmitSuccessful, errors } } = useForm({ defaultValues: { siteName: originForm.siteName, siteLogo: originForm.siteLogo, brandDisplaySetting: originForm.brandDisplaySetting, locale: originForm.locale, showVoteCount: originForm.showVoteCount, showVoteButtonInBoard: originForm.showVoteButtonInBoard, rootBoardId: originForm.rootBoardId, }, }); const onSubmit: SubmitHandler = data => { updateTenant( data.siteName, data.siteLogo, data.brandDisplaySetting, data.locale, Number(data.rootBoardId), data.showVoteCount, data.showVoteButtonInBoard, authenticityToken, ).then(res => { if (res?.status !== HttpStatus.OK) return; window.location.reload(); }); }; return ( <>

{ I18n.t('site_settings.general.title') }

{errors.siteName && getValidationMessage(errors.siteName.type, 'tenant', 'site_name')}

{ I18n.t('site_settings.general.show_vote_count_help') }

{ I18n.t('site_settings.general.show_vote_button_in_board_help') }

); } export default GeneralSiteSettingsP;