From 2c13ae63ab3377162ab2ff8643113dfa1760ab88 Mon Sep 17 00:00:00 2001 From: Kuingsmile <96409857+Kuingsmile@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:49:15 +0800 Subject: [PATCH] :zap: Perf(custom): improve init perf of several pages --- src/main/apis/app/system/index.ts | 15 ++++---- src/main/apis/app/uploader/apis.ts | 34 +++++++------------ src/main/apis/app/uploader/index.ts | 12 ++++--- src/main/apis/app/window/windowList.ts | 5 +-- src/main/apis/gui/index.ts | 16 ++++----- src/main/events/remotes/menu.ts | 18 +++++----- src/main/events/rpc/routes/gallery/index.ts | 6 ++-- src/main/events/rpc/routes/tray/index.ts | 14 +++----- src/main/lifeCycle/index.ts | 18 +++++----- src/main/server/routerManager.ts | 10 +++--- src/main/server/webServer/index.ts | 10 +++--- src/main/utils/common.ts | 8 ++--- src/main/utils/getPicBeds.ts | 12 +++---- src/main/utils/uploadTaskQueue.ts | 11 +++--- .../components/ImageProcessSetting.vue | 25 ++++++-------- 15 files changed, 91 insertions(+), 123 deletions(-) diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts index fc5cc18b..38e83604 100644 --- a/src/main/apis/app/system/index.ts +++ b/src/main/apis/app/system/index.ts @@ -310,30 +310,27 @@ export function createTray(tooltip: string) { // so the tray window must be available if (process.platform === 'darwin') { ;(tray as any).on('drop-files', async (_: Event, files: string[]) => { - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN + const allConfig = picgo.getConfig() || {} + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN const rawInput = cloneDeep(files) const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)! const res = await uploader.setWebContents(trayWindow.webContents).uploadReturnCtx(files) const imgs = res[0] ? res[0] : false const backImgs = res[1] ? res[1] : false - const deleteLocalFile = picgo.getConfig(configPaths.settings.deleteLocalFile) || false + const deleteLocalFile = allConfig.settings?.deleteLocalFile || false if (imgs !== false) { const pasteText: string[] = [] for (let i = 0; i < imgs.length; i++) { if (deleteLocalFile) { await fs.remove(rawInput[i]) } - const [pasteTextItem, shortUrl] = await pasteTemplate( - pasteStyle, - imgs[i], - picgo.getConfig(configPaths.settings.customLink), - ) + const [pasteTextItem, shortUrl] = await pasteTemplate(pasteStyle, imgs[i], allConfig.settings?.customLink) imgs[i].shortUrl = shortUrl pasteText.push(pasteTextItem) const isShowResultNotification = - picgo.getConfig(configPaths.settings.uploadResultNotification) === undefined + allConfig.settings?.uploadResultNotification === undefined ? true - : !!picgo.getConfig(configPaths.settings.uploadResultNotification) + : !!allConfig.settings?.uploadResultNotification if (isShowResultNotification) { const notification = new Notification({ title: $t('UPLOAD_SUCCEED'), diff --git a/src/main/apis/app/uploader/apis.ts b/src/main/apis/app/uploader/apis.ts index c33c9665..1b8dc6bf 100644 --- a/src/main/apis/app/uploader/apis.ts +++ b/src/main/apis/app/uploader/apis.ts @@ -13,10 +13,8 @@ import { IPasteStyle, IWindowList } from '~/utils/enum' import pasteTemplate from '~/utils/pasteTemplate' const handleClipboardUploadingReturnCtx = async (img?: IUploadOption): Promise<(ImgInfo[] | false)[]> => { - const useBuiltinClipboard = - picgo.getConfig(configPaths.settings.useBuiltinClipboard) === undefined - ? true - : !!picgo.getConfig(configPaths.settings.useBuiltinClipboard) + const useBuiltinClipboardConfig = picgo.getConfig(configPaths.settings.useBuiltinClipboard) + const useBuiltinClipboard = useBuiltinClipboardConfig === undefined ? true : !!useBuiltinClipboardConfig const win = windowManager.getAvailableWindow() if (useBuiltinClipboard) { return await uploader.setWebContents(win!.webContents).uploadWithBuildInClipboardReturnCtx(img) @@ -30,21 +28,18 @@ export const uploadClipboardFiles = async (): Promise => { const res = await handleClipboardUploadingReturnCtx() img = res[0] ? res[0] : false backImg = res[1] ? res[1] : false + const allConfig = picgo.getConfig() || {} if (img !== false) { if (img.length > 0) { const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW) - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const [pastedText, shortUrl] = await pasteTemplate( - pasteStyle, - img[0], - picgo.getConfig(configPaths.settings.customLink), - ) + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const [pastedText, shortUrl] = await pasteTemplate(pasteStyle, img[0], allConfig.settings?.customLink) img[0].shortUrl = shortUrl handleCopyUrl(pastedText) const isShowResultNotification = - picgo.getConfig(configPaths.settings.uploadResultNotification) === undefined + allConfig.settings?.uploadResultNotification === undefined ? true - : !!picgo.getConfig(configPaths.settings.uploadResultNotification) + : !!allConfig.settings?.uploadResultNotification if (isShowResultNotification) { const notification = new Notification({ title: $t('UPLOAD_SUCCEED'), @@ -104,9 +99,10 @@ export const uploadChoosedFiles = async ( imgs = res[0] ? res[0] : false backImgs = res[1] ? res[1] : false const result = [] + const allConfig = picgo.getConfig() || {} if (imgs !== false) { - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const deleteLocalFile = picgo.getConfig(configPaths.settings.deleteLocalFile) || false + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const deleteLocalFile = allConfig.settings?.deleteLocalFile || false const pasteText: string[] = [] const imgLength = imgs.length for (let i = 0; i < imgLength; i++) { @@ -119,17 +115,13 @@ export const uploadChoosedFiles = async ( picgo.log.error(err) }) } - const [pasteTextItem, shortUrl] = await pasteTemplate( - pasteStyle, - imgs[i], - picgo.getConfig(configPaths.settings.customLink), - ) + const [pasteTextItem, shortUrl] = await pasteTemplate(pasteStyle, imgs[i], allConfig.settings?.customLink) imgs[i].shortUrl = shortUrl pasteText.push(pasteTextItem) const isShowResultNotification = - picgo.getConfig(configPaths.settings.uploadResultNotification) === undefined + allConfig.settings?.uploadResultNotification === undefined ? true - : !!picgo.getConfig(configPaths.settings.uploadResultNotification) + : !!allConfig.settings?.uploadResultNotification if (isShowResultNotification) { if (imgLength <= 3) { const notification = new Notification({ diff --git a/src/main/apis/app/uploader/index.ts b/src/main/apis/app/uploader/index.ts index d15b89be..846ff1dc 100644 --- a/src/main/apis/app/uploader/index.ts +++ b/src/main/apis/app/uploader/index.ts @@ -60,10 +60,11 @@ class Uploader { picgo.helper.beforeUploadPlugins.register('renameFn', { handle: async (ctx: IPicGo) => { const uploaderType = getUploaderType(ctx) + const allConfig = picgo.getConfig() || {} - const globalRename = picgo.getConfig(configPaths.settings.rename) - const globalAutoRename = picgo.getConfig(configPaths.settings.autoRename) - const buildInList = picgo.getConfig(configPaths.buildIn.list._name) || [] + const globalRename = allConfig.settings?.rename + const globalAutoRename = allConfig.settings?.autoRename + const buildInList = allConfig.buildIn?.list || [] const idSpecificRename = buildInList.find((item: any) => item.id === uploaderType.id)?.manualRename const idSpecificAutoRename = buildInList.find((item: any) => item.id === uploaderType.id)?.autoRename const rename = idSpecificRename !== undefined ? !!idSpecificRename : !!globalRename @@ -137,17 +138,18 @@ class Uploader { try { const result = [false, false] as (ImgInfo[] | false)[] const res = await picgo.uploadReturnCtx(img) + const allConfig = picgo.getConfig() || {} if (Array.isArray(res.output) && res.output.some((item: ImgInfo) => item.imgUrl)) { res.output.forEach((item: ImgInfo) => { - item.config = JSON.parse(JSON.stringify(picgo.getConfig(`picBed.${item.type}`))) + item.config = JSON.parse(JSON.stringify(allConfig.picBed?.[item.type!])) }) result[0] = res.output } if (Array.isArray(res.backupOutput) && res.backupOutput.some((item: ImgInfo) => item.imgUrl)) { res.backupOutput.forEach((item: ImgInfo) => { - item.config = JSON.parse(JSON.stringify(picgo.getConfig(`picBed.${item.type}`))) + item.config = JSON.parse(JSON.stringify(allConfig.picBed?.[item.type!])) }) result[1] = res.backupOutput } diff --git a/src/main/apis/app/window/windowList.ts b/src/main/apis/app/window/windowList.ts index 4fc06e7e..dcd152ff 100644 --- a/src/main/apis/app/window/windowList.ts +++ b/src/main/apis/app/window/windowList.ts @@ -17,8 +17,9 @@ import { applyTheme } from '../theme' const windowList = new Map() const getDefaultWindowSizes = (): { width: number; height: number } => { - const mainWindowWidth = picgo.getConfig(configPaths.settings.mainWindowWidth) - const mainWindowHeight = picgo.getConfig(configPaths.settings.mainWindowHeight) + const allConfig = picgo.getConfig() || {} + const mainWindowWidth = allConfig.settings?.mainWindowWidth + const mainWindowHeight = allConfig.settings?.mainWindowHeight return { width: mainWindowWidth || 1200, height: mainWindowHeight || 800, diff --git a/src/main/apis/gui/index.ts b/src/main/apis/gui/index.ts index 3674a7ec..157f62f2 100644 --- a/src/main/apis/gui/index.ts +++ b/src/main/apis/gui/index.ts @@ -11,7 +11,6 @@ import { cloneDeep } from 'lodash-es' import { SHOW_INPUT_BOX } from '~/events/constant' import { T as $t } from '~/i18n' import { handleCopyUrl } from '~/utils/common' -import { configPaths } from '~/utils/configPaths' import { IPasteStyle } from '~/utils/enum' import pasteTemplate from '~/utils/pasteTemplate' @@ -78,25 +77,22 @@ class GuiApi implements IGuiApi { const imgs = res[0] ? res[0] : false const backImgs = res[1] ? res[1] : false let result: ImgInfo[] = [] + const allConfig = picgo.getConfig() || {} if (imgs !== false) { - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const deleteLocalFile = picgo.getConfig(configPaths.settings.deleteLocalFile) || false + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const deleteLocalFile = allConfig.settings?.deleteLocalFile || false const pasteText: string[] = [] for (let i = 0; i < imgs.length; i++) { if (deleteLocalFile) { await fs.remove(rawInput[i]) } - const [pasteTextItem, shortUrl] = await pasteTemplate( - pasteStyle, - imgs[i], - picgo.getConfig(configPaths.settings.customLink), - ) + const [pasteTextItem, shortUrl] = await pasteTemplate(pasteStyle, imgs[i], allConfig.settings?.customLink) imgs[i].shortUrl = shortUrl pasteText.push(pasteTextItem) const isShowResultNotification = - picgo.getConfig(configPaths.settings.uploadResultNotification) === undefined + allConfig.settings?.uploadResultNotification === undefined ? true - : !!picgo.getConfig(configPaths.settings.uploadResultNotification) + : !!allConfig.settings?.uploadResultNotification if (isShowResultNotification) { const notification = new Notification({ title: $t('UPLOAD_SUCCEED'), diff --git a/src/main/events/remotes/menu.ts b/src/main/events/remotes/menu.ts index db4d4a38..64a198de 100644 --- a/src/main/events/remotes/menu.ts +++ b/src/main/events/remotes/menu.ts @@ -144,14 +144,13 @@ const buildMainPageMenu = (win: BrowserWindow) => { const buildSecondPicBedMenu = () => { const picBeds = getPicBeds().picBeds - const secondUploader = picgo.getConfig(configPaths.picBed.secondUploader) - const defaultSecondUploaderConfig = picgo.getConfig(configPaths.picBed.secondUploaderConfig) as - | IUploaderConfig - | undefined + const allConfig = picgo.getConfig() || {} + const secondUploader = allConfig.picBed?.secondUploader + const defaultSecondUploaderConfig = allConfig.picBed?.secondUploaderConfig as IUploaderConfig | undefined const defaultSecondUploaderId = defaultSecondUploaderConfig?._id || '' const defaultSecondUploaderName = defaultSecondUploaderConfig?._configName || 'Default' const currentPicBedName = picBeds.find(item => item.type === secondUploader)?.name - const picBedConfigList = picgo.getConfig('uploader') + const picBedConfigList = allConfig.uploader const currentPicBedMenuItem = [ { label: `${$t('CURRENT_SECOND_PICBED')} - ${currentPicBedName || 'None'} - ${defaultSecondUploaderName}`, @@ -171,7 +170,7 @@ const buildSecondPicBedMenu = () => { type: !hasSubmenu ? 'checkbox' : undefined, checked: !hasSubmenu ? secondUploader === item.type : undefined, submenu: hasSubmenu - ? configList.map(config => { + ? configList.map((config: any) => { return { label: config._configName || 'Default', // if only one config, use checkbox, or radio will checked as default @@ -202,9 +201,10 @@ const buildSecondPicBedMenu = () => { const buildPicBedListMenu = () => { const picBeds = getPicBeds().picBeds - const currentPicBed = picgo.getConfig(configPaths.picBed.uploader) + const allConfig = picgo.getConfig() || {} + const currentPicBed = allConfig.picBed?.uploader const currentPicBedName = picBeds.find(item => item.type === currentPicBed)?.name - const picBedConfigList = picgo.getConfig('uploader') + const picBedConfigList = allConfig.uploader const currentPicBedMenuItem = [ { label: `${$t('CURRENT_PICBED')} - ${currentPicBedName}`, @@ -225,7 +225,7 @@ const buildPicBedListMenu = () => { type: !hasSubmenu ? 'checkbox' : undefined, checked: !hasSubmenu ? currentPicBed === item.type : undefined, submenu: hasSubmenu - ? configList.map(config => { + ? configList.map((config: any) => { return { label: config._configName || 'Default', // if only one config, use checkbox, or radio will checked as default diff --git a/src/main/events/rpc/routes/gallery/index.ts b/src/main/events/rpc/routes/gallery/index.ts index 133ff550..b10b73a4 100644 --- a/src/main/events/rpc/routes/gallery/index.ts +++ b/src/main/events/rpc/routes/gallery/index.ts @@ -4,7 +4,6 @@ import GuiApi from 'apis/gui' import { clipboard } from 'electron' import { RPCRouter } from '~/events/rpc/router' -import { configPaths } from '~/utils/configPaths' import { ICOREBuildInEvent, IPasteStyle, IRPCActionType, IRPCType } from '~/utils/enum' import pasteTemplate from '~/utils/pasteTemplate' interface IFilter { @@ -24,8 +23,9 @@ const galleryRoutes = [ action: IRPCActionType.GALLERY_PASTE_TEXT, handler: async (_: IIPCEvent, args: [item: ImgInfo, copy?: boolean]) => { const [item, copy = true] = args - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const customLink = picgo.getConfig(configPaths.settings.customLink) + const allConfig = picgo.getConfig() || {} + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const customLink = allConfig.settings?.customLink const [txt, shortUrl] = await pasteTemplate(pasteStyle, item, customLink) if (copy) { clipboard.writeText(txt) diff --git a/src/main/events/rpc/routes/tray/index.ts b/src/main/events/rpc/routes/tray/index.ts index 59b39570..135f95ac 100644 --- a/src/main/events/rpc/routes/tray/index.ts +++ b/src/main/events/rpc/routes/tray/index.ts @@ -7,7 +7,6 @@ import { Notification } from 'electron' import { RPCRouter } from '~/events/rpc/router' import { T as $t } from '~/i18n' import { generateShortUrl, handleCopyUrl, setTrayToolTip } from '~/utils/common' -import { configPaths } from '~/utils/configPaths' import { IPasteStyle, IRPCActionType, IRPCType, IWindowList } from '~/utils/enum' import pasteTemplate from '~/utils/pasteTemplate' @@ -35,19 +34,16 @@ const trayRoutes = [ const res = await uploader.setWebContents(trayWindow.webContents).uploadWithBuildInClipboardReturnCtx() const img = res[0] ? res[0] : false const backupImgs = res[1] ? res[1] : false + const allConfig = picgo.getConfig() || {} if (img !== false) { - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const [pasteText, shortUrl] = await pasteTemplate( - pasteStyle, - img[0], - picgo.getConfig(configPaths.settings.customLink), - ) + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const [pasteText, shortUrl] = await pasteTemplate(pasteStyle, img[0], allConfig.settings?.customLink) img[0].shortUrl = shortUrl handleCopyUrl(pasteText) const isShowResultNotification = - picgo.getConfig(configPaths.settings.uploadResultNotification) === undefined + allConfig.settings?.uploadResultNotification === undefined ? true - : !!picgo.getConfig(configPaths.settings.uploadResultNotification) + : !!allConfig.settings?.uploadResultNotification if (isShowResultNotification) { const notification = new Notification({ title: $t('UPLOAD_SUCCEED'), diff --git a/src/main/lifeCycle/index.ts b/src/main/lifeCycle/index.ts index 44c4d5e0..0a37bf98 100644 --- a/src/main/lifeCycle/index.ts +++ b/src/main/lifeCycle/index.ts @@ -81,9 +81,10 @@ class LifeCycle { #onReady() { const readyFunction = async () => { + const allConfig = picgo.getConfig() || {} windowManager.create(IWindowList.TRAY_WINDOW) windowManager.create(IWindowList.SETTING_WINDOW) - const isAutoListenClipboard = picgo.getConfig(configPaths.settings.isAutoListenClipboard) || false + const isAutoListenClipboard = allConfig.settings?.isAutoListenClipboard || false const ClipboardWatcher = clipboardPoll if (isAutoListenClipboard) { picgo.saveConfig({ [configPaths.settings.isListeningClipboard]: true }) @@ -95,16 +96,13 @@ class LifeCycle { } else { picgo.saveConfig({ [configPaths.settings.isListeningClipboard]: false }) } - const isHideDock = picgo.getConfig(configPaths.settings.isHideDock) || false - let startMode = picgo.getConfig(configPaths.settings.startMode) || ISartMode.QUIET + const isHideDock = allConfig.settings?.isHideDock || false + let startMode = allConfig.settings?.startMode || ISartMode.QUIET if (process.platform === 'darwin' && startMode === ISartMode.MINI) { startMode = ISartMode.QUIET } - const currentPicBed = - picgo.getConfig(configPaths.picBed.uploader) || - picgo.getConfig(configPaths.picBed.current) || - 'smms' - const currentPicBedConfig = picgo.getConfig(`picBed.${currentPicBed}`)?._configName || 'Default' + const currentPicBed = allConfig.picBed?.uploader || allConfig.picBed?.current || 'smms' + const currentPicBedConfig = allConfig.picBed?.[currentPicBed]?._configName || 'Default' const tooltip = `${currentPicBed} ${currentPicBedConfig}` if (process.platform === 'darwin') { isHideDock ? app.dock?.hide() : setDockMenu() @@ -138,11 +136,11 @@ class LifeCycle { windowManager.create(IWindowList.MINI_WINDOW) const miniWindow = windowManager.get(IWindowList.MINI_WINDOW)! miniWindow.removeAllListeners() - if (picgo.getConfig(configPaths.settings.miniWindowOntop)) { + if (allConfig.settings?.miniWindowOntop) { miniWindow.setAlwaysOnTop(true) } const { width, height } = screen.getPrimaryDisplay().workAreaSize - const lastPosition = picgo.getConfig(configPaths.settings.miniWindowPosition) + const lastPosition = allConfig.settings?.miniWindowPosition if (lastPosition) { if (lastPosition[0] < 0 || lastPosition[0] > width || lastPosition[1] < 0 || lastPosition[1] > height) { miniWindow.setPosition(width - 100, height - 100) diff --git a/src/main/server/routerManager.ts b/src/main/server/routerManager.ts index 89079bcd..51cc364f 100644 --- a/src/main/server/routerManager.ts +++ b/src/main/server/routerManager.ts @@ -13,7 +13,6 @@ import { markdownContent } from '~/server/apiDoc' import router from '~/server/router' import { deleteChoosedFiles, handleResponse } from '~/server/utils' import { AESHelper } from '~/utils/aesHelper' -import { configPaths } from '~/utils/configPaths' import { changeCurrentUploader } from '~/utils/handleUploaderConfig' const appPath = dataDir() @@ -45,10 +44,11 @@ router.post( urlparams?: URLSearchParams }): Promise => { try { + const allConfig = picgo.getConfig() || {} const picbed = urlparams?.get('picbed') const passedKey = urlparams?.get('key') - const serverKey = picgo.getConfig(configPaths.settings.serverKey) || '' - const useShortUrl = picgo.getConfig(configPaths.settings.useShortUrl) + const serverKey = allConfig.settings?.serverKey || '' + const useShortUrl = allConfig.settings?.useShortUrl if (serverKey && passedKey !== serverKey) { handleResponse({ response, @@ -64,7 +64,7 @@ router.post( let currentPicBedConfigId = '' let needRestore = false if (picbed) { - const currentPicBed = picgo.getConfig('picBed') || ({} as IStringKeyMap) + const currentPicBed = allConfig.picBed || ({} as IStringKeyMap) currentPicBedType = currentPicBed.uploader || currentPicBed.current || 'smms' currentPicBedConfig = currentPicBed[currentPicBedType] || ({} as IStringKeyMap) currentPicBedConfigId = currentPicBedConfig._id @@ -73,7 +73,7 @@ router.post( // do nothing } else { needRestore = true - const picBeds = picgo.getConfig('uploader') + const picBeds = allConfig.uploader const currentPicBedList = picBeds?.[picbed]?.configList if (currentPicBedList) { const currentConfig = currentPicBedList?.find((item: any) => item._configName === configName) diff --git a/src/main/server/webServer/index.ts b/src/main/server/webServer/index.ts index 01f2e57c..09b68ff2 100644 --- a/src/main/server/webServer/index.ts +++ b/src/main/server/webServer/index.ts @@ -6,7 +6,6 @@ import logger from '@core/picgo/logger' import fs from 'fs-extra' import { encodeFilePath } from '~/utils/common' -import { configPaths } from '~/utils/configPaths' const defaultPath = process.platform === 'win32' ? 'C:\\Users' : '/' @@ -656,11 +655,12 @@ class WebServer { } loadConfig(): void { + const allConfig = picgo.getConfig() || {} this.#config = { - enableWebServer: picgo.getConfig(configPaths.settings.enableWebServer) || false, - webServerHost: picgo.getConfig(configPaths.settings.webServerHost) || '0.0.0.0', - webServerPort: picgo.getConfig(configPaths.settings.webServerPort) || 37777, - webServerPath: picgo.getConfig(configPaths.settings.webServerPath) || defaultPath, + enableWebServer: allConfig.settings?.enableWebServer || false, + webServerHost: allConfig.settings?.webServerHost || '0.0.0.0', + webServerPort: allConfig.settings?.webServerPort || 37777, + webServerPath: allConfig.settings?.webServerPath || defaultPath, } } diff --git a/src/main/utils/common.ts b/src/main/utils/common.ts index b1da8753..c85087a1 100644 --- a/src/main/utils/common.ts +++ b/src/main/utils/common.ts @@ -347,11 +347,9 @@ export function getUploaderType(ctx: IPicGo): { picBed: string id?: string } { - const picBed = - ctx.getConfig>('picBed.uploader') || - ctx.getConfig>('picBed.current') || - 'smms' - const picBedConfig = ctx.getConfig>(`picBed.${picBed}`) || {} + const allConfig = ctx.getConfig() || {} + const picBed = allConfig.picBed?.uploader || allConfig.picBed?.current || 'smms' + const picBedConfig = allConfig.picBed?.[picBed] || {} const id = picBedConfig._id || '' return { picBed, id } } diff --git a/src/main/utils/getPicBeds.ts b/src/main/utils/getPicBeds.ts index 5639b220..005698b6 100644 --- a/src/main/utils/getPicBeds.ts +++ b/src/main/utils/getPicBeds.ts @@ -1,17 +1,13 @@ import picgo from '@core/picgo' -import { configPaths } from '~/utils/configPaths' - const getPicBeds = () => { const picBedTypes = picgo.helper.uploader.getIdList() - const defaultPicBed = - picgo.getConfig(configPaths.picBed.uploader) || - picgo.getConfig(configPaths.picBed.current) || - 'smms' - const defaultConfig = picgo.getConfig(`picBed.${defaultPicBed}`) || {} + const allConfig = picgo.getConfig() || {} + const defaultPicBed = allConfig.picBed?.uploader || allConfig.picBed?.current || 'smms' + const defaultConfig = allConfig.picBed?.[defaultPicBed] || {} const defaultId = defaultConfig._id || '' const defaultConfigName = defaultConfig._configName || '' - const picBedFromDB = picgo.getConfig(configPaths.picBed.list) || [] + const picBedFromDB = allConfig.picBed?.list || [] const picBeds = picBedTypes .map((item: string) => { const visible = picBedFromDB.find((i: IPicBedType) => i.type === item) // object or undefined diff --git a/src/main/utils/uploadTaskQueue.ts b/src/main/utils/uploadTaskQueue.ts index 88a8eefc..25e09371 100644 --- a/src/main/utils/uploadTaskQueue.ts +++ b/src/main/utils/uploadTaskQueue.ts @@ -240,10 +240,11 @@ class UploadTaskQueueManager { const res = await uploader.setWebContents(webContents).uploadReturnCtx(input) const imgs = res[0] ? res[0] : false const backupImgs = res[1] ? res[1] : false + const allConfig = picgo.getConfig() || {} if (imgs !== false && imgs.length > 0) { - const pasteStyle = picgo.getConfig(configPaths.settings.pasteStyle) || IPasteStyle.MARKDOWN - const deleteLocalFile = picgo.getConfig(configPaths.settings.deleteLocalFile) || false + const pasteStyle = allConfig.settings?.pasteStyle || IPasteStyle.MARKDOWN + const deleteLocalFile = allConfig.settings?.deleteLocalFile || false const img = imgs[0] @@ -257,11 +258,7 @@ class UploadTaskQueueManager { }) } - const [pasteText, shortUrl] = await pasteTemplate( - pasteStyle, - img, - picgo.getConfig(configPaths.settings.customLink), - ) + const [pasteText, shortUrl] = await pasteTemplate(pasteStyle, img, allConfig.settings?.customLink) img.shortUrl = shortUrl const inserted = await GalleryDB.getInstance().insert(img) diff --git a/src/renderer/components/ImageProcessSetting.vue b/src/renderer/components/ImageProcessSetting.vue index 700d91ad..17d2ba7e 100644 --- a/src/renderer/components/ImageProcessSetting.vue +++ b/src/renderer/components/ImageProcessSetting.vue @@ -1337,18 +1337,16 @@ let compressInFile = {} as IBuildInCompressOptions async function initData() { // global settings - compressInFile = (await getConfig(configPaths.buildIn.compress)) || {} - const watermark = (await getConfig(configPaths.buildIn.watermark)) || {} - const skipProcess = (await getConfig(configPaths.buildIn.skipProcess)) || {} - globalRenameSettings.value = (await getConfig<{ - enable?: boolean - format?: string - }>(configPaths.buildIn.rename)) || { + const allConfig = await getConfig() + compressInFile = allConfig.buildIn?.compress || {} + const watermark = allConfig.buildIn?.watermark || {} + const skipProcess = allConfig.buildIn?.skipProcess || {} + globalRenameSettings.value = allConfig.buildIn?.rename || { enable: false, format: '{filename}', } - globalAutoRename.value = (await getConfig(configPaths.settings.autoRename)) ?? false - globalManualRename.value = (await getConfig(configPaths.settings.rename)) ?? false + globalAutoRename.value = allConfig.settings?.autoRename ?? false + globalManualRename.value = allConfig.settings?.rename ?? false if (compressInFile) { let cleanedObj = {} try { @@ -1405,11 +1403,8 @@ async function initData() { } } if (configId) { - let buildInList = await getConfig>(configPaths.buildIn.list) - const globalRenameSettings = (await getConfig<{ - enable: boolean - format: string - }>(configPaths.buildIn.rename)) || { + let buildInList = allConfig.buildIn?.list + const globalRenameSettings = allConfig.buildIn?.rename || { enable: false, format: '{filename}', } @@ -1417,7 +1412,7 @@ async function initData() { saveConfig(configPaths.buildIn.list, []) buildInList = [] } - singleConfigInFile = buildInList?.find(item => item.id === configId) || ({} as IBuildInListItem) + singleConfigInFile = buildInList?.find((item: { id: string }) => item.id === configId) || ({} as IBuildInListItem) const mergedCompress = { ...compressForm.value, ...(singleConfigInFile.compress || {}),