import { create } from "zustand";
import { savePreferencesApi } from "../services/preferencesApi";
import { UserPreferences } from "../types/preferences";

interface PreferencesState {
  preferences: UserPreferences | null;
  loading: boolean;
  error: string | null;

  setPreferences: (data: UserPreferences) => void;

  savePreferences: (
    payload: UserPreferences
  ) => Promise<boolean>;
}

export const usePreferencesStore =
  create<PreferencesState>((set) => ({
    preferences: null,
    loading: false,
    error: null,

    setPreferences: (data) => {
      set({
        preferences: data,
      });
    },

    savePreferences: async (payload) => {
      try {
        set({
          loading: true,
          error: null,
        });

        const response = await savePreferencesApi(
          payload
        );

        set({
          preferences:
            response?.data || payload,
          loading: false,
        });

        return true;
      } catch (error: any) {
        set({
          loading: false,
          error:
            error?.response?.data?.msg ||
            error?.message ||
            "Failed to save preferences",
        });

        return false;
      }
    },
  }));