1
1
mirror of https://github.com/neosubhamoy/neodlp.git synced 2026-03-22 13:45:50 +05:30
Files
neodlp/src/helpers/use-settings.ts

63 lines
2.3 KiB
TypeScript

import { toast } from "sonner";
import { useResetSettings, useSaveSettingsKey } from "@/services/mutations";
import { useSettingsPageStatesStore } from "@/services/store";
import { useQueryClient } from "@tanstack/react-query";
import { invoke } from "@tauri-apps/api/core";
export function useSettings() {
const queryClient = useQueryClient();
const setSettingsKey = useSettingsPageStatesStore(state => state.setSettingsKey);
const resetSettingsState = useSettingsPageStatesStore(state => state.resetSettings);
const triggerFormReset = useSettingsPageStatesStore(state => state.triggerFormReset);
const settingsKeySaver = useSaveSettingsKey();
const settingsReseter = useResetSettings();
const saveSettingsKey = (key: string, value: unknown) => {
settingsKeySaver.mutate({ key, value }, {
onSuccess: (data) => {
setSettingsKey(key, value);
console.log("Settings key saved successfully:", data);
queryClient.invalidateQueries({ queryKey: ["settings"] });
},
onError: (error) => {
console.error("Error saving settings key:", error);
queryClient.invalidateQueries({ queryKey: ["settings"] });
toast.error("Failed to update settings", {
description: `Failed to update ${key}`,
});
}
});
};
const resetSettings = () => {
settingsReseter.mutate(undefined, {
onSuccess: async () => {
try {
await invoke("reset_config");
resetSettingsState();
triggerFormReset();
console.log("Settings reset successfully");
queryClient.invalidateQueries({ queryKey: ["settings"] });
toast.success("Settings reset successfully", {
description: "All settings have been reset to default.",
});
} catch (error) {
console.error("Error resetting settings:", error);
toast.error("Failed to reset settings", {
description: "Failed to reset settings to default.",
});
return;
}
},
onError: (error) => {
console.error("Error resetting settings:", error);
toast.error("Failed to reset settings", {
description: "Failed to reset settings to default.",
});
}
});
};
return { saveSettingsKey, resetSettings };
}