mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-07-09 14:31:47 +08:00
🔨 Refactor: refactored the import section of the code
This commit is contained in:
@@ -1,15 +1,25 @@
|
||||
// get notice from remote
|
||||
// such as some notices for users; some updates for users
|
||||
// External dependencies
|
||||
import axios from 'axios'
|
||||
import fs from 'fs-extra'
|
||||
import { app, clipboard, dialog, shell } from 'electron'
|
||||
import { IRemoteNoticeActionType, IRemoteNoticeTriggerCount, IRemoteNoticeTriggerHook } from '#/types/enum'
|
||||
import { lte, gte } from 'semver'
|
||||
import path from 'path'
|
||||
|
||||
import axios from 'axios'
|
||||
// Electron modules
|
||||
import { app, clipboard, dialog, shell } from 'electron'
|
||||
|
||||
// Custom modules and utilities
|
||||
import windowManager from '../window/windowManager'
|
||||
import { showNotification } from '~/main/utils/common'
|
||||
|
||||
// Custom types/enums
|
||||
import {
|
||||
IRemoteNoticeActionType,
|
||||
IRemoteNoticeTriggerCount,
|
||||
IRemoteNoticeTriggerHook
|
||||
} from '#/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import { gte, lte } from 'semver'
|
||||
|
||||
// for test
|
||||
const REMOTE_NOTICE_URL = 'https://release.piclist.cn/remote-notice.json'
|
||||
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
import bus from '@core/bus'
|
||||
// External dependencies
|
||||
import {
|
||||
globalShortcut
|
||||
} from 'electron'
|
||||
import logger from '@core/picgo/logger'
|
||||
import GuiApi from '../../gui'
|
||||
|
||||
import bus from '@core/bus'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import { TOGGLE_SHORTKEY_MODIFIED_MODE } from '#/events/constants'
|
||||
import shortKeyService from './shortKeyService'
|
||||
import logger from '@core/picgo/logger'
|
||||
import picgo from '@core/picgo'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import GuiApi from '../../gui'
|
||||
import shortKeyService from './shortKeyService'
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
import { TOGGLE_SHORTKEY_MODIFIED_MODE } from '#/events/constants'
|
||||
|
||||
class ShortKeyHandler {
|
||||
private isInModifiedMode: boolean = false
|
||||
constructor () {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logger from '@core/picgo/logger'
|
||||
|
||||
class ShortKeyService {
|
||||
private commandList: Map<string, IShortKeyHandler> = new Map()
|
||||
registerCommand (command: string, handler: IShortKeyHandler) {
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
// Electron modules
|
||||
import {
|
||||
app,
|
||||
Menu,
|
||||
@@ -9,6 +13,8 @@ import {
|
||||
screen,
|
||||
nativeTheme
|
||||
} from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import uploader from 'apis/app/uploader'
|
||||
import db, { GalleryDB } from '~/main/apis/core/datastore'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
@@ -22,7 +28,7 @@ import { buildPicBedListMenu } from '~/main/events/remotes/menu'
|
||||
import clipboardPoll from '~/main/utils/clipboardPoll'
|
||||
import picgo from '../../core/picgo'
|
||||
import { uploadClipboardFiles } from '../uploader/apis'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
let contextMenu: Menu | null
|
||||
let tray: Tray | null
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
// Electron modules
|
||||
import {
|
||||
Notification,
|
||||
WebContents
|
||||
} from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
import uploader from '.'
|
||||
import pasteTemplate from '~/main/utils/pasteTemplate'
|
||||
import db, { GalleryDB } from '~/main/apis/core/datastore'
|
||||
import { handleCopyUrl, handleUrlEncodeWithSetting } from '~/main/utils/common'
|
||||
@@ -12,8 +17,8 @@ import { T } from '~/main/i18n/index'
|
||||
import ALLApi from '@/apis/allApi'
|
||||
import picgo from '@core/picgo'
|
||||
import GuiApi from '../../gui'
|
||||
import fs from 'fs-extra'
|
||||
import { cloneDeep } from 'lodash'
|
||||
import uploader from '.'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
|
||||
const handleClipboardUploading = async (): Promise<false | ImgInfo[]> => {
|
||||
const useBuiltinClipboard = db.get('settings.useBuiltinClipboard') === undefined ? true : !!db.get('settings.useBuiltinClipboard')
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
// External dependencies
|
||||
import dayjs from 'dayjs'
|
||||
import util from 'util'
|
||||
import path from 'path'
|
||||
import writeFile from 'write-file-atomic'
|
||||
import fse from 'fs-extra'
|
||||
|
||||
// Electron modules
|
||||
import {
|
||||
Notification,
|
||||
BrowserWindow,
|
||||
@@ -5,22 +13,26 @@ import {
|
||||
WebContents,
|
||||
clipboard
|
||||
} from 'electron'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
// Custom utilities and modules
|
||||
import picgo from '@core/picgo'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
import util from 'util'
|
||||
import { IPicGo } from 'piclist'
|
||||
import { showNotification, getClipboardFilePath } from '~/main/utils/common'
|
||||
import { GET_RENAME_FILE_NAME, RENAME_FILE_NAME } from '~/universal/events/constants'
|
||||
import logger from '@core/picgo/logger'
|
||||
import { T } from '~/main/i18n'
|
||||
import fse from 'fs-extra'
|
||||
import path from 'path'
|
||||
import writeFile from 'write-file-atomic'
|
||||
import { CLIPBOARD_IMAGE_FOLDER } from '~/universal/utils/static'
|
||||
|
||||
// Custom types/enums
|
||||
import { IWindowList } from '#/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import { IPicGo } from 'piclist'
|
||||
import {
|
||||
GET_RENAME_FILE_NAME,
|
||||
RENAME_FILE_NAME
|
||||
} from '~/universal/events/constants'
|
||||
|
||||
const waitForRename = (window: BrowserWindow, id: number): Promise<string|null> => {
|
||||
return new Promise((resolve) => {
|
||||
const windowId = window.id
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
// External dependencies
|
||||
import { app } from 'electron'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import bus from '@core/bus'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import picgo from '~/main/apis/core/picgo'
|
||||
import { T } from '~/main/i18n'
|
||||
import { remoteNoticeHandler } from '../remoteNotice'
|
||||
import {
|
||||
SETTING_WINDOW_URL,
|
||||
TRAY_WINDOW_URL,
|
||||
@@ -5,15 +16,13 @@ import {
|
||||
RENAME_WINDOW_URL,
|
||||
TOOLBOX_WINDOW_URL
|
||||
} from './constants'
|
||||
|
||||
// Custom types/enums
|
||||
import { IRemoteNoticeTriggerHook, IWindowList } from '#/types/enum'
|
||||
import bus from '@core/bus'
|
||||
|
||||
// External utility functions
|
||||
import { CREATE_APP_MENU } from '@core/bus/constants'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import { TOGGLE_SHORTKEY_MODIFIED_MODE } from '#/events/constants'
|
||||
import { app } from 'electron'
|
||||
import { remoteNoticeHandler } from '../remoteNotice'
|
||||
import picgo from '~/main/apis/core/picgo'
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
const windowList = new Map<IWindowList, IWindowListItem>()
|
||||
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import {
|
||||
BrowserWindow
|
||||
} from 'electron'
|
||||
// External dependencies
|
||||
import windowList from './windowList'
|
||||
|
||||
// Electron modules
|
||||
import { BrowserWindow } from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
|
||||
// Custom types/enums
|
||||
import { IWindowList } from '#/types/enum'
|
||||
|
||||
class WindowManager implements IWindowManager {
|
||||
|
||||
@@ -1,10 +1,24 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import writeFile from 'write-file-atomic'
|
||||
import path from 'path'
|
||||
import { app } from 'electron'
|
||||
import { getLogger } from '../utils/localLogger'
|
||||
import dayjs from 'dayjs'
|
||||
import path from 'path'
|
||||
|
||||
// Electron modules
|
||||
import { app } from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import { getLogger } from '../utils/localLogger'
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
|
||||
// External utility functions
|
||||
import writeFile from 'write-file-atomic'
|
||||
|
||||
// Custom types/enums
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
const STORE_PATH = app.getPath('userData')
|
||||
const configFilePath = path.join(STORE_PATH, 'data.json')
|
||||
const configFileBackupPath = path.join(STORE_PATH, 'data.bak.json')
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { dbPathChecker, dbPathDir, getGalleryDBPath } from './dbChecker'
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
import { DBStore, JSONStore } from '@picgo/store'
|
||||
|
||||
// External utility functions
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
const STORE_PATH = dbPathDir()
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
import { dbChecker, dbPathChecker } from 'apis/core/datastore/dbChecker'
|
||||
// External dependencies
|
||||
import pkg from 'root/package.json'
|
||||
import debounce from 'lodash/debounce'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { PicGo } from 'piclist'
|
||||
import db from 'apis/core/datastore'
|
||||
import debounce from 'lodash/debounce'
|
||||
import { dbChecker, dbPathChecker } from 'apis/core/datastore/dbChecker'
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
|
||||
const CONFIG_PATH = dbPathChecker()
|
||||
|
||||
|
||||
@@ -1,25 +1,29 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
// Electron modules
|
||||
import {
|
||||
dialog,
|
||||
BrowserWindow,
|
||||
Notification,
|
||||
ipcMain
|
||||
} from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import db, { GalleryDB } from 'apis/core/datastore'
|
||||
import { dbPathChecker, defaultConfigPath, getGalleryDBPath } from 'apis/core/datastore/dbChecker'
|
||||
import uploader from 'apis/app/uploader'
|
||||
import pasteTemplate from '~/main/utils/pasteTemplate'
|
||||
import { handleCopyUrl } from '~/main/utils/common'
|
||||
import {
|
||||
getWindowId,
|
||||
getSettingWindowId
|
||||
} from '@core/bus/apis'
|
||||
import {
|
||||
SHOW_INPUT_BOX
|
||||
} from '~/universal/events/constants'
|
||||
import { getWindowId, getSettingWindowId } from '@core/bus/apis'
|
||||
import { SHOW_INPUT_BOX } from '~/universal/events/constants'
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
import { DBStore } from '@picgo/store'
|
||||
import { T } from '~/main/i18n'
|
||||
import fs from 'fs-extra'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
// Cross-process support may be required in the future
|
||||
class GuiApi implements IGuiApi {
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
// External dependencies
|
||||
import bus from '@core/bus'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import {
|
||||
uploadClipboardFiles,
|
||||
uploadChoosedFiles
|
||||
@@ -6,8 +11,12 @@ import {
|
||||
import {
|
||||
createMenu
|
||||
} from 'apis/app/system'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
|
||||
// Custom types/enums
|
||||
import { IWindowList } from '#/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import {
|
||||
UPLOAD_WITH_FILES,
|
||||
UPLOAD_WITH_FILES_RESPONSE,
|
||||
@@ -19,6 +28,7 @@ import {
|
||||
GET_SETTING_WINDOW_ID_RESPONSE,
|
||||
CREATE_APP_MENU
|
||||
} from '@core/bus/constants'
|
||||
|
||||
function initEventCenter () {
|
||||
const eventList: any = {
|
||||
'picgo:upload': uploadClipboardFiles,
|
||||
|
||||
@@ -126,7 +126,7 @@ export default {
|
||||
try {
|
||||
const client = SSHClient.instance
|
||||
await client.connect(config)
|
||||
const uploadPath = `/${(config.uploadPath || '').replace(/^\/+|\/+$/g, '')}/`.replace(/\/+/g, '/')
|
||||
const uploadPath = `/${(config.uploadPath || '')}/`.replace(/\/+/g, '/')
|
||||
const remote = path.join(uploadPath, fileName)
|
||||
const deleteResult = await client.deleteFile(remote)
|
||||
client.close()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// External dependencies
|
||||
import path from 'path'
|
||||
import GuiApi from 'apis/gui'
|
||||
import {
|
||||
dialog,
|
||||
shell,
|
||||
@@ -7,7 +7,11 @@ import {
|
||||
ipcMain,
|
||||
clipboard
|
||||
} from 'electron'
|
||||
import { IPasteStyle, IPicGoHelperType, IWindowList } from '#/types/enum'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import GuiApi from 'apis/gui'
|
||||
import shortKeyHandler from 'apis/app/shortKey/shortKeyHandler'
|
||||
import picgo from '@core/picgo'
|
||||
import { handleStreamlinePluginName, simpleClone } from '~/universal/utils/common'
|
||||
@@ -15,6 +19,16 @@ import { IGuiMenuItem, PicGo as PicGoCore } from 'piclist'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { showNotification } from '~/main/utils/common'
|
||||
import { dbPathChecker } from 'apis/core/datastore/dbChecker'
|
||||
import { GalleryDB } from 'apis/core/datastore'
|
||||
import pasteTemplate from '../utils/pasteTemplate'
|
||||
import { i18nManager, T } from '~/main/i18n'
|
||||
import { rpcServer } from './rpc'
|
||||
|
||||
// Custom types/enums
|
||||
import { IPasteStyle, IPicGoHelperType, IWindowList } from '#/types/enum'
|
||||
import { IObject, IFilter } from '@picgo/store/dist/types'
|
||||
|
||||
// External utility functions
|
||||
import {
|
||||
PICGO_SAVE_CONFIG,
|
||||
PICGO_GET_CONFIG,
|
||||
@@ -32,12 +46,6 @@ import {
|
||||
GET_CURRENT_LANGUAGE
|
||||
} from '#/events/constants'
|
||||
|
||||
import { GalleryDB } from 'apis/core/datastore'
|
||||
import { IObject, IFilter } from '@picgo/store/dist/types'
|
||||
import pasteTemplate from '../utils/pasteTemplate'
|
||||
import { i18nManager, T } from '~/main/i18n'
|
||||
import { rpcServer } from './rpc'
|
||||
|
||||
// eslint-disable-next-line
|
||||
const requireFunc = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require
|
||||
// const PluginHandler = requireFunc('picgo/lib/PluginHandler').default
|
||||
|
||||
@@ -1,20 +1,37 @@
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
// External dependencies
|
||||
import pkg from 'root/package.json'
|
||||
|
||||
// Electron modules
|
||||
import { Menu, BrowserWindow, app, dialog } from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import getPicBeds from '~/main/utils/getPicBeds'
|
||||
import picgo from '@core/picgo'
|
||||
import {
|
||||
uploadClipboardFiles
|
||||
} from '~/main/apis/app/uploader/apis'
|
||||
import pkg from 'root/package.json'
|
||||
import GuiApi from 'apis/gui'
|
||||
import { PICGO_CONFIG_PLUGIN, PICGO_HANDLE_PLUGIN_DONE, PICGO_HANDLE_PLUGIN_ING, PICGO_TOGGLE_PLUGIN, SHOW_MAIN_PAGE_DONATION, SHOW_MAIN_PAGE_QRCODE } from '~/universal/events/constants'
|
||||
import picgoCoreIPC from '~/main/events/picgoCoreIPC'
|
||||
import { PicGo as PicGoCore } from 'piclist'
|
||||
import { T } from '~/main/i18n'
|
||||
import { changeCurrentUploader } from '~/main/utils/handleUploaderConfig'
|
||||
import db from '~/main/apis/core/datastore'
|
||||
import clipboardPoll from '~/main/utils/clipboardPoll'
|
||||
|
||||
// Custom types/enums
|
||||
import { IWindowList } from '#/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import {
|
||||
uploadClipboardFiles
|
||||
} from '~/main/apis/app/uploader/apis'
|
||||
import {
|
||||
PICGO_CONFIG_PLUGIN,
|
||||
PICGO_HANDLE_PLUGIN_DONE,
|
||||
PICGO_HANDLE_PLUGIN_ING,
|
||||
PICGO_TOGGLE_PLUGIN,
|
||||
SHOW_MAIN_PAGE_DONATION,
|
||||
SHOW_MAIN_PAGE_QRCODE
|
||||
} from '~/universal/events/constants'
|
||||
import { PicGo as PicGoCore } from 'piclist'
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
interface GuiMenuItem {
|
||||
label: string
|
||||
handle: (arg0: PicGoCore, arg1: GuiApi) => Promise<void>
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
// External dependencies
|
||||
import { ipcMain, IpcMainEvent } from 'electron'
|
||||
import { IRPCActionType } from '~/universal/types/enum'
|
||||
import { RPC_ACTIONS } from '#/events/constants'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { configRouter } from './routes/config'
|
||||
import { toolboxRouter } from './routes/toolbox'
|
||||
import { systemRouter } from './routes/system'
|
||||
|
||||
// Custom types/enums
|
||||
import { IRPCActionType } from '~/universal/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import { RPC_ACTIONS } from '#/events/constants'
|
||||
|
||||
class RPCServer implements IRPCServer {
|
||||
private routes: IRPCRoutes = new Map()
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { IRPCActionType } from '~/universal/types/enum'
|
||||
import { RPCRouter } from '../router'
|
||||
import { deleteUploaderConfig, getUploaderConfigList, selectUploaderConfig, updateUploaderConfig, resetUploaderConfig } from '~/main/utils/handleUploaderConfig'
|
||||
import {
|
||||
deleteUploaderConfig,
|
||||
getUploaderConfigList,
|
||||
selectUploaderConfig,
|
||||
updateUploaderConfig,
|
||||
resetUploaderConfig
|
||||
} from '~/main/utils/handleUploaderConfig'
|
||||
|
||||
const configRouter = new RPCRouter()
|
||||
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
// External dependencies
|
||||
import { app, clipboard, shell } from 'electron'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { IRPCActionType } from '~/universal/types/enum'
|
||||
import { RPCRouter } from '../router'
|
||||
import { app, clipboard, shell } from 'electron'
|
||||
|
||||
const systemRouter = new RPCRouter()
|
||||
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import path from 'path'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { dbPathChecker, defaultConfigPath } from '~/main/apis/core/datastore/dbChecker'
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
import { CLIPBOARD_IMAGE_FOLDER } from '~/universal/utils/static'
|
||||
import { sendToolboxResWithType } from './utils'
|
||||
|
||||
// Custom types/enums
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import { CLIPBOARD_IMAGE_FOLDER } from '~/universal/utils/static'
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
const sendToolboxRes = sendToolboxResWithType(IToolboxItemType.HAS_PROBLEM_WITH_CLIPBOARD_PIC_UPLOAD)
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import path from 'path'
|
||||
|
||||
// Electron modules
|
||||
import { IpcMainEvent } from 'electron'
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
import { sendToolboxResWithType } from './utils'
|
||||
|
||||
// Custom utilities and modules
|
||||
import { dbPathChecker } from '~/main/apis/core/datastore/dbChecker'
|
||||
import { GalleryDB, DB_PATH } from '~/main/apis/core/datastore'
|
||||
import path from 'path'
|
||||
import { sendToolboxResWithType } from './utils'
|
||||
|
||||
// Custom types/enums
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
|
||||
// External utility functions
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
export const checkFileMap: IToolboxCheckerMap<
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
import { sendToolboxResWithType } from './utils'
|
||||
import tunnel from 'tunnel'
|
||||
import { dbPathChecker } from '~/main/apis/core/datastore/dbChecker'
|
||||
import { IConfig } from 'piclist'
|
||||
import axios, { AxiosRequestConfig } from 'axios'
|
||||
import tunnel from 'tunnel'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import { dbPathChecker } from '~/main/apis/core/datastore/dbChecker'
|
||||
import { sendToolboxResWithType } from './utils'
|
||||
|
||||
// Custom types/enums
|
||||
import { IToolboxItemCheckStatus, IToolboxItemType } from '~/universal/types/enum'
|
||||
|
||||
// External utility functions
|
||||
|
||||
// Custom types/enums
|
||||
import { IConfig } from 'piclist'
|
||||
import { T } from '~/main/i18n'
|
||||
|
||||
const getProxy = (proxyStr: string): AxiosRequestConfig['proxy'] | false => {
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
// External dependencies
|
||||
import http from 'http'
|
||||
import fs from 'fs-extra'
|
||||
import path from 'path'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
import picgo from '@core/picgo'
|
||||
import logger from '../apis/core/picgo/logger'
|
||||
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
// External dependencies
|
||||
import yaml from 'js-yaml'
|
||||
import { ObjectAdapter, I18n } from '@picgo/i18n'
|
||||
import path from 'path'
|
||||
import fs from 'fs-extra'
|
||||
|
||||
// Electron modules
|
||||
|
||||
// Custom utilities and modules
|
||||
|
||||
// Custom types/enums
|
||||
|
||||
// External utility functions
|
||||
import { builtinI18nList } from '#/i18n'
|
||||
|
||||
class I18nManager {
|
||||
|
||||
@@ -493,7 +493,7 @@ class AliyunApi {
|
||||
const res = client.signatureUrl(key, {
|
||||
expires: expires || 3600
|
||||
})
|
||||
return customUrl ? `${customUrl.replace(/\/$/, '')}/${key}${res.slice(res.indexOf('?'))}` : res
|
||||
return customUrl ? `${customUrl.replace(/\/+$/, '')}/${key}${res.slice(res.indexOf('?'))}` : res
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import TcyunApi from './tcyun'
|
||||
import AliyunApi from './aliyun'
|
||||
import QiniuApi from './qiniu'
|
||||
import UpyunApi from './upyun'
|
||||
import SmmsApi from './smms'
|
||||
import GithubApi from './github'
|
||||
import ImgurApi from './imgur'
|
||||
import QiniuApi from './qiniu'
|
||||
import S3plistApi from './s3plist'
|
||||
import SmmsApi from './smms'
|
||||
import TcyunApi from './tcyun'
|
||||
import UpyunApi from './upyun'
|
||||
import WebdavplistApi from './webdavplist'
|
||||
|
||||
export default {
|
||||
|
||||
@@ -35,12 +35,7 @@ class GithubApi {
|
||||
}
|
||||
|
||||
formatFolder (item: any, slicedPrefix: string) {
|
||||
let key = ''
|
||||
if (slicedPrefix === '') {
|
||||
key = `${item.path}/`
|
||||
} else {
|
||||
key = `${slicedPrefix}/${item.path}/`
|
||||
}
|
||||
const key = `${slicedPrefix ? `${slicedPrefix}/` : ''}${item.path}/`
|
||||
return {
|
||||
...item,
|
||||
Key: key,
|
||||
@@ -57,27 +52,18 @@ class GithubApi {
|
||||
|
||||
formatFile (item: any, slicedPrefix: string, branch: string, repo: string, cdnUrl: string | undefined) {
|
||||
let rawUrl = ''
|
||||
if (cdnUrl) {
|
||||
const placeholder = ['{username}', '{repo}', '{branch}', '{path}']
|
||||
if (placeholder.some(item => cdnUrl.includes(item))) {
|
||||
rawUrl = cdnUrl.replace('{username}', this.username)
|
||||
.replace('{repo}', repo)
|
||||
.replace('{branch}', branch)
|
||||
.replace('{path}', `${slicedPrefix}/${item.path}`)
|
||||
} else {
|
||||
rawUrl = `${cdnUrl}/${slicedPrefix}/${item.path}`
|
||||
}
|
||||
} else {
|
||||
rawUrl = `https://raw.githubusercontent.com/${this.username}/${repo}/${branch}/${slicedPrefix}/${item.path}`
|
||||
}
|
||||
const placeholders = ['{username}', '{repo}', '{branch}', '{path}']
|
||||
const key = slicedPrefix === '' ? item.path : `${slicedPrefix}/${item.path}`
|
||||
rawUrl = cdnUrl
|
||||
? placeholders.some(item => cdnUrl.includes(item))
|
||||
? placeholders.reduce((url, ph) => {
|
||||
const value = ph === '{username}' ? this.username : ph === '{repo}' ? repo : ph === '{branch}' ? branch : ph === '{path}' ? `${slicedPrefix}/${item.path}` : ''
|
||||
return url.replaceAll(ph, value)
|
||||
}, cdnUrl)
|
||||
: `${cdnUrl}/${key}`
|
||||
: `https://raw.githubusercontent.com/${this.username}/${repo}/${branch}/${key}`
|
||||
rawUrl = rawUrl.replace(/(?<!https?:)\/{2,}/g, '/')
|
||||
let key = ''
|
||||
if (slicedPrefix === '') {
|
||||
key = item.path
|
||||
} else {
|
||||
key = `${slicedPrefix}/${item.path}`
|
||||
}
|
||||
const result = {
|
||||
return {
|
||||
...item,
|
||||
Key: key,
|
||||
key,
|
||||
@@ -88,12 +74,9 @@ class GithubApi {
|
||||
checked: false,
|
||||
match: false,
|
||||
isImage: isImage(item.path),
|
||||
rawUrl
|
||||
rawUrl: item.url,
|
||||
url: rawUrl
|
||||
}
|
||||
const temp = result.rawUrl
|
||||
result.rawUrl = result.url
|
||||
result.url = temp
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,7 +134,7 @@ class GithubApi {
|
||||
async getBucketListRecursively (configMap: IStringKeyMap): Promise<any> {
|
||||
const window = windowManager.get(IWindowList.SETTING_WINDOW)!
|
||||
const { bucketName: repo, customUrl: branch, prefix, cancelToken, cdnUrl } = configMap
|
||||
const slicedPrefix = prefix.replace(/^\//, '').replace(/\/$/, '')
|
||||
const slicedPrefix = prefix.replace(/(^\/+|\/+$)/g, '')
|
||||
const cancelTask = [false]
|
||||
ipcMain.on(cancelDownloadLoadingFileList, (_evt: IpcMainEvent, token: string) => {
|
||||
if (token === cancelToken) {
|
||||
@@ -202,7 +185,7 @@ class GithubApi {
|
||||
async getBucketListBackstage (configMap: IStringKeyMap): Promise<any> {
|
||||
const window = windowManager.get(IWindowList.SETTING_WINDOW)!
|
||||
const { bucketName: repo, customUrl: branch, prefix, cancelToken, cdnUrl } = configMap
|
||||
const slicedPrefix = prefix.replace(/^\//, '').replace(/\/$/, '')
|
||||
const slicedPrefix = prefix.replace(/(^\/+|\/+$)/g, '')
|
||||
const cancelTask = [false]
|
||||
ipcMain.on('cancelLoadingFileList', (_evt: IpcMainEvent, token: string) => {
|
||||
if (token === cancelToken) {
|
||||
@@ -288,7 +271,7 @@ class GithubApi {
|
||||
// TODO: if there are more than 10000 files in the folder, it will be truncated
|
||||
// Rare cases, not considered for now
|
||||
const treeRes = await got(
|
||||
`${this.baseUrl}/repos/${this.username}/${repo}/git/trees/${branch}:${key.replace(/^\//, '').replace(/\/$/, '')}`,
|
||||
`${this.baseUrl}/repos/${this.username}/${repo}/git/trees/${branch}:${key.replace(/(^\/+|\/+$)/g, '')}`,
|
||||
getOptions('GET', this.commonHeaders, {
|
||||
recursive: true
|
||||
}, 'json', undefined, undefined, this.proxy)
|
||||
@@ -299,7 +282,7 @@ class GithubApi {
|
||||
const oldTree = treeRes.body.tree
|
||||
const newTree = oldTree.filter((item: any) => item.type === 'blob')
|
||||
.map((item:any) => ({
|
||||
path: `${key.replace(/^\//, '').replace(/\/$/, '')}/${item.path}`,
|
||||
path: `${key.replace(/(^\/+|\/+$)/g, '')}/${item.path}`,
|
||||
mode: item.mode,
|
||||
type: item.type,
|
||||
sha: null
|
||||
@@ -333,10 +316,7 @@ class GithubApi {
|
||||
sha: commitSha
|
||||
}), undefined, this.proxy)
|
||||
) as any
|
||||
if (updateRefRes.statusCode !== 200) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
return updateRefRes.statusCode === 200
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -352,20 +332,14 @@ class GithubApi {
|
||||
*/
|
||||
async getPreSignedUrl (configMap: IStringKeyMap): Promise<string> {
|
||||
const { bucketName: repo, customUrl: branch, key, rawUrl, githubPrivate: isPrivate } = configMap
|
||||
if (!isPrivate) {
|
||||
return rawUrl
|
||||
}
|
||||
if (!isPrivate) return rawUrl
|
||||
const res = await got(
|
||||
`${this.baseUrl}/repos/${this.username}/${repo}/contents/${key}`,
|
||||
getOptions('GET', this.commonHeaders, {
|
||||
ref: branch
|
||||
}, 'json', undefined, undefined, this.proxy)
|
||||
) as any
|
||||
if (res.statusCode === 200) {
|
||||
return res.body.download_url
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
return res.statusCode === 200 ? res.body.download_url : ''
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,17 +1,27 @@
|
||||
import got from 'got'
|
||||
import ManageLogger from '../utils/logger'
|
||||
import { getAgent, getOptions, NewDownloader, gotUpload, getFileMimeType, ConcurrencyPromisePool, formatError } from '../utils/common'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { IWindowList } from '#/types/enum'
|
||||
import { ipcMain, IpcMainEvent } from 'electron'
|
||||
import { formatHttpProxy, isImage } from '~/renderer/manage/utils/common'
|
||||
import path from 'path'
|
||||
import UpDownTaskQueue,
|
||||
{
|
||||
commonTaskStatus
|
||||
} from '../datastore/upDownTaskQueue'
|
||||
import FormData from 'form-data'
|
||||
// External dependencies
|
||||
import fs from 'fs-extra'
|
||||
import FormData from 'form-data'
|
||||
import got from 'got'
|
||||
import path from 'path'
|
||||
|
||||
// Electron modules
|
||||
import { ipcMain, IpcMainEvent } from 'electron'
|
||||
|
||||
// Custom utilities and modules
|
||||
import { IWindowList } from '#/types/enum'
|
||||
import {
|
||||
ConcurrencyPromisePool,
|
||||
formatError,
|
||||
getFileMimeType,
|
||||
getOptions,
|
||||
getAgent,
|
||||
gotUpload,
|
||||
NewDownloader
|
||||
} from '../utils/common'
|
||||
import ManageLogger from '../utils/logger'
|
||||
import windowManager from 'apis/app/window/windowManager'
|
||||
import { formatHttpProxy, isImage } from '~/renderer/manage/utils/common'
|
||||
import UpDownTaskQueue, { commonTaskStatus } from '../datastore/upDownTaskQueue'
|
||||
|
||||
class ImgurApi {
|
||||
userName: string
|
||||
@@ -35,17 +45,19 @@ class ImgurApi {
|
||||
}
|
||||
|
||||
formatFile (item: any) {
|
||||
const fileName = path.basename(item.link)
|
||||
const isImg = isImage(fileName)
|
||||
return {
|
||||
...item,
|
||||
Key: path.basename(item.link),
|
||||
key: path.basename(item.link),
|
||||
Key: fileName,
|
||||
key: fileName,
|
||||
fileName: `${item.name}${path.extname(item.link)}`,
|
||||
formatedTime: new Date(item.datetime * 1000).toLocaleString(),
|
||||
fileSize: item.size,
|
||||
isDir: false,
|
||||
checked: false,
|
||||
match: false,
|
||||
isImage: isImage(path.basename(item.link)),
|
||||
isImage: isImg,
|
||||
url: item.link,
|
||||
sha: item.deletehash
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ class TcyunApi {
|
||||
Sign: true
|
||||
}, () => {
|
||||
})
|
||||
return customUrl ? `${customUrl.replace(/\/$/, '')}/${key}${res.slice(res.indexOf('?'))}` : res
|
||||
return customUrl ? `${customUrl.replace(/\/+$/, '')}/${key}${res.slice(res.indexOf('?'))}` : res
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user