import { create } from "zustand";

interface LoaderState {
  activeRequests: number;
  isLoading: boolean;
  show: () => void;
  hide: () => void;
}

export const useLoaderStore = create<LoaderState>((set, get) => ({
  activeRequests: 0,
  isLoading: false,
  show: () =>
    set((state) => ({
      activeRequests: state.activeRequests + 1,
      isLoading: true,
    })),
  hide: () =>
    set((state) => {
      const next = Math.max(0, state.activeRequests - 1);
      return { activeRequests: next, isLoading: next > 0 };
    }),
}));