diff --git a/src/components/KeyBackupReminder.tsx b/src/components/KeyBackupReminder.tsx index 777c28cc..80894cba 100644 --- a/src/components/KeyBackupReminder.tsx +++ b/src/components/KeyBackupReminder.tsx @@ -5,7 +5,6 @@ export const KeyBackupReminder = () => { const { setDialogOpen } = useDevice(); useBackupReminder({ - reminderInDays: 7, message: "We recommend backing up your key data regularly. Would you like to back up now?", onAccept: () => setDialogOpen("pkiBackup", true), diff --git a/src/core/hooks/useKeyBackupReminder.tsx b/src/core/hooks/useKeyBackupReminder.tsx index f1009095..1669c429 100644 --- a/src/core/hooks/useKeyBackupReminder.tsx +++ b/src/core/hooks/useKeyBackupReminder.tsx @@ -11,27 +11,27 @@ interface UseBackupReminderOptions { } interface ReminderState { - suppressed: boolean; - lastShown: string; + expires: string; } const TOAST_APPEAR_DELAY = 10_000; // 10 seconds const TOAST_DURATION = 30_000; // 30 seconds -const ON_ACCEPT_REMINDER_DAYS = 365; +const REMINDER_DAYS_ONE_WEEK = 7; +const REMINDER_DAYS_ONE_YEAR = 365; +const REMINDER_DAYS_FOREVER = 3650; const STORAGE_KEY = "key_backup_reminder"; -function isReminderExpired(lastShown: string): boolean { - const lastShownDate = new Date(lastShown); - const now = new Date(); - const daysSinceLastShown = (now.getTime() - lastShownDate.getTime()) / (1000 * 60 * 60 * 24); - return daysSinceLastShown >= 7; +function isReminderExpired(expires?: string): boolean { + if (!expires) return true; + const expiryDate = new Date(expires); + return isNaN(expiryDate.getTime()) || new Date() >= expiryDate; } export function useBackupReminder({ - reminderInDays = 7, enabled, message, onAccept = () => { }, + reminderInDays = REMINDER_DAYS_ONE_WEEK, }: UseBackupReminderOptions) { const { toast } = useToast(); const toastShownRef = useRef(false); @@ -40,24 +40,16 @@ export function useBackupReminder({ null ); - // Suppress reminder for 10 years if not specified - const suppressReminder = useCallback((days: number = 3563) => { + const setReminderExpiry = useCallback((days: number) => { const expiryDate = new Date(); expiryDate.setDate(expiryDate.getDate() + days); - - setReminderState({ - suppressed: true, - lastShown: new Date().toISOString(), - }); + setReminderState({ expires: expiryDate.toISOString() }); }, [setReminderState]); useEffect(() => { if (!enabled || toastShownRef.current) return; - const shouldShowReminder = - !reminderState?.suppressed || isReminderExpired(reminderState.lastShown); - - if (!shouldShowReminder) return; + if (!isReminderExpired(reminderState?.expires)) return; toastShownRef.current = true; @@ -69,14 +61,13 @@ export function useBackupReminder({ action: (