Feature(custom): add new config field temp dir path

ISSUES CLOSED: #112
This commit is contained in:
Kuingsmile
2023-11-13 20:21:23 -08:00
parent b53c9d495f
commit e968a65cca
8 changed files with 52 additions and 7 deletions

View File

@@ -67,6 +67,13 @@ export const manageIpcList = {
return res
})
ipcMain.handle('openDirectorySelectDialog', async () => {
const res = await dialog.showOpenDialog({
properties: ['openDirectory']
})
return res.filePaths[0]
})
ipcMain.handle('openFileSelectDialog', async () => {
const res = await dialog.showOpenDialog({
properties: ['openFile', 'multiSelections']

View File

@@ -48,8 +48,18 @@ export function isInputConfigValid (config: any): boolean {
export const getFileMimeType = (filePath: string): string => mime.lookup(filePath) || 'application/octet-stream'
const checkTempFolderExist = async () => {
const tempPath = path.join(app.getPath('downloads'), 'piclistTemp')
const getTempDirPath = () => {
const defaultPath = path.join(app.getPath('downloads'), 'piclistTemp')
try {
const configFilePath = path.join(app.getPath('userData'), 'data.json')
const { settings: { tempDirPath = '' } = {} } = fs.readJSONSync(configFilePath) || {}
return tempDirPath ? path.join(tempDirPath, 'piclistTemp') : defaultPath
} catch (e) {
return defaultPath
}
}
const checkTempFolderExist = async (tempPath: string) => {
try {
await fs.access(tempPath)
} catch (e) {
@@ -58,8 +68,8 @@ const checkTempFolderExist = async () => {
}
export const downloadFileFromUrl = async (urls: string[]) => {
const tempPath = path.join(app.getPath('downloads'), 'piclistTemp')
await checkTempFolderExist()
const tempPath = getTempDirPath()
await checkTempFolderExist(tempPath)
const result = [] as string[]
for (let i = 0; i < urls.length; i++) {
const finishDownload = promisify(Stream.finished)
@@ -78,7 +88,7 @@ export const downloadFileFromUrl = async (urls: string[]) => {
return result
}
export const clearTempFolder = () => fs.emptyDirSync(path.join(app.getPath('downloads'), 'piclistTemp'))
export const clearTempFolder = () => fs.emptyDirSync(getTempDirPath())
export const md5 = (str: string, code: 'hex' | 'base64'): string => crypto.createHash('md5').update(str).digest(code)

View File

@@ -194,6 +194,18 @@
{{ $T('SETTINGS_CLICK_TO_SET') }}
</el-button>
</el-form-item>
<el-form-item
:label="$T('SETTINGS_GENERAL_TEMP_DIR_PATH')"
>
<el-button
type="primary"
round
size="small"
@click="handleTempDirPath"
>
{{ $T('SETTINGS_CLICK_TO_SET') }}
</el-button>
</el-form-item>
</el-form>
</el-row>
</el-col>
@@ -1725,7 +1737,8 @@ const form = reactive<ISettingForm>({
yourlsSignature: '',
deleteLocalFile: false,
serverKey: '',
aesPassword: ''
aesPassword: '',
tempDirPath: ''
})
const languageList = i18nManager.languageList.map(item => ({
@@ -1890,6 +1903,7 @@ async function initData () {
form.deleteLocalFile = settings.deleteLocalFile || false
form.serverKey = settings.serverKey || ''
form.aesPassword = settings.aesPassword || 'PicList-aesPassword'
form.tempDirPath = settings.tempDirPath || ''
currentLanguage.value = settings.language ?? 'zh-CN'
currentStartMode.value = settings.startMode || 'quiet'
customLink.value = settings.customLink || '![$fileName]($url)'
@@ -2195,6 +2209,15 @@ function handleMiniWindowOntop (val: ICheckBoxValueType) {
$message.info($T('TIPS_NEED_RELOAD'))
}
async function handleTempDirPath (evt: Event) {
const result = await invokeToMain('openDirectorySelectDialog')
if (result) {
form.tempDirPath = result
saveConfig('settings.tempDirPath', form.tempDirPath)
$message.info($T('TIPS_NEED_RELOAD'))
}
}
async function handleMiniIconPath (evt: Event) {
const result = await invokeToMain('openFileSelectDialog')
if (result && result[0]) {

View File

@@ -292,6 +292,7 @@ interface ILocales {
SETTINGS_TAB_UPLOAD: string
SETTINGS_TAB_ADVANCED: string
SETTINGS_TAB_UPDATE: string
SETTINGS_GENERAL_TEMP_DIR_PATH: string
SHORTCUT_NAME: string
SHORTCUT_BIND: string
SHORTCUT_STATUS: string

View File

@@ -29,7 +29,8 @@ interface ISettingForm {
yourlsSignature: string,
deleteLocalFile: boolean,
serverKey: string,
aesPassword: string
aesPassword: string,
tempDirPath: string,
}
interface IShortKeyMap {