import React, { useCallback, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { selectInputValidationErrors, selectFileDeleteSetting, updateFileDeleteSettingAsync, selectIsLoading, getAccountRelationsAsync, } from "features/account"; import { AppDispatch } from "app/store"; import { useTranslation } from "react-i18next"; import styles from "../../styles/app.module.scss"; import { getTranslationID } from "../../translation"; import close from "../../assets/images/close.svg"; import { changeAutoFileDelete, changeFileRetentionDays, } from "../../features/account/accountSlice"; import progress_activit from "../../assets/images/progress_activit.svg"; interface FileDeleteSettingPopupProps { // eslint-disable-next-line react/no-unused-prop-types onClose: () => void; } export const FileDeleteSettingPopup: React.FC = ( props ) => { const { onClose } = props; const dispatch: AppDispatch = useDispatch(); const [t] = useTranslation(); const isLoading = useSelector(selectIsLoading); const fileDeleteSetting = useSelector(selectFileDeleteSetting); const { hasFileRetentionDaysError } = useSelector( selectInputValidationErrors ); const closePopup = useCallback(() => { if (isLoading) return; onClose(); }, [isLoading, onClose]); const [isPushSubmitButton, setIsPushSubmitButton] = useState(false); const onUpdateFileDeleteSetting = useCallback(async () => { if (isLoading) return; setIsPushSubmitButton(true); if (hasFileRetentionDaysError) { return; } const { meta } = await dispatch( updateFileDeleteSettingAsync({ autoFileDelete: fileDeleteSetting.autoFileDelete, fileRetentionDays: fileDeleteSetting.fileRetentionDays, }) ); setIsPushSubmitButton(false); if (meta.requestStatus === "fulfilled") { closePopup(); dispatch(getAccountRelationsAsync()); } }, [ closePopup, dispatch, fileDeleteSetting.autoFileDelete, fileDeleteSetting.fileRetentionDays, hasFileRetentionDaysError, isLoading, ]); return (

{t(getTranslationID("fileDeleteSettingPopup.label.title"))}

{t( getTranslationID( "fileDeleteSettingPopup.label.autoFileDeleteCheck" ) )}

{/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}

{t( getTranslationID( "fileDeleteSettingPopup.label.daysAnnotation" ) )}

{ dispatch( changeFileRetentionDays({ fileRetentionDays: Number(e.target.value), }) ); }} />{" "} {t(getTranslationID("fileDeleteSettingPopup.label.days"))} {isPushSubmitButton && hasFileRetentionDaysError && ( {t( getTranslationID( "fileDeleteSettingPopup.label.daysValidationError" ) )} )}
Loading
); };