From 677e3ef12dc3441af159fd9e8a6dc13308d59857 Mon Sep 17 00:00:00 2001 From: Novattz Date: Sat, 3 Jan 2026 00:26:23 +0100 Subject: [PATCH] disclaimer hook #87 --- src/hooks/index.ts | 1 + src/hooks/useDisclaimer.ts | 58 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/hooks/useDisclaimer.ts diff --git a/src/hooks/index.ts b/src/hooks/index.ts index c31ac31..ff1aba4 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -5,6 +5,7 @@ export { useGameActions } from './useGameActions' export { useToasts } from './useToasts' export { useAppLogic } from './useAppLogic' export { useConflictDetection } from './useConflictDetection' +export { useDisclaimer } from './useDisclaimer' // Export types export type { ToastType, Toast, ToastOptions } from './useToasts' diff --git a/src/hooks/useDisclaimer.ts b/src/hooks/useDisclaimer.ts new file mode 100644 index 0000000..26a7585 --- /dev/null +++ b/src/hooks/useDisclaimer.ts @@ -0,0 +1,58 @@ +import { useState, useEffect } from 'react' +import { invoke } from '@tauri-apps/api/core' +import { Config } from '@/types/Config' + +/** + * Hook to manage disclaimer dialog state + * Loads config on mount and provides methods to update it + */ +export function useDisclaimer() { + const [showDisclaimer, setShowDisclaimer] = useState(false) + const [isLoading, setIsLoading] = useState(true) + + // Load config on mount + useEffect(() => { + loadConfig() + }, []) + + const loadConfig = async () => { + try { + const config = await invoke('load_config') + setShowDisclaimer(config.show_disclaimer) + } catch (error) { + console.error('Failed to load config:', error) + // Default to showing disclaimer if config load fails + setShowDisclaimer(true) + } finally { + setIsLoading(false) + } + } + + const handleDisclaimerClose = async (dontShowAgain: boolean) => { + setShowDisclaimer(false) + + if (dontShowAgain) { + try { + // Load the current config first + const currentConfig = await invoke('load_config') + + // Update the show_disclaimer field + const updatedConfig: Config = { + ...currentConfig, + show_disclaimer: false, + } + + // Save the updated config + await invoke('update_config', { configData: updatedConfig }) + } catch (error) { + console.error('Failed to update config:', error) + } + } + } + + return { + showDisclaimer, + isLoading, + handleDisclaimerClose, + } +} \ No newline at end of file