import { create, State } from 'zustand'
import { createJSONStorage, persist } from 'zustand/middleware'

export type config = {
  paperSize: string
  isDark: Boolean
}

type configState = {
  config: config
  updatePaperSize: (size: string) => void
  setDark: (mode: Boolean) => void
}

export const useConfig = create<configState>()(
  persist(
    (set, get) => ({
      config: { paperSize: 'A6', isDark: true },
      updatePaperSize: (size: string) =>
        set((state) => {
          return { ...state, config: { ...state.config, paperSize: size } }
        }),

      setDark: (mode: Boolean) =>
        set((state) => {
          return {
            ...state,
            config: { ...state.config, isDark: !state.config.isDark },
          }
        }),
    }),
    {
      name: 'configuration',
      storage: createJSONStorage(() => localStorage),
    }
  )
)
