import { defineStore } from 'pinia'
import { ref } from 'vue'
import { readConfig } from '@/utils/readJson.ts'
import { store } from '@/stores'

export interface Config {
  title: string
  subTitle: string
  centerTitle: string
  taskPromptWords: string[]
  agentRepository: {
    storageVersionIdentifier: string
  }
  // 是否是开发环境
  dev?: boolean
  // api base url
  apiBaseUrl?: string
}

const defaultConfig: Config = {
  apiBaseUrl: `${import.meta.env.BASE_URL || '/'}api`
} as Config
export const useConfigStore = defineStore('config', () => {
  const  config = ref<Config>({} as Config)

  // 异步调用readConfig
  async function initConfig() {
    const data = await readConfig<Config>('config.json')
    config.value = {
      ...defaultConfig,
      ...data
    }
  }


  return {
    config,
    initConfig
  }
})


/**
 * 用于在组件外部（如在Pinia Store 中）使用 Pinia 提供的 store 实例。
 * 官方文档解释了如何在组件外部使用 Pinia Store：
 * https://pinia.vuejs.org/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component
 */
export function useConfigStoreHook() {
  return useConfigStore(store)
}
