Initial release v1.0.0
This commit is contained in:
65
frontend/features/settings/hooks/useSettingsData.ts
Normal file
65
frontend/features/settings/hooks/useSettingsData.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { useState, useEffect } from "react";
|
||||
import { api } from "@/lib/api";
|
||||
import { useAuth } from "@/lib/auth-context";
|
||||
import { UserSettings } from "../types";
|
||||
|
||||
const defaultSettings: UserSettings = {
|
||||
playbackQuality: "original",
|
||||
wifiOnly: false,
|
||||
offlineEnabled: false,
|
||||
maxCacheSizeMb: 5120,
|
||||
};
|
||||
|
||||
export function useSettingsData() {
|
||||
const { isAuthenticated } = useAuth();
|
||||
const [settings, setSettings] = useState<UserSettings>(defaultSettings);
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (isAuthenticated) {
|
||||
loadSettings();
|
||||
}
|
||||
}, [isAuthenticated]);
|
||||
|
||||
const loadSettings = async () => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const data = await api.getSettings();
|
||||
setSettings(data);
|
||||
} catch (error) {
|
||||
console.error("Failed to load settings:", error);
|
||||
// No toast - error visible in UI if settings fail to load
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const saveSettings = async (newSettings: UserSettings) => {
|
||||
try {
|
||||
setIsSaving(true);
|
||||
await api.updateSettings(newSettings);
|
||||
setSettings(newSettings);
|
||||
// No toast - caller shows inline status
|
||||
} catch (error) {
|
||||
console.error("Failed to save settings:", error);
|
||||
throw error; // Re-throw so caller can show inline error
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
}
|
||||
};
|
||||
|
||||
const updateSettings = (updates: Partial<UserSettings>) => {
|
||||
setSettings((prev) => ({ ...prev, ...updates }));
|
||||
};
|
||||
|
||||
return {
|
||||
settings,
|
||||
isLoading,
|
||||
isSaving,
|
||||
setSettings,
|
||||
updateSettings,
|
||||
saveSettings,
|
||||
loadSettings,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user