jan/web/hooks/useFactoryReset.ts

50 lines
1.5 KiB
TypeScript

import { useEffect, useState } from 'react'
import { fs, AppConfiguration, joinPath, getUserHomePath } from '@janhq/core'
export default function useFactoryReset() {
const [defaultJanDataFolder, setdefaultJanDataFolder] = useState('')
useEffect(() => {
async function getDefaultJanDataFolder() {
const homePath = await getUserHomePath()
const defaultJanDataFolder = await joinPath([homePath, 'jan'])
setdefaultJanDataFolder(defaultJanDataFolder)
}
getDefaultJanDataFolder()
}, [])
const resetAll = async (keepCurrentFolder?: boolean) => {
// read the place of jan data folder
const appConfiguration: AppConfiguration | undefined =
await window.core?.api?.getAppConfigurations()
if (!appConfiguration) {
console.debug('Failed to get app configuration')
}
console.debug('appConfiguration: ', appConfiguration)
const janDataFolderPath = appConfiguration!.data_folder
if (!keepCurrentFolder) {
// set the default jan data folder to user's home directory
const configuration: AppConfiguration = {
data_folder: defaultJanDataFolder,
quick_ask: appConfiguration?.quick_ask ?? false,
}
await window.core?.api?.updateAppConfiguration(configuration)
}
await fs.rmdirSync(janDataFolderPath, { recursive: true })
// reset the localStorage
localStorage.clear()
await window.core?.api?.relaunch()
}
return {
defaultJanDataFolder,
resetAll,
}
}