/**
 * runtime: web
 * The electron package cannot be imported directly, it can only be imported dynamically.
 * Because webpack will import the corresponding package when analyzing dependencies,
 * an electron-related error will be prompted in the browser host.
 */

import { DownloadMutations, LocalMusicMutations } from '@/interface'
import { useDownloadModule, useLocalMusicModule } from '@/modules'
import store from '@/store'
import { isElectron } from '@/utils'

const initStorage = async () => {
  if (isElectron) {
    const downloadModule = useDownloadModule()
    const localMusicModule = useLocalMusicModule()
    const downloadState = store.state.Download
    const localMusicState = store.state.LocalMusic

    const os = electronAPI.os.userInfo()
    const userDownloadPath = electronAPI.path.join(os.homedir + '/Downloads')
    if (!downloadState.downloadPath) {
      downloadModule.useMutations(
        DownloadMutations.SET_DOWNLOAD_PATH,
        userDownloadPath
      )
    }

    const userMusicPath = electronAPI.path.join(os.homedir + '/Music')
    if (!localMusicState.normalPath) {
      localMusicModule.useMutations(
        LocalMusicMutations.SET_NORMAL_PATH,
        userMusicPath
      )
    }

    const paths = [
      {
        path: userMusicPath,
        name: '我的音乐',
        check: true
      },
      {
        path: userDownloadPath,
        name: '下载',
        check: true
      }
    ]
    if (!localMusicState.localPath.length) {
      localMusicModule.useMutations(LocalMusicMutations.SET_LOCAL_PATH, paths)
    }

    const songs = await electronAPI.readPathMusic(paths.map(item => item.path))

    localMusicModule.useMutations(LocalMusicMutations.SET_LOCAL_MUSIC, songs)
  }
}

const init = () => {
  initStorage()
}

export default init