projectInfo.ts 1.3 KB
import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore";
import { ProjectInfoEnum, ProjectInfoStoreType } from './projectInfo.d'
import { defineStore } from "pinia";
import { SyncEnum } from "@/enums/external/editPageEnum";

export const useProjectInfoStore = defineStore({
  id: 'useProjectInfoStore',
  state: (): ProjectInfoStoreType => ({
    info: {
    } as ProjectInfoStoreType['info'],
    saveStatus: SyncEnum.FAILURE,
    accessCredentials: ''
  }),
  getters: {
    getProjectInfo(): ProjectInfoStoreType[ProjectInfoEnum.INFO] {
      return Reflect.get(this, ProjectInfoEnum.INFO)
    },
    getSaveStatus(): ProjectInfoStoreType[ProjectInfoEnum.SAVE_STATUS] {
      return Reflect.get(this, ProjectInfoEnum.SAVE_STATUS)
    }
  },
  actions: {
    setProjectInfo<T extends ProjectInfoStoreType[ProjectInfoEnum.INFO]>(value: T) {
      this[ProjectInfoEnum.INFO] = value
    },
    setProjectInfoByKey<T extends keyof ProjectInfoStoreType[ProjectInfoEnum.INFO], K extends ProjectInfoStoreType[ProjectInfoEnum.INFO][T]>(key: T, value: K) {
      this[ProjectInfoEnum.INFO][key] = value
    },
    setSaveStatus(status: SyncEnum) {
      this[ProjectInfoEnum.SAVE_STATUS] = status
    },
    setAccessCredentials(string: string) {
      this[ProjectInfoEnum.ACCESS_CREDENTIALS] = string
    }
  }
})