import { Box } from '@rocket.chat/fuselage'; import { Field, FieldGroup, FieldHint, FieldLabel, FieldRow } from '@rocket.chat/fuselage-forms'; import { GenericModal } from '@rocket.chat/ui-client'; import { useEndpoint, useToastMessageDispatch, useUser } from '@rocket.chat/ui-contexts'; import type { ComponentProps } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import UserAutoCompleteMultiple from '../../../components/UserAutoCompleteMultiple'; export type EditStatusVisibilityModalProps = { onClose: () => void; }; type StatusVisibilityFormValues = { statusVisibilityDenied: string[]; }; export const EditStatusVisibilityModal = ({ onClose }: EditStatusVisibilityModalProps) => { const { t } = useTranslation(); const user = useUser(); const dispatchToastMessage = useToastMessageDispatch(); const setPreferences = useEndpoint('POST', '/v1/users.setPreferences'); const { control, handleSubmit, formState: { isDirty, isSubmitting }, } = useForm({ defaultValues: { statusVisibilityDenied: user?.settings?.preferences?.statusVisibilityDenied ?? [], }, }); const handleSave = async ({ statusVisibilityDenied }: StatusVisibilityFormValues) => { try { await setPreferences({ data: { statusVisibilityDenied } }); dispatchToastMessage({ type: 'success', message: t('Accounts_StatusVisibility_Saved') }); onClose(); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } }; return ( ) => } > {t('Accounts_StatusVisibility_HideFromUsers')} ( )} /> {t('Accounts_StatusVisibility_HideFromUsers_Description')} ); }; export default EditStatusVisibilityModal;