File size: 1,215 Bytes
f555806
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'use client';

import { useEffect, useState } from 'react';
import { SettingsData } from '@/types';
import { DEFAULT_SETTINGS, loadSettings } from '@/utils/storage/settingsStorage';
import { useAuth } from '@/contexts/AuthContext';

export default function useSettings() {
  const [settings, setSettings] = useState<SettingsData>(DEFAULT_SETTINGS);
  const [isSettingsLoaded, setIsLoaded] = useState(false);
  const { token: authToken } = useAuth();

  useEffect(() => {
    let isMounted = true;

    loadSettings()
      .then(data => {
        if (isMounted) {
          setSettings(data);
          setIsLoaded(true);
        }
      })
      .catch(error => {
        console.error('Error fetching settings:', error);
        if (isMounted) {
          setIsLoaded(true);
        }
      });

    return () => {
      isMounted = false;
    };
  }, []);

  useEffect(() => {
    if (!isSettingsLoaded) {
      return;
    }
    setSettings(prev => {
      const nextToken = authToken || '';
      if (prev.HF_TOKEN === nextToken) {
        return prev;
      }
      return { ...prev, HF_TOKEN: nextToken };
    });
  }, [authToken, isSettingsLoaded]);

  return { settings, setSettings, isSettingsLoaded };
}