import React, { useCallback, useState, useMemo, useEffect } from 'react';
import { Button, ButtonGroup, TextInput, Field, Select, Icon } from '@rocket.chat/fuselage';
import { useTranslation } from '../../../contexts/TranslationContext';
import { useMethod } from '../../../contexts/ServerContext';
import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext';
import { useSetModal } from '../../../contexts/ModalContext';
import VerticalBar from '../../../components/VerticalBar';
import DeleteSuccessModal from '../../../components/DeleteSuccessModal';
import DeleteWarningModal from '../../../components/DeleteWarningModal';
export function EditCustomUserStatus({ close, onChange, data, ...props }) {
const t = useTranslation();
const dispatchToastMessage = useToastMessageDispatch();
const setModal = useSetModal();
const { _id, name: previousName, statusType: previousStatusType } = data || {};
const [name, setName] = useState(() => data?.name ?? '');
const [statusType, setStatusType] = useState(() => data?.statusType ?? '');
useEffect(() => {
setName(previousName || '');
setStatusType(previousStatusType || '');
}, [previousName, previousStatusType, _id]);
const saveStatus = useMethod('insertOrUpdateUserStatus');
const deleteStatus = useMethod('deleteCustomUserStatus');
const hasUnsavedChanges = useMemo(() => previousName !== name || previousStatusType !== statusType, [name, previousName, previousStatusType, statusType]);
const handleSave = useCallback(async () => {
try {
await saveStatus({
_id,
previousName,
previousStatusType,
name,
statusType,
});
dispatchToastMessage({ type: 'success', message: t('Custom_User_Status_Updated_Successfully') });
onChange();
} catch (error) {
dispatchToastMessage({ type: 'error', message: error });
}
}, [saveStatus, _id, previousName, previousStatusType, name, statusType, dispatchToastMessage, t, onChange]);
const handleDeleteButtonClick = useCallback(() => {
const handleClose = () => {
setModal(null);
close();
onChange();
};
const handleDelete = async () => {
try {
await deleteStatus(_id);
setModal(() => );
} catch (error) {
dispatchToastMessage({ type: 'error', message: error });
onChange();
}
};
const handleCancel = () => {
setModal(null);
};
setModal(() => );
}, [_id, close, deleteStatus, dispatchToastMessage, onChange, setModal, t]);
const presenceOptions = [
['online', t('Online')],
['busy', t('Busy')],
['away', t('Away')],
['offline', t('Offline')],
];
return
{t('Name')}
setName(e.currentTarget.value)} placeholder={t('Name')} />
{t('Presence')}
;
}
export default EditCustomUserStatus;