mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
🔨 Refactor: use picgo-core's picbed list without using builtin picbed list
This commit is contained in:
parent
428ffc7ef1
commit
d50ad3a592
@ -25,7 +25,11 @@ yarn dev
|
|||||||
|
|
||||||
### i18n
|
### i18n
|
||||||
|
|
||||||
在 `public/i18n/` 下面创建一种语言的 `yml` 文件,例如 `zh-Hans.yml`。然后参考 `zh-CN.yml` 或者 `en.yml` 编写语言文件。并注意,PicGo 会通过语言文件中的 `LANG_DISPLAY_LABEL` 向用户展示该语言的名称。
|
1. 在 `public/i18n/` 下面创建一种语言的 `yml` 文件,例如 `zh-Hans.yml`。然后参考 `zh-CN.yml` 或者 `en.yml` 编写语言文件。并注意,PicGo 会通过语言文件中的 `LANG_DISPLAY_LABEL` 向用户展示该语言的名称。
|
||||||
|
|
||||||
|
2. 在 `src/universal/i18n/index.ts` 里添加一种默认语言。其中 `label` 就是语言文件中 `LANG_DISPLAY_LABEL` 的值,`value` 是语言文件名。
|
||||||
|
|
||||||
|
3. 如果是对已有语言文件进行更新,请在更新完,务必运行一遍 `yarn gen-i18n`,确保能生成正确的语言定义文件。
|
||||||
|
|
||||||
### 提交代码
|
### 提交代码
|
||||||
|
|
||||||
|
@ -25,7 +25,11 @@ Startup project.
|
|||||||
|
|
||||||
### i18n
|
### i18n
|
||||||
|
|
||||||
Create a `yml` file for a language under `public/i18n/`, e.g. `zh-Hans.yml`. Then refer to `zh-CN.yml` or `en.yml` to write language files. Also note that PicGo will display the name of the language to the user via `LANG_DISPLAY_LABEL` in the language file.
|
1. Create a language `yml` file under `public/i18n/`, for example `zh-Hans.yml`. Then refer to `zh-CN.yml` or `en.yml` to write language files. Also note that PicGo will display the name of the language to the user via `LANG_DISPLAY_LABEL` in the language file.
|
||||||
|
|
||||||
|
2. Add a default language to `src/universal/i18n/index.ts`. where `label` is the value of `LANG_DISPLAY_LABEL` in the language file, and `value` is the name of the language file.
|
||||||
|
|
||||||
|
3. If you are updating an existing language file, be sure to run `yarn gen-i18n` after the update to ensure that the correct language definition file can be generated.
|
||||||
|
|
||||||
### Submit code
|
### Submit code
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@picgo/i18n": "^1.0.0",
|
"@picgo/i18n": "^1.0.0",
|
||||||
"@picgo/store": "2.0.1",
|
"@picgo/store": "^2.0.4",
|
||||||
"axios": "^0.19.0",
|
"axios": "^0.19.0",
|
||||||
"compare-versions": "^4.1.3",
|
"compare-versions": "^4.1.3",
|
||||||
"core-js": "^3.3.2",
|
"core-js": "^3.3.2",
|
||||||
@ -48,7 +48,7 @@
|
|||||||
"keycode": "^2.2.0",
|
"keycode": "^2.2.0",
|
||||||
"lodash-id": "^0.14.0",
|
"lodash-id": "^0.14.0",
|
||||||
"lowdb": "^1.0.0",
|
"lowdb": "^1.0.0",
|
||||||
"picgo": "^1.5.0-alpha.5",
|
"picgo": "^1.5.0-alpha.7",
|
||||||
"qrcode.vue": "^1.7.0",
|
"qrcode.vue": "^1.7.0",
|
||||||
"shell-path": "2.1.0",
|
"shell-path": "2.1.0",
|
||||||
"uuidv4": "^6.2.11",
|
"uuidv4": "^6.2.11",
|
||||||
|
@ -37,9 +37,12 @@ class ConfigStore {
|
|||||||
this.read()
|
this.read()
|
||||||
}
|
}
|
||||||
|
|
||||||
read (flush = false) {
|
flush () {
|
||||||
// if flush -> true, read origin file again
|
this.db = new JSONStore(CONFIG_PATH)
|
||||||
this.db.read(flush)
|
}
|
||||||
|
|
||||||
|
read () {
|
||||||
|
this.db.read()
|
||||||
return this.db
|
return this.db
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import { dbChecker, dbPathChecker } from 'apis/core/datastore/dbChecker'
|
|||||||
import pkg from 'root/package.json'
|
import pkg from 'root/package.json'
|
||||||
import { PicGo } from 'picgo'
|
import { PicGo } from 'picgo'
|
||||||
import db from 'apis/core/datastore'
|
import db from 'apis/core/datastore'
|
||||||
|
import debounce from 'lodash/debounce'
|
||||||
|
|
||||||
const CONFIG_PATH = dbPathChecker()
|
const CONFIG_PATH = dbPathChecker()
|
||||||
|
|
||||||
@ -18,12 +19,16 @@ picgo.GUI_VERSION = global.PICGO_GUI_VERSION
|
|||||||
|
|
||||||
const originPicGoSaveConfig = picgo.saveConfig.bind(picgo)
|
const originPicGoSaveConfig = picgo.saveConfig.bind(picgo)
|
||||||
|
|
||||||
|
function flushDB () {
|
||||||
|
db.flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
const debounced = debounce(flushDB, 1000)
|
||||||
|
|
||||||
picgo.saveConfig = (config: IStringKeyMap) => {
|
picgo.saveConfig = (config: IStringKeyMap) => {
|
||||||
originPicGoSaveConfig(config)
|
originPicGoSaveConfig(config)
|
||||||
// flush electron's db
|
// flush electron's db
|
||||||
setTimeout(() => {
|
debounced()
|
||||||
db.read(true)
|
|
||||||
}, 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default picgo
|
export default picgo
|
||||||
|
@ -27,7 +27,8 @@ import {
|
|||||||
OPEN_URL,
|
OPEN_URL,
|
||||||
RELOAD_APP,
|
RELOAD_APP,
|
||||||
SHOW_PLUGIN_PAGE_MENU,
|
SHOW_PLUGIN_PAGE_MENU,
|
||||||
SET_MINI_WINDOW_POS
|
SET_MINI_WINDOW_POS,
|
||||||
|
GET_PICBEDS
|
||||||
} from '#/events/constants'
|
} from '#/events/constants'
|
||||||
import {
|
import {
|
||||||
uploadClipboardFiles,
|
uploadClipboardFiles,
|
||||||
@ -151,9 +152,9 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on('getPicBeds', (evt: IpcMainEvent) => {
|
ipcMain.on(GET_PICBEDS, (evt: IpcMainEvent) => {
|
||||||
const picBeds = getPicBeds()
|
const picBeds = getPicBeds()
|
||||||
evt.sender.send('getPicBeds', picBeds)
|
evt.sender.send(GET_PICBEDS, picBeds)
|
||||||
evt.returnValue = picBeds
|
evt.returnValue = picBeds
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -383,6 +383,7 @@ const handleI18n = () => {
|
|||||||
ipcMain.on(SET_CURRENT_LANGUAGE, (event: IpcMainEvent, language: string) => {
|
ipcMain.on(SET_CURRENT_LANGUAGE, (event: IpcMainEvent, language: string) => {
|
||||||
i18nManager.setCurrentLanguage(language)
|
i18nManager.setCurrentLanguage(language)
|
||||||
const { lang, locales } = i18nManager.getCurrentLocales()
|
const { lang, locales } = i18nManager.getCurrentLocales()
|
||||||
|
picgo.i18n.setLanguage(lang)
|
||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)
|
const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)
|
||||||
trayWindow?.webContents.send(SET_CURRENT_LANGUAGE, lang, locales)
|
trayWindow?.webContents.send(SET_CURRENT_LANGUAGE, lang, locales)
|
||||||
|
@ -2,6 +2,7 @@ import yaml from 'js-yaml'
|
|||||||
import { ObjectAdapter, I18n } from '@picgo/i18n'
|
import { ObjectAdapter, I18n } from '@picgo/i18n'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import fs from 'fs-extra'
|
import fs from 'fs-extra'
|
||||||
|
import { builtinI18nList } from '#/i18n'
|
||||||
|
|
||||||
class I18nManager {
|
class I18nManager {
|
||||||
private i18n: I18n | null = null
|
private i18n: I18n | null = null
|
||||||
@ -10,13 +11,7 @@ class I18nManager {
|
|||||||
private localesMap: Map<string, ILocales> = new Map()
|
private localesMap: Map<string, ILocales> = new Map()
|
||||||
private currentLanguage: string = 'zh-CN'
|
private currentLanguage: string = 'zh-CN'
|
||||||
readonly defaultLanguage: string = 'zh-CN'
|
readonly defaultLanguage: string = 'zh-CN'
|
||||||
private i18nFileList: II18nItem[] = [{
|
private i18nFileList: II18nItem[] = builtinI18nList
|
||||||
label: '简体中文',
|
|
||||||
value: 'zh-CN'
|
|
||||||
}, {
|
|
||||||
label: 'English',
|
|
||||||
value: 'en'
|
|
||||||
}]
|
|
||||||
|
|
||||||
setOutterI18nFolder (folder: string) {
|
setOutterI18nFolder (folder: string) {
|
||||||
this.outterI18nFolder = folder
|
this.outterI18nFolder = folder
|
||||||
|
@ -93,8 +93,7 @@ function resolveOtherI18nFiles () {
|
|||||||
withFileTypes: true
|
withFileTypes: true
|
||||||
})
|
})
|
||||||
i18nFiles.forEach(item => {
|
i18nFiles.forEach(item => {
|
||||||
if (item.isFile()) {
|
if (item.isFile() && item.name?.endsWith('.yml')) {
|
||||||
if (item.name.endsWith('.yml')) {
|
|
||||||
const i18nFilePath = path.join(i18nFolder, item.name)
|
const i18nFilePath = path.join(i18nFolder, item.name)
|
||||||
const i18nFile = fs.readFileSync(i18nFilePath, 'utf8')
|
const i18nFile = fs.readFileSync(i18nFilePath, 'utf8')
|
||||||
try {
|
try {
|
||||||
@ -106,7 +105,6 @@ function resolveOtherI18nFiles () {
|
|||||||
console.error(e)
|
console.error(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,16 +2,11 @@ import { ipcRenderer } from 'electron'
|
|||||||
import { ObjectAdapter, I18n } from '@picgo/i18n'
|
import { ObjectAdapter, I18n } from '@picgo/i18n'
|
||||||
import { GET_CURRENT_LANGUAGE, SET_CURRENT_LANGUAGE, FORCE_UPDATE, GET_LANGUAGE_LIST } from '#/events/constants'
|
import { GET_CURRENT_LANGUAGE, SET_CURRENT_LANGUAGE, FORCE_UPDATE, GET_LANGUAGE_LIST } from '#/events/constants'
|
||||||
import bus from '@/utils/bus'
|
import bus from '@/utils/bus'
|
||||||
|
import { builtinI18nList } from '#/i18n'
|
||||||
|
|
||||||
export class I18nManager {
|
export class I18nManager {
|
||||||
private i18n: I18n | null = null
|
private i18n: I18n | null = null
|
||||||
private i18nFileList: II18nItem[] = [{
|
private i18nFileList: II18nItem[] = builtinI18nList
|
||||||
label: '简体中文',
|
|
||||||
value: 'zh-CN'
|
|
||||||
}, {
|
|
||||||
label: 'English',
|
|
||||||
value: 'en'
|
|
||||||
}]
|
|
||||||
|
|
||||||
private getLanguageList () {
|
private getLanguageList () {
|
||||||
ipcRenderer.send(GET_LANGUAGE_LIST)
|
ipcRenderer.send(GET_LANGUAGE_LIST)
|
||||||
|
@ -160,7 +160,8 @@ import {
|
|||||||
CLOSE_WINDOW,
|
CLOSE_WINDOW,
|
||||||
SHOW_MAIN_PAGE_MENU,
|
SHOW_MAIN_PAGE_MENU,
|
||||||
SHOW_MAIN_PAGE_QRCODE,
|
SHOW_MAIN_PAGE_QRCODE,
|
||||||
SHOW_MAIN_PAGE_DONATION
|
SHOW_MAIN_PAGE_DONATION,
|
||||||
|
GET_PICBEDS
|
||||||
} from '~/universal/events/constants'
|
} from '~/universal/events/constants'
|
||||||
@Component({
|
@Component({
|
||||||
name: 'main-page',
|
name: 'main-page',
|
||||||
@ -183,8 +184,8 @@ export default class extends Vue {
|
|||||||
choosedPicBedForQRCode: string[] = []
|
choosedPicBedForQRCode: string[] = []
|
||||||
created () {
|
created () {
|
||||||
this.os = process.platform
|
this.os = process.platform
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
ipcRenderer.on('getPicBeds', this.getPicBeds)
|
ipcRenderer.on(GET_PICBEDS, this.getPicBeds)
|
||||||
this.handleGetPicPeds()
|
this.handleGetPicPeds()
|
||||||
ipcRenderer.on(SHOW_MAIN_PAGE_QRCODE, () => {
|
ipcRenderer.on(SHOW_MAIN_PAGE_QRCODE, () => {
|
||||||
this.qrcodeVisible = true
|
this.qrcodeVisible = true
|
||||||
@ -206,7 +207,7 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleGetPicPeds = () => {
|
handleGetPicPeds = () => {
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSelect (index: string) {
|
handleSelect (index: string) {
|
||||||
@ -217,18 +218,24 @@ export default class extends Vue {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
const picBed = index.replace(/picbeds-/, '')
|
const picBed = index.replace(/picbeds-/, '')
|
||||||
if (this.$builtInPicBed.includes(picBed)) {
|
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: picBed
|
name: 'picbeds',
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.$router.push({
|
|
||||||
name: 'others',
|
|
||||||
params: {
|
params: {
|
||||||
type: picBed
|
type: picBed
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
// if (this.$builtInPicBed.includes(picBed)) {
|
||||||
|
// this.$router.push({
|
||||||
|
// name: picBed
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// this.$router.push({
|
||||||
|
// name: 'others',
|
||||||
|
// params: {
|
||||||
|
// type: picBed
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +271,7 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
ipcRenderer.removeListener('getPicBeds', this.getPicBeds)
|
ipcRenderer.removeListener(GET_PICBEDS, this.getPicBeds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -112,7 +112,7 @@
|
|||||||
import gallerys from 'vue-gallery'
|
import gallerys from 'vue-gallery'
|
||||||
import { Component, Vue, Watch } from 'vue-property-decorator'
|
import { Component, Vue, Watch } from 'vue-property-decorator'
|
||||||
import { IResult } from '@picgo/store/dist/types'
|
import { IResult } from '@picgo/store/dist/types'
|
||||||
import { PASTE_TEXT } from '#/events/constants'
|
import { PASTE_TEXT, GET_PICBEDS } from '#/events/constants'
|
||||||
import {
|
import {
|
||||||
ipcRenderer,
|
ipcRenderer,
|
||||||
clipboard,
|
clipboard,
|
||||||
@ -157,7 +157,6 @@ export default class extends Vue {
|
|||||||
picBed: IPicBedType[] = []
|
picBed: IPicBedType[] = []
|
||||||
@Watch('$route')
|
@Watch('$route')
|
||||||
handleRouteUpdate (to: any, from: any) {
|
handleRouteUpdate (to: any, from: any) {
|
||||||
console.log(to, from)
|
|
||||||
if (from.name === 'gallery') {
|
if (from.name === 'gallery') {
|
||||||
this.clearChoosedList()
|
this.clearChoosedList()
|
||||||
}
|
}
|
||||||
@ -172,8 +171,8 @@ export default class extends Vue {
|
|||||||
this.updateGallery()
|
this.updateGallery()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
ipcRenderer.on('getPicBeds', this.getPicBeds)
|
ipcRenderer.on(GET_PICBEDS, this.getPicBeds)
|
||||||
this.updateGallery()
|
this.updateGallery()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,7 +450,7 @@ export default class extends Vue {
|
|||||||
|
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
ipcRenderer.removeAllListeners('updateGallery')
|
ipcRenderer.removeAllListeners('updateGallery')
|
||||||
ipcRenderer.removeListener('getPicBeds', this.getPicBeds)
|
ipcRenderer.removeListener(GET_PICBEDS, this.getPicBeds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -55,7 +55,6 @@ export default class extends Vue {
|
|||||||
this.showError = true
|
this.showError = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.getPicBeds()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mounted () {
|
mounted () {
|
||||||
@ -77,10 +76,6 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getPicBeds () {
|
|
||||||
this.picBed = ipcRenderer.sendSync('getPicBeds')
|
|
||||||
}
|
|
||||||
|
|
||||||
onDrop (e: DragEvent) {
|
onDrop (e: DragEvent) {
|
||||||
this.dragover = false
|
this.dragover = false
|
||||||
const items = e.dataTransfer!.items
|
const items = e.dataTransfer!.items
|
||||||
@ -172,7 +167,6 @@ export default class extends Vue {
|
|||||||
if (e.button === 0) { // left mouse
|
if (e.button === 0) { // left mouse
|
||||||
this.openUploadWindow()
|
this.openUploadWindow()
|
||||||
} else {
|
} else {
|
||||||
this.getPicBeds()
|
|
||||||
this.openContextMenu()
|
this.openContextMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,7 +178,6 @@ export default class extends Vue {
|
|||||||
|
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
ipcRenderer.removeAllListeners('uploadProgress')
|
ipcRenderer.removeAllListeners('uploadProgress')
|
||||||
ipcRenderer.removeListener('getPicBeds', this.getPicBeds)
|
|
||||||
window.removeEventListener('mousedown', this.handleMouseDown, false)
|
window.removeEventListener('mousedown', this.handleMouseDown, false)
|
||||||
window.removeEventListener('mousemove', this.handleMouseMove, false)
|
window.removeEventListener('mousemove', this.handleMouseMove, false)
|
||||||
window.removeEventListener('mouseup', this.handleMouseUp, false)
|
window.removeEventListener('mouseup', this.handleMouseUp, false)
|
||||||
|
@ -386,7 +386,7 @@
|
|||||||
import keyDetect from '@/utils/key-binding'
|
import keyDetect from '@/utils/key-binding'
|
||||||
import pkg from 'root/package.json'
|
import pkg from 'root/package.json'
|
||||||
import { IConfig } from 'picgo'
|
import { IConfig } from 'picgo'
|
||||||
import { PICGO_OPEN_FILE, OPEN_URL } from '#/events/constants'
|
import { PICGO_OPEN_FILE, OPEN_URL, GET_PICBEDS } from '#/events/constants'
|
||||||
import {
|
import {
|
||||||
ipcRenderer
|
ipcRenderer
|
||||||
} from 'electron'
|
} from 'electron'
|
||||||
@ -483,8 +483,8 @@ export default class extends Vue {
|
|||||||
|
|
||||||
created () {
|
created () {
|
||||||
this.os = process.platform
|
this.os = process.platform
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
ipcRenderer.on('getPicBeds', this.getPicBeds)
|
ipcRenderer.on(GET_PICBEDS, this.getPicBeds)
|
||||||
this.initData()
|
this.initData()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ export default class extends Vue {
|
|||||||
this.saveConfig({
|
this.saveConfig({
|
||||||
'picBed.list': list
|
'picBed.list': list
|
||||||
})
|
})
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
handleAutoStartChange (val: boolean) {
|
handleAutoStartChange (val: boolean) {
|
||||||
@ -763,6 +763,7 @@ export default class extends Vue {
|
|||||||
this.saveConfig({
|
this.saveConfig({
|
||||||
'settings.language': val
|
'settings.language': val
|
||||||
})
|
})
|
||||||
|
this.sendToMain(GET_PICBEDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
goConfigPage () {
|
goConfigPage () {
|
||||||
@ -774,7 +775,7 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
ipcRenderer.removeListener('getPicBeds', this.getPicBeds)
|
ipcRenderer.removeListener(GET_PICBEDS, this.getPicBeds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -121,7 +121,8 @@ import {
|
|||||||
PICGO_HANDLE_PLUGIN_ING,
|
PICGO_HANDLE_PLUGIN_ING,
|
||||||
PICGO_TOGGLE_PLUGIN,
|
PICGO_TOGGLE_PLUGIN,
|
||||||
SHOW_PLUGIN_PAGE_MENU,
|
SHOW_PLUGIN_PAGE_MENU,
|
||||||
DEFAULT_LOGO
|
DEFAULT_LOGO,
|
||||||
|
GET_PICBEDS
|
||||||
} from '#/events/constants'
|
} from '#/events/constants'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -249,7 +250,7 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
ipcRenderer.on(DEFAULT_LOGO, (evt: IpcRendererEvent, logoPath) => {
|
ipcRenderer.on(DEFAULT_LOGO, (evt: IpcRendererEvent, logoPath) => {
|
||||||
this.defaultLogo = `this.src="${logoPath.replace(/\\/g, '/')}"`
|
this.defaultLogo = `this.src="file://${logoPath.replace(/\\/g, '/')}"`
|
||||||
})
|
})
|
||||||
this.getPluginList()
|
this.getPluginList()
|
||||||
this.getSearchResult = debounce(this.getSearchResult, 50)
|
this.getSearchResult = debounce(this.getSearchResult, 50)
|
||||||
@ -270,7 +271,7 @@ export default class extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getPicBeds () {
|
getPicBeds () {
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
installPlugin (item: IPicGoPlugin) {
|
installPlugin (item: IPicGoPlugin) {
|
||||||
|
@ -65,7 +65,8 @@ import {
|
|||||||
import {
|
import {
|
||||||
SHOW_INPUT_BOX,
|
SHOW_INPUT_BOX,
|
||||||
SHOW_INPUT_BOX_RESPONSE,
|
SHOW_INPUT_BOX_RESPONSE,
|
||||||
SHOW_UPLOAD_PAGE_MENU
|
SHOW_UPLOAD_PAGE_MENU,
|
||||||
|
GET_PICBEDS
|
||||||
} from '~/universal/events/constants'
|
} from '~/universal/events/constants'
|
||||||
import {
|
import {
|
||||||
isUrl
|
isUrl
|
||||||
@ -96,8 +97,8 @@ export default class extends Vue {
|
|||||||
ipcRenderer.on('syncPicBed', () => {
|
ipcRenderer.on('syncPicBed', () => {
|
||||||
this.getDefaultPicBed()
|
this.getDefaultPicBed()
|
||||||
})
|
})
|
||||||
ipcRenderer.send('getPicBeds')
|
ipcRenderer.send(GET_PICBEDS)
|
||||||
ipcRenderer.on('getPicBeds', this.getPicBeds)
|
ipcRenderer.on(GET_PICBEDS, this.getPicBeds)
|
||||||
this.$bus.$on(SHOW_INPUT_BOX_RESPONSE, this.handleInputBoxValue)
|
this.$bus.$on(SHOW_INPUT_BOX_RESPONSE, this.handleInputBoxValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +119,7 @@ export default class extends Vue {
|
|||||||
this.$bus.$off(SHOW_INPUT_BOX_RESPONSE)
|
this.$bus.$off(SHOW_INPUT_BOX_RESPONSE)
|
||||||
ipcRenderer.removeAllListeners('uploadProgress')
|
ipcRenderer.removeAllListeners('uploadProgress')
|
||||||
ipcRenderer.removeAllListeners('syncPicBed')
|
ipcRenderer.removeAllListeners('syncPicBed')
|
||||||
ipcRenderer.removeListener('getPicBeds', this.getPicBeds)
|
ipcRenderer.removeListener(GET_PICBEDS, this.getPicBeds)
|
||||||
}
|
}
|
||||||
|
|
||||||
onDrop (e: DragEvent) {
|
onDrop (e: DragEvent) {
|
||||||
|
@ -1,156 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="aliyun-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
阿里云OSS设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="aliyun"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定KeyId"
|
|
||||||
prop="accessKeyId"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'AccessKeyId不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.accessKeyId" placeholder="AccessKeyId" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定KeySecret"
|
|
||||||
prop="accessKeySecret"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'AccessKeySecret不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.accessKeySecret" type="password" @keyup.native.enter="confirm" placeholder="AccessKeySecret"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定存储空间名"
|
|
||||||
prop="bucket"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Bucket不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.bucket" @keyup.native.enter="confirm" placeholder="Bucket"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="确认存储区域"
|
|
||||||
prop="area"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '区域代码不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.area" @keyup.native.enter="confirm" placeholder="例如oss-cn-beijing"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="指定存储路径"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.path" @keyup.native.enter="confirm" placeholder="例如img/"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定网址后缀"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.options" @keyup.native.enter="confirm" placeholder="例如?x-oss-process=xxx"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定自定义域名"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.customUrl" @keyup.native.enter="confirm" placeholder="例如https://xxxx.com"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('aliyun')" round :disabled="defaultPicBed === 'aliyun'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'aliyun',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: IAliYunConfig = {
|
|
||||||
accessKeyId: '',
|
|
||||||
accessKeySecret: '',
|
|
||||||
bucket: '',
|
|
||||||
area: '',
|
|
||||||
path: '',
|
|
||||||
customUrl: '',
|
|
||||||
options: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<IAliYunConfig>('picBed.aliyun')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.aliyun.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.aliyun': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new window.Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#aliyun-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
&-item
|
|
||||||
margin-bottom 10.5px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
.el-switch__label
|
|
||||||
color #eee
|
|
||||||
&.is-active
|
|
||||||
color #409EFF
|
|
||||||
.el-icon-question
|
|
||||||
font-size 20px
|
|
||||||
float right
|
|
||||||
margin-top 9px
|
|
||||||
color #eee
|
|
||||||
cursor pointer
|
|
||||||
transition .2s color ease-in-out
|
|
||||||
&:hover
|
|
||||||
color #409EFF
|
|
||||||
</style>
|
|
@ -1,126 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="github-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
GitHub设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="github"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定仓库名"
|
|
||||||
prop="repo"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '仓库名不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.repo" @keyup.native.enter="confirm" placeholder="格式:username/repo"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定分支名"
|
|
||||||
prop="branch"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '分支名不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.branch" @keyup.native.enter="confirm" placeholder="例如:main"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定Token"
|
|
||||||
prop="token"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Token不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.token" @keyup.native.enter="confirm" placeholder="token" type="password"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="指定存储路径"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.path" @keyup.native.enter="confirm" placeholder="例如img/"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定自定义域名"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.customUrl" @keyup.native.enter="confirm" placeholder="例如https://xxxx.com"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('github')" round :disabled="defaultPicBed === 'github'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'github',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: IGitHubConfig = {
|
|
||||||
repo: '',
|
|
||||||
token: '',
|
|
||||||
path: '',
|
|
||||||
customUrl: '',
|
|
||||||
branch: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<IGitHubConfig>('picBed.github')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.github.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.github': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#github-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
</style>
|
|
@ -1,118 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="imgur-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
Imgur图床设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="imgur"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定ClientId"
|
|
||||||
prop="clientId"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'ClientId不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.clientId" placeholder="ClientId" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定代理"
|
|
||||||
prop="proxy"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.proxy" placeholder="例如:http://127.0.0.1:1080" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('imgur')" round :disabled="defaultPicBed === 'imgur'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'imgur',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: IImgurConfig = {
|
|
||||||
clientId: '',
|
|
||||||
proxy: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<IImgurConfig>('picBed.imgur')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.imgur.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.imgur': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#imgur-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
&-item
|
|
||||||
margin-bottom 10.5px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
.el-switch__label
|
|
||||||
color #eee
|
|
||||||
&.is-active
|
|
||||||
color #409EFF
|
|
||||||
.el-icon-question
|
|
||||||
font-size 20px
|
|
||||||
float right
|
|
||||||
margin-top 9px
|
|
||||||
color #eee
|
|
||||||
cursor pointer
|
|
||||||
transition .2s color ease-in-out
|
|
||||||
&:hover
|
|
||||||
color #409EFF
|
|
||||||
</style>
|
|
@ -1,145 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="qiniu-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
七牛图床设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="qiniu"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定AccessKey"
|
|
||||||
prop="accessKey"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'AccessKey不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.accessKey" placeholder="AccessKey" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定SecretKey"
|
|
||||||
prop="secretKey"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'SecretKey不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.secretKey" type="password" @keyup.native.enter="confirm" placeholder="SecretKey"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定存储空间名"
|
|
||||||
prop="bucket"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Bucket不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.bucket" @keyup.native.enter="confirm" placeholder="Bucket"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定访问网址"
|
|
||||||
prop="url"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '网址不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.url" @keyup.native.enter="confirm" placeholder="例如:http://xxx.yyy.glb.clouddn.com"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="确认存储区域"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '区域代码不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.area" placeholder="例如z0"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定网址后缀"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.options" @keyup.native.enter="confirm" placeholder="例如?imageslim"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="指定存储路径"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.path" @keyup.native.enter="confirm" placeholder="例如img/"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('qiniu')" round :disabled="defaultPicBed === 'qiniu'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'qiniu',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: IQiniuConfig = {
|
|
||||||
accessKey: '',
|
|
||||||
secretKey: '',
|
|
||||||
bucket: '',
|
|
||||||
url: '',
|
|
||||||
area: '',
|
|
||||||
options: '',
|
|
||||||
path: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<IQiniuConfig>('picBed.qiniu')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.qiniu.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.qiniu': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#qiniu-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
&-item
|
|
||||||
margin-bottom 10.5px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
</style>
|
|
@ -1,98 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="smms-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
SM.MS设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="smms"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定Token"
|
|
||||||
prop="token"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Token不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.token" type="password" placeholder="token" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('smms')" round :disabled="defaultPicBed === 'smms'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'smms',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: ISMMSConfig = {
|
|
||||||
token: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<string | boolean>('picBed.smms.token')
|
|
||||||
if (typeof config !== 'boolean') {
|
|
||||||
this.form.token = config || ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.smms.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.smms': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new window.Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#smms-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
&-item
|
|
||||||
margin-bottom 10.5px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
</style>
|
|
@ -1,186 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="tcyun-view">
|
|
||||||
<el-row :gutter="16" class="setting-list-scroll">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
腾讯云COS设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="tcyun"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="COS版本"
|
|
||||||
>
|
|
||||||
<el-switch
|
|
||||||
v-model="form.version"
|
|
||||||
active-text="v4"
|
|
||||||
inactive-text="v5"
|
|
||||||
active-value="v4"
|
|
||||||
inactive-value="v5"
|
|
||||||
inactive-color="#67C23A"
|
|
||||||
></el-switch>
|
|
||||||
<i class="el-icon-question" @click="openWiki"></i>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定SecretId"
|
|
||||||
prop="secretId"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'SecretId不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.secretId" placeholder="SecretId" @keyup.native.enter="confirm"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定SecretKey"
|
|
||||||
prop="secretKey"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'SecretKey不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.secretKey" type="password" @keyup.native.enter="confirm" placeholder="SecretKey"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定APPID"
|
|
||||||
prop="appId"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'APPID不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.appId" @keyup.native.enter="confirm" placeholder="例如1234567890"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定存储空间名"
|
|
||||||
prop="bucket"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Bucket不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.bucket" @keyup.native.enter="confirm" placeholder="Bucket"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="确认存储区域"
|
|
||||||
prop="area"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '区域代码不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.area" @keyup.native.enter="confirm" placeholder="例如tj"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="指定存储路径"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.path" @keyup.native.enter="confirm" placeholder="例如img/"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定自定义域名"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.customUrl" @keyup.native.enter="confirm" placeholder="例如https://xxxx.com"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定网址后缀"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.options" @keyup.native.enter="confirm" placeholder="例如?imageMogr2"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('tcyun')" round :disabled="defaultPicBed === 'tcyun'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { ipcRenderer } from 'electron'
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { OPEN_URL } from '#/events/constants'
|
|
||||||
import { ITcyunConfig } from 'picgo/dist/types'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'tcyun',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: ITcyunConfig = {
|
|
||||||
secretId: '',
|
|
||||||
secretKey: '',
|
|
||||||
bucket: '',
|
|
||||||
appId: '',
|
|
||||||
area: '',
|
|
||||||
path: '',
|
|
||||||
customUrl: '',
|
|
||||||
version: 'v5',
|
|
||||||
options: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<ITcyunConfig>('picBed.tcyun')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.tcyun.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.tcyun': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new window.Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
openWiki () {
|
|
||||||
ipcRenderer.send(OPEN_URL, 'https://picgo.github.io/PicGo-Doc/zh/guide/config.html#%E8%85%BE%E8%AE%AF%E4%BA%91cos')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#tcyun-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
&-item
|
|
||||||
margin-bottom 10.5px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
.el-switch__label
|
|
||||||
color #eee
|
|
||||||
&.is-active
|
|
||||||
color #409EFF
|
|
||||||
.el-icon-question
|
|
||||||
font-size 20px
|
|
||||||
float right
|
|
||||||
margin-top 9px
|
|
||||||
color #eee
|
|
||||||
cursor pointer
|
|
||||||
transition .2s color ease-in-out
|
|
||||||
&:hover
|
|
||||||
color #409EFF
|
|
||||||
</style>
|
|
@ -1,136 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="tcyun-view">
|
|
||||||
<el-row :gutter="16">
|
|
||||||
<el-col :span="16" :offset="4">
|
|
||||||
<div class="view-title">
|
|
||||||
又拍云设置
|
|
||||||
</div>
|
|
||||||
<el-form
|
|
||||||
ref="tcyun"
|
|
||||||
label-position="right"
|
|
||||||
label-width="120px"
|
|
||||||
:model="form"
|
|
||||||
size="mini">
|
|
||||||
<el-form-item
|
|
||||||
label="设定存储空间名"
|
|
||||||
prop="bucket"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: 'Bucket不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.bucket" @keyup.native.enter="confirm" placeholder="Bucket"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定操作员"
|
|
||||||
prop="operator"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '操作员不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.operator" @keyup.native.enter="confirm" placeholder="例如:me"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定操作员密码"
|
|
||||||
prop="password"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '操作员密码不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.password" @keyup.native.enter="confirm" placeholder="输入操作员密码" type="password"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定加速域名"
|
|
||||||
prop="url"
|
|
||||||
:rules="{
|
|
||||||
required: true, message: '加速域名不能为空', trigger: 'blur'
|
|
||||||
}">
|
|
||||||
<el-input v-model="form.url" placeholder="例如http://xxx.test.upcdn.net" @keyup.native.enter="confirm()"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="设定网址后缀"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.options" @keyup.native.enter="confirm" placeholder="例如!imgslim"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="指定存储路径"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.path" @keyup.native.enter="confirm" placeholder="例如img/"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button-group>
|
|
||||||
<el-button type="primary" @click="confirm" round>确定</el-button>
|
|
||||||
<el-button type="success" @click="setDefaultPicBed('upyun')" round :disabled="defaultPicBed === 'upyun'">设为默认图床</el-button>
|
|
||||||
</el-button-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { Component, Vue } from 'vue-property-decorator'
|
|
||||||
import mixin from '@/utils/ConfirmButtonMixin'
|
|
||||||
import { IUpyunConfig } from 'picgo/dist/types'
|
|
||||||
import { trimValues } from '@/utils/common'
|
|
||||||
@Component({
|
|
||||||
name: 'upyun',
|
|
||||||
mixins: [mixin]
|
|
||||||
})
|
|
||||||
export default class extends Vue {
|
|
||||||
form: IUpyunConfig = {
|
|
||||||
bucket: '',
|
|
||||||
operator: '',
|
|
||||||
password: '',
|
|
||||||
options: '',
|
|
||||||
url: '',
|
|
||||||
path: ''
|
|
||||||
}
|
|
||||||
|
|
||||||
async created () {
|
|
||||||
const config = await this.getConfig<IUpyunConfig>('picBed.upyun')
|
|
||||||
if (config) {
|
|
||||||
this.form = Object.assign({}, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$refs.tcyun.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
this.saveConfig({
|
|
||||||
'picBed.upyun': trimValues(this.form)
|
|
||||||
})
|
|
||||||
const successNotification = new Notification('设置结果', {
|
|
||||||
body: '设置成功'
|
|
||||||
})
|
|
||||||
successNotification.onclick = () => {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang='stylus'>
|
|
||||||
#tcyun-view
|
|
||||||
.el-form
|
|
||||||
label
|
|
||||||
line-height 22px
|
|
||||||
padding-bottom 0
|
|
||||||
color #eee
|
|
||||||
.el-input__inner
|
|
||||||
border-radius 19px
|
|
||||||
.el-radio-group
|
|
||||||
width 100%
|
|
||||||
label
|
|
||||||
width 25%
|
|
||||||
.el-radio-button__inner
|
|
||||||
width 100%
|
|
||||||
.el-radio-button:first-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 14px 0 0 14px
|
|
||||||
.el-radio-button:last-child
|
|
||||||
.el-radio-button__inner
|
|
||||||
border-left none
|
|
||||||
border-radius 0 14px 14px 0
|
|
||||||
</style>
|
|
@ -3,7 +3,7 @@
|
|||||||
<el-row :gutter="16" class="setting-list">
|
<el-row :gutter="16" class="setting-list">
|
||||||
<el-col :span="16" :offset="4">
|
<el-col :span="16" :offset="4">
|
||||||
<div class="view-title">
|
<div class="view-title">
|
||||||
{{ picBedName }}{{ $T('SETTINGS') }}
|
{{ picBedName }} {{ $T('SETTINGS') }}
|
||||||
</div>
|
</div>
|
||||||
<config-form
|
<config-form
|
||||||
v-if="config.length > 0"
|
v-if="config.length > 0"
|
||||||
@ -106,6 +106,8 @@ export default class extends Vue {
|
|||||||
line-height 22px
|
line-height 22px
|
||||||
padding-bottom 0
|
padding-bottom 0
|
||||||
color #eee
|
color #eee
|
||||||
|
&-item
|
||||||
|
margin-bottom 11px
|
||||||
.el-button-group
|
.el-button-group
|
||||||
width 100%
|
width 100%
|
||||||
.el-button
|
.el-button
|
@ -32,44 +32,9 @@ export default new Router({
|
|||||||
name: 'upload'
|
name: 'upload'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'qiniu',
|
path: 'picbeds/:type',
|
||||||
component: () => import(/* webpackChunkName: "Qiniu" */ '@/pages/picbeds/Qiniu.vue'),
|
component: () => import(/* webpackChunkName: "Other" */ '@/pages/picbeds/index.vue'),
|
||||||
name: 'qiniu'
|
name: 'picbeds'
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'tcyun',
|
|
||||||
component: () => import(/* webpackChunkName: "TcYun" */ '@/pages/picbeds/TcYun.vue'),
|
|
||||||
name: 'tcyun'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'upyun',
|
|
||||||
component: () => import(/* webpackChunkName: "UpYun" */ '@/pages/picbeds/UpYun.vue'),
|
|
||||||
name: 'upyun'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'github',
|
|
||||||
component: () => import(/* webpackChunkName: "GitHub" */ '@/pages/picbeds/GitHub.vue'),
|
|
||||||
name: 'github'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'smms',
|
|
||||||
component: () => import(/* webpackChunkName: "SMMS" */ '@/pages/picbeds/SMMS.vue'),
|
|
||||||
name: 'smms'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'aliyun',
|
|
||||||
component: () => import(/* webpackChunkName: "AliYun" */ '@/pages/picbeds/AliYun.vue'),
|
|
||||||
name: 'aliyun'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'imgur',
|
|
||||||
component: () => import(/* webpackChunkName: "Imgur" */ '@/pages/picbeds/Imgur.vue'),
|
|
||||||
name: 'imgur'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'others/:type',
|
|
||||||
component: () => import(/* webpackChunkName: "Other" */ '@/pages/picbeds/Others.vue'),
|
|
||||||
name: 'others'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'gallery',
|
path: 'gallery',
|
||||||
|
@ -34,6 +34,7 @@ export const SHOW_MAIN_PAGE_DONATION = 'SHOW_MAIN_PAGE_DONATION'
|
|||||||
export const FORCE_UPDATE = 'FORCE_UPDATE'
|
export const FORCE_UPDATE = 'FORCE_UPDATE'
|
||||||
export const OPEN_WINDOW = 'OPEN_WINDOW'
|
export const OPEN_WINDOW = 'OPEN_WINDOW'
|
||||||
export const DEFAULT_LOGO = 'DEFAULT_LOGO'
|
export const DEFAULT_LOGO = 'DEFAULT_LOGO'
|
||||||
|
export const GET_PICBEDS = 'GET_PICBEDS'
|
||||||
// i18n
|
// i18n
|
||||||
export const GET_CURRENT_LANGUAGE = 'GET_CURRENT_LANGUAGE'
|
export const GET_CURRENT_LANGUAGE = 'GET_CURRENT_LANGUAGE'
|
||||||
export const GET_LANGUAGE_LIST = 'GET_LANGUAGE_LIST'
|
export const GET_LANGUAGE_LIST = 'GET_LANGUAGE_LIST'
|
||||||
|
7
src/universal/i18n/index.ts
Normal file
7
src/universal/i18n/index.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
export const builtinI18nList: II18nItem[] = [{
|
||||||
|
label: '简体中文',
|
||||||
|
value: 'zh-CN'
|
||||||
|
}, {
|
||||||
|
label: 'English',
|
||||||
|
value: 'en'
|
||||||
|
}]
|
40
yarn.lock
40
yarn.lock
@ -1346,10 +1346,10 @@
|
|||||||
chalk "4.1.2"
|
chalk "4.1.2"
|
||||||
tslib "^2.3.1"
|
tslib "^2.3.1"
|
||||||
|
|
||||||
"@picgo/store@2.0.1":
|
"@picgo/store@^2.0.2":
|
||||||
version "2.0.1"
|
version "2.0.2"
|
||||||
resolved "https://registry.npmmirror.com/@picgo/store/-/store-2.0.1.tgz#9dce62a6e61e5539c06d261628c1c6c29b8e07eb"
|
resolved "https://registry.npmmirror.com/@picgo/store/-/store-2.0.2.tgz#0b5050f5e8cef7043cf5463fa81ef3c3a19fffc7"
|
||||||
integrity sha512-DLv1/EpSWNec8AAFxVCHSFfArotuU4WdUs3KZePtDK7nwKYIqQMnfcCYOUadoAZn3mn1hS1byv7i26qyIPcKaw==
|
integrity sha512-/nZr6zeLNtlTG+g8iUd5xy5Vtl7iu7SHI3aY9a/+AIlBSs7Io/06MrxGyoAHSWVg9BsB80kJyrNeGyOWiOO5jw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@commonify/lowdb" "^3.0.0"
|
"@commonify/lowdb" "^3.0.0"
|
||||||
"@commonify/steno" "^2.1.0"
|
"@commonify/steno" "^2.1.0"
|
||||||
@ -1362,17 +1362,17 @@
|
|||||||
lodash-id "^0.14.0"
|
lodash-id "^0.14.0"
|
||||||
write-file-atomic "^4.0.1"
|
write-file-atomic "^4.0.1"
|
||||||
|
|
||||||
"@picgo/store@^2.0.2":
|
"@picgo/store@^2.0.4":
|
||||||
version "2.0.2"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmmirror.com/@picgo/store/-/store-2.0.2.tgz#0b5050f5e8cef7043cf5463fa81ef3c3a19fffc7"
|
resolved "https://registry.npmjs.org/@picgo/store/-/store-2.0.4.tgz#6360ccf7dfaa90f8db6ee5115f96f5e8bf094113"
|
||||||
integrity sha512-/nZr6zeLNtlTG+g8iUd5xy5Vtl7iu7SHI3aY9a/+AIlBSs7Io/06MrxGyoAHSWVg9BsB80kJyrNeGyOWiOO5jw==
|
integrity sha512-QWBF/vxLkCOCwFmjPPwPW8ZJdcko+kFY4dBSJYi8spsKp/7FmKCHmSWIkOpkdH/ww0Gh7UbtSBveKgm5u4t42w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@commonify/lowdb" "^3.0.0"
|
"@commonify/lowdb" "^3.0.0"
|
||||||
"@commonify/steno" "^2.1.0"
|
"@commonify/steno" "^2.1.0"
|
||||||
"@types/bson" "^4.0.1"
|
"@types/bson" "^4.0.1"
|
||||||
"@types/graceful-fs" "^4.1.3"
|
"@types/graceful-fs" "^4.1.3"
|
||||||
"@types/lodash" "^4.14.182"
|
"@types/lodash" "^4.14.182"
|
||||||
comment-json "^4.1.0"
|
comment-json "^4.2.3"
|
||||||
fflate "^0.7.3"
|
fflate "^0.7.3"
|
||||||
lodash "^4.17.21"
|
lodash "^4.17.21"
|
||||||
lodash-id "^0.14.0"
|
lodash-id "^0.14.0"
|
||||||
@ -3866,6 +3866,17 @@ comment-json@^4.1.0:
|
|||||||
has-own-prop "^2.0.0"
|
has-own-prop "^2.0.0"
|
||||||
repeat-string "^1.6.1"
|
repeat-string "^1.6.1"
|
||||||
|
|
||||||
|
comment-json@^4.2.3:
|
||||||
|
version "4.2.3"
|
||||||
|
resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365"
|
||||||
|
integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==
|
||||||
|
dependencies:
|
||||||
|
array-timsort "^1.0.3"
|
||||||
|
core-util-is "^1.0.3"
|
||||||
|
esprima "^4.0.1"
|
||||||
|
has-own-prop "^2.0.0"
|
||||||
|
repeat-string "^1.6.1"
|
||||||
|
|
||||||
commitizen@^4.0.3, commitizen@^4.2.3:
|
commitizen@^4.0.3, commitizen@^4.2.3:
|
||||||
version "4.2.4"
|
version "4.2.4"
|
||||||
resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz#a3e5b36bd7575f6bf6e7aa19dbbf06b0d8f37165"
|
resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz#a3e5b36bd7575f6bf6e7aa19dbbf06b0d8f37165"
|
||||||
@ -4261,7 +4272,7 @@ core-util-is@1.0.2:
|
|||||||
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||||
|
|
||||||
core-util-is@^1.0.2, core-util-is@~1.0.0:
|
core-util-is@^1.0.2, core-util-is@^1.0.3, core-util-is@~1.0.0:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||||
@ -9895,10 +9906,10 @@ performance-now@^2.1.0:
|
|||||||
resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||||
|
|
||||||
picgo@^1.5.0-alpha.5:
|
picgo@^1.5.0-alpha.7:
|
||||||
version "1.5.0-alpha.5"
|
version "1.5.0-alpha.7"
|
||||||
resolved "https://registry.npmmirror.com/picgo/-/picgo-1.5.0-alpha.5.tgz#3258efa1aecdb9392405dc77fdb3273d3703b003"
|
resolved "https://registry.npmjs.org/picgo/-/picgo-1.5.0-alpha.7.tgz#e334a5d736a54c45432a88288e964e71b36912db"
|
||||||
integrity sha512-62F1GoctoHG4lIak91TNls5cw/DeHRt7PGh3SU/vKMacjSaKuIA9eU6FOyXSKtXqBgZFIpEQC6JYEvlTf/aMQA==
|
integrity sha512-MN0aBTF8u2fbdOaR8acTek9nEaCcWd3M1KGdu4Xp3aYqMakpF/meWItNYJYr8wwc4eCcQ7vC7aJ0ZIXsua6uVA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@picgo/i18n" "^1.0.0"
|
"@picgo/i18n" "^1.0.0"
|
||||||
"@picgo/store" "^2.0.2"
|
"@picgo/store" "^2.0.2"
|
||||||
@ -9914,6 +9925,7 @@ picgo@^1.5.0-alpha.5:
|
|||||||
image-size "^0.8.3"
|
image-size "^0.8.3"
|
||||||
inquirer "^6.0.0"
|
inquirer "^6.0.0"
|
||||||
is-wsl "^2.2.0"
|
is-wsl "^2.2.0"
|
||||||
|
js-yaml "^4.1.0"
|
||||||
lodash "^4.17.21"
|
lodash "^4.17.21"
|
||||||
md5 "^2.2.1"
|
md5 "^2.2.1"
|
||||||
mime-types "2.1.33"
|
mime-types "2.1.33"
|
||||||
|
Loading…
Reference in New Issue
Block a user