Files
2026-07-13 12:08:39 +08:00

50 lines
1.4 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import { error as notifyError } from '@/portainer/services/notifications';
import { getBackupStatus } from '@/portainer/services/api/backup.service';
import { isoDate } from '@/portainer/filters/filters';
import { InformationPanel } from '@@/InformationPanel';
import { TextTip } from '@@/Tip/TextTip';
import { Link } from '@@/Link';
export function BackupFailedPanel() {
const { status, isLoading } = useBackupStatus();
if (isLoading || !status || !status.Failed) {
return null;
}
return (
<div className="row">
<div className="col-sm-12">
<InformationPanel title="Information">
<TextTip>
The latest automated backup has failed at{' '}
{isoDate(status.TimestampUTC)}. For details please see the log files
and have a look at the{' '}
<Link to="portainer.settings" data-cy="backup-failed-settings-link">
settings
</Link>{' '}
to verify the backup configuration.
</TextTip>
</InformationPanel>
</div>
</div>
);
}
function useBackupStatus() {
const { data, isLoading } = useQuery(
['backup', 'status'],
() => getBackupStatus(),
{
onError(error) {
notifyError('Failure', error as Error, 'Failed to get license info');
},
}
);
return { status: data, isLoading };
}