A React Native app for the ultimate thinking partner.
1import { useEffect } from 'react';
2import { useAuthStore } from '../stores/authStore';
3import { useAgentStore } from '../stores/agentStore';
4import { useChatStore } from '../stores/chatStore';
5
6/**
7 * Hook to manage authentication state and actions
8 */
9export function useAuth() {
10 const authStore = useAuthStore();
11 const clearAgent = useAgentStore((state) => state.clearAgent);
12 const clearMessages = useChatStore((state) => state.clearMessages);
13
14 // Load stored token on mount
15 useEffect(() => {
16 authStore.loadStoredToken();
17 }, []);
18
19 // Enhanced logout that clears all related state
20 const logout = async () => {
21 await authStore.logout();
22 clearAgent();
23 clearMessages();
24 };
25
26 return {
27 apiToken: authStore.apiToken,
28 isConnected: authStore.isConnected,
29 isConnecting: authStore.isConnecting,
30 isLoadingToken: authStore.isLoadingToken,
31 connectionError: authStore.connectionError,
32
33 setToken: authStore.setToken,
34 connectWithToken: authStore.connectWithToken,
35 logout,
36 clearError: authStore.clearError,
37 };
38}