mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-09-07 08:26:57 +08:00
Merge branch 'dev' into release
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
## :tada: 1.9.8 (2023-07-20)
|
||||
|
||||
|
||||
### :sparkles: Features
|
||||
|
||||
* add a new config item to close upload result notification ([c1698e8](https://github.com/Kuingsmile/PicList/commit/c1698e8)), closes [#74](https://github.com/Kuingsmile/PicList/issues/74)
|
||||
* add two new config items to control mini window and main window ([2eff772](https://github.com/Kuingsmile/PicList/commit/2eff772))
|
||||
* pictures uploaded using webdav and local path can be previewed in gallery now ([6a94503](https://github.com/Kuingsmile/PicList/commit/6a94503)), closes [#64](https://github.com/Kuingsmile/PicList/issues/64)
|
||||
|
||||
|
||||
### :bug: Bug Fixes
|
||||
|
||||
* fix a bug of file server when the request path is url encoded ([48b13b2](https://github.com/Kuingsmile/PicList/commit/48b13b2))
|
||||
* fix an issue related with yourls ([58486a3](https://github.com/Kuingsmile/PicList/commit/58486a3)), closes [#72](https://github.com/Kuingsmile/PicList/issues/72)
|
||||
|
||||
|
||||
|
||||
## :tada: 1.9.7 (2023-07-12)
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ PicList的内核使用的是原版PicGo-Core基础上修改的[PicList-core](htt
|
||||
## 特色功能
|
||||
|
||||
- 保留了PicGo的所有功能,兼容已有的PicGo插件系统,包括和typora、obsidian等的搭配
|
||||
- 新增了对webdav上传,imgur账户上传等的支持
|
||||
- 新增了对webdav上传,imgur账户上传,本地文件夹上传等的支持
|
||||
- 相册中可同步删除云端图片,同时新增了高级搜索和排序,批量修改URL等功能
|
||||
- 内置水印添加、图片压缩、图片缩放、图片旋转和图片格式转换等功能,支持自定义配置,且可以通过CLI命令行调用
|
||||
- 新增配置多端同步功能
|
||||
@@ -91,6 +91,7 @@ MacOS:
|
||||
| 七牛云 | ✔️ | ✔️ |
|
||||
| S3 API兼容平台 | ✔️ | ✔️ |
|
||||
| WebDAV | ✔️ | ✔️ |
|
||||
| 本地文件夹 | ✔️ | ✔️ |
|
||||
|
||||
| 插件 | 相册云删除 |
|
||||
| :----------------------------------------------------------: | :--------: |
|
||||
|
||||
+2
-1
@@ -31,7 +31,7 @@ if you want to use PicList-core, please go to [https://github.com/Kuingsmile/Pic
|
||||
## Features
|
||||
|
||||
- Maintain all the functions of PicGo, compatible with the existing PicGo plug-in system, including the combination with typora, obsidian and other software
|
||||
- Add support for webdav upload, imgur account upload, etc.
|
||||
- Add support for webdav upload, imgur account upload, local path upload, etc.
|
||||
- Synchronous cloud deletion of pictures in the album, advanced search and sorting features have been added, along with the ability to bulk modify URLs.
|
||||
- Built-in watermark addition, image compression, image scaling, image rotation and image format conversion functions, support custom configuration, and can be called through CLI command line
|
||||
- Add the configuration of multi-device synchronization function.
|
||||
@@ -93,6 +93,7 @@ Search and install `Image auto upload Plugin` in the community plugin, then ente
|
||||
| Qiniu | ✔️ | ✔️ |
|
||||
| S3 API compatible platform | ✔️ | ✔️ |
|
||||
| WebDAV | ✔️ | ✔️ |
|
||||
| Local | ✔️ | ✔️ |
|
||||
|
||||
| Plugin | Album cloud deletion |
|
||||
| :----------------------------------------------------------: | :------------------: |
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piclist",
|
||||
"version": "1.9.7",
|
||||
"version": "1.9.8",
|
||||
"author": {
|
||||
"name": "Kuingsmile",
|
||||
"email": "pkukuing@gmail.com"
|
||||
@@ -51,7 +51,7 @@
|
||||
"cos-nodejs-sdk-v5": "^2.12.1",
|
||||
"dexie": "^3.2.4",
|
||||
"electron-updater": "^6.1.1",
|
||||
"element-plus": "^2.3.7",
|
||||
"element-plus": "^2.3.8",
|
||||
"epipebomb": "^1.0.0",
|
||||
"fast-xml-parser": "^4.2.5",
|
||||
"form-data": "^4.0.0",
|
||||
@@ -66,7 +66,7 @@
|
||||
"mime-types": "^2.1.35",
|
||||
"mitt": "^3.0.0",
|
||||
"nodejs-file-downloader": "^4.12.1",
|
||||
"piclist": "^0.7.4",
|
||||
"piclist": "^0.7.6",
|
||||
"pinia": "^2.1.4",
|
||||
"pinia-plugin-persistedstate": "^3.1.0",
|
||||
"qiniu": "^7.8.0",
|
||||
|
||||
@@ -164,6 +164,8 @@ SETTINGS_CHECK_UPDATE: Check Update
|
||||
SETTINGS_OPEN_UPDATE_HELPER: Open Update Helper
|
||||
SETTINGS_OPEN: Open
|
||||
SETTINGS_CLOSE: Close
|
||||
SETTINGS_CLOSE_MINI_WINDOW_SYNC: Close Mini Window When open Main Window
|
||||
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: Close Main Window When open Mini Window
|
||||
SETTINGS_ACCEPT_BETA_UPDATE: Accept Beta Update
|
||||
SETTINGS_LAUNCH_ON_BOOT: Launch On Boot
|
||||
SETTINGS_RENAME_BEFORE_UPLOAD: Rename Before Upload
|
||||
@@ -172,6 +174,7 @@ SETTINGS_ADVANCED_RENAME: Advanced Rename
|
||||
SETTINGS_ADVANCED_RENAME_ENABLE: Enable Advanced Rename
|
||||
SETTINGS_ADVANCED_RENAME_FORMAT: Advanced Rename Format
|
||||
SETTINGS_OPEN_UPLOAD_TIPS: Open Upload Tips
|
||||
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: Open Upload Result Tips
|
||||
SETTINGS_MINI_WINDOW_ON_TOP: Mini Window On Top
|
||||
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: Auto Copy URL After Upload
|
||||
SETTINGS_TIPS_PLACEHOLDER_URL: Use $url to represent url position
|
||||
|
||||
@@ -166,6 +166,8 @@ SETTINGS_CHECK_UPDATE: 检查更新
|
||||
SETTINGS_OPEN_UPDATE_HELPER: 打开更新助手
|
||||
SETTINGS_OPEN: 开
|
||||
SETTINGS_CLOSE: 关
|
||||
SETTINGS_CLOSE_MINI_WINDOW_SYNC: 打开主窗口时关闭mini窗口
|
||||
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 打开mini窗口时关闭主窗口
|
||||
SETTINGS_ACCEPT_BETA_UPDATE: 接受Beta版本更新
|
||||
SETTINGS_LAUNCH_ON_BOOT: 开机自启
|
||||
SETTINGS_RENAME_BEFORE_UPLOAD: 上传前重命名
|
||||
@@ -173,7 +175,8 @@ SETTINGS_TIMESTAMP_RENAME: 时间戳重命名
|
||||
SETTINGS_ADVANCED_RENAME: 高级重命名
|
||||
SETTINGS_ADVANCED_RENAME_ENABLE: 开启高级重命名
|
||||
SETTINGS_ADVANCED_RENAME_FORMAT: 重命名格式
|
||||
SETTINGS_OPEN_UPLOAD_TIPS: 开启上传提示
|
||||
SETTINGS_OPEN_UPLOAD_TIPS: 开启上传进度提示
|
||||
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: 开启上传结果提示
|
||||
SETTINGS_MINI_WINDOW_ON_TOP: Mini窗口置顶
|
||||
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: 上传后自动复制URL
|
||||
SETTINGS_TIPS_PLACEHOLDER_URL: 用占位符 $url 来表示url的位置
|
||||
|
||||
@@ -164,6 +164,8 @@ SETTINGS_CHECK_UPDATE: 檢查更新
|
||||
SETTINGS_OPEN_UPDATE_HELPER: 打開更新助手
|
||||
SETTINGS_OPEN: 開
|
||||
SETTINGS_CLOSE: 關
|
||||
SETTINGS_CLOSE_MINI_WINDOW_SYNC: 開主窗口同步關閉mini窗口
|
||||
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: 關mini窗口同步關閉主窗口
|
||||
SETTINGS_ACCEPT_BETA_UPDATE: 接受Beta版本更新
|
||||
SETTINGS_LAUNCH_ON_BOOT: 開機時啟動
|
||||
SETTINGS_RENAME_BEFORE_UPLOAD: 上傳前重新命名
|
||||
@@ -172,6 +174,7 @@ SETTINGS_ADVANCED_RENAME: 高級命名
|
||||
SETTINGS_ADVANCED_RENAME_ENABLE: 啟用高級命名
|
||||
SETTINGS_ADVANCED_RENAME_FORMAT: 高級命名格式
|
||||
SETTINGS_OPEN_UPLOAD_TIPS: 開啟上傳提示
|
||||
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: 開啟上傳結果提示
|
||||
SETTINGS_MINI_WINDOW_ON_TOP: Mini視窗置頂
|
||||
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: 上傳後自動複製URL
|
||||
SETTINGS_TIPS_PLACEHOLDER_URL: 用佔位符 $url 來表示URL的位置
|
||||
|
||||
@@ -28,6 +28,7 @@ let tray: Tray | null
|
||||
|
||||
export function setDockMenu () {
|
||||
const isListeningClipboard = db.get('settings.isListeningClipboard') || false
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
const dockMenu = Menu.buildFromTemplate([
|
||||
{
|
||||
label: T('OPEN_MAIN_WINDOW'),
|
||||
@@ -35,6 +36,9 @@ export function setDockMenu () {
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
|
||||
settingWindow!.show()
|
||||
settingWindow!.focus()
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -74,8 +78,12 @@ export function createMenu () {
|
||||
label: T('OPEN_MAIN_WINDOW'),
|
||||
click () {
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
settingWindow!.show()
|
||||
settingWindow!.focus()
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -135,8 +143,12 @@ export function createContextMenu () {
|
||||
label: T('OPEN_MAIN_WINDOW'),
|
||||
click () {
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
settingWindow!.show()
|
||||
settingWindow!.focus()
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -206,6 +218,10 @@ export function createContextMenu () {
|
||||
miniWindow.on('move', setPositionFunc)
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
const autoCloseMainWindow = db.get('settings.autoCloseMainWindow') || false
|
||||
if (windowManager.has(IWindowList.SETTING_WINDOW) && autoCloseMainWindow) {
|
||||
windowManager.get(IWindowList.SETTING_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -224,8 +240,12 @@ export function createContextMenu () {
|
||||
label: T('OPEN_MAIN_WINDOW'),
|
||||
click () {
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
settingWindow!.show()
|
||||
settingWindow!.focus()
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -251,6 +271,10 @@ export function createContextMenu () {
|
||||
miniWindow.on('move', setPositionFunc)
|
||||
miniWindow.show()
|
||||
miniWindow.focus()
|
||||
const autoCloseMainWindow = db.get('settings.autoCloseMainWindow') || false
|
||||
if (windowManager.has(IWindowList.SETTING_WINDOW) && autoCloseMainWindow) {
|
||||
windowManager.get(IWindowList.SETTING_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -358,8 +382,12 @@ export function createTray () {
|
||||
windowManager.get(IWindowList.TRAY_WINDOW)!.hide()
|
||||
}
|
||||
const settingWindow = windowManager.get(IWindowList.SETTING_WINDOW)
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
settingWindow!.show()
|
||||
settingWindow!.focus()
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW) && autoCloseMiniWindow) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -392,14 +420,17 @@ export function createTray () {
|
||||
await fs.remove(rawInput[i])
|
||||
}
|
||||
pasteText.push(await (pasteTemplate(pasteStyle, imgs[i], db.get('settings.customLink'))))
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl!
|
||||
// icon: files[i]
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
const isShowResultNotification = db.get('settings.uploadResultNotification') === undefined ? true : !!db.get('settings.uploadResultNotification')
|
||||
if (isShowResultNotification) {
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl!
|
||||
// icon: files[i]
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
}
|
||||
await GalleryDB.getInstance().insert(imgs[i])
|
||||
}
|
||||
handleCopyUrl(pasteText.join('\n'))
|
||||
|
||||
@@ -32,14 +32,17 @@ export const uploadClipboardFiles = async (): Promise<IStringKeyMap> => {
|
||||
const trayWindow = windowManager.get(IWindowList.TRAY_WINDOW)
|
||||
const pasteStyle = db.get('settings.pasteStyle') || 'markdown'
|
||||
handleCopyUrl(await (pasteTemplate(pasteStyle, img[0], db.get('settings.customLink'))))
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: img[0].imgUrl!
|
||||
// icon: img[0].imgUrl
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, 100)
|
||||
const isShowResultNotification = db.get('settings.uploadResultNotification') === undefined ? true : !!db.get('settings.uploadResultNotification')
|
||||
if (isShowResultNotification) {
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: img[0].imgUrl!
|
||||
// icon: img[0].imgUrl
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, 100)
|
||||
}
|
||||
await GalleryDB.getInstance().insert(img[0])
|
||||
// trayWindow just be created in mac/windows, not in linux
|
||||
trayWindow?.webContents?.send('clipboardFiles', [])
|
||||
@@ -88,14 +91,17 @@ export const uploadChoosedFiles = async (webContents: WebContents, files: IFileW
|
||||
})
|
||||
}
|
||||
pasteText.push(await (pasteTemplate(pasteStyle, imgs[i], db.get('settings.customLink'))))
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl!
|
||||
// icon: files[i].path
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
const isShowResultNotification = db.get('settings.uploadResultNotification') === undefined ? true : !!db.get('settings.uploadResultNotification')
|
||||
if (isShowResultNotification) {
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl!
|
||||
// icon: files[i].path
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
}
|
||||
await GalleryDB.getInstance().insert(imgs[i])
|
||||
result.push({
|
||||
url: handleUrlEncodeWithSetting(imgs[i].imgUrl!),
|
||||
|
||||
@@ -89,14 +89,17 @@ class GuiApi implements IGuiApi {
|
||||
await fs.remove(rawInput[i])
|
||||
}
|
||||
pasteText.push(await (pasteTemplate(pasteStyle, imgs[i], db.get('settings.customLink'))))
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl as string
|
||||
// icon: imgs[i].imgUrl
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
const isShowResultNotification = db.get('settings.uploadResultNotification') === undefined ? true : !!db.get('settings.uploadResultNotification')
|
||||
if (isShowResultNotification) {
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: imgs[i].imgUrl as string
|
||||
// icon: imgs[i].imgUrl
|
||||
})
|
||||
setTimeout(() => {
|
||||
notification.show()
|
||||
}, i * 100)
|
||||
}
|
||||
await GalleryDB.getInstance().insert(imgs[i])
|
||||
}
|
||||
handleCopyUrl(pasteText.join('\n'))
|
||||
|
||||
@@ -58,13 +58,16 @@ export default {
|
||||
if (img !== false) {
|
||||
const pasteStyle = db.get('settings.pasteStyle') || 'markdown'
|
||||
handleCopyUrl(await (pasteTemplate(pasteStyle, img[0], db.get('settings.customLink'))))
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: img[0].imgUrl!
|
||||
// icon: file[0]
|
||||
// icon: img[0].imgUrl
|
||||
})
|
||||
notification.show()
|
||||
const isShowResultNotification = db.get('settings.uploadResultNotification') === undefined ? true : !!db.get('settings.uploadResultNotification')
|
||||
if (isShowResultNotification) {
|
||||
const notification = new Notification({
|
||||
title: T('UPLOAD_SUCCEED'),
|
||||
body: img[0].imgUrl!
|
||||
// icon: file[0]
|
||||
// icon: img[0].imgUrl
|
||||
})
|
||||
notification.show()
|
||||
}
|
||||
await GalleryDB.getInstance().insert(img[0])
|
||||
trayWindow.webContents.send('clipboardFiles', [])
|
||||
if (windowManager.has(IWindowList.SETTING_WINDOW)) {
|
||||
@@ -211,6 +214,12 @@ export default {
|
||||
|
||||
ipcMain.on('openSettingWindow', () => {
|
||||
windowManager.get(IWindowList.SETTING_WINDOW)!.show()
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
if (autoCloseMiniWindow) {
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW)) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.on('openMiniWindow', () => {
|
||||
|
||||
@@ -30,6 +30,12 @@ const buildMiniPageMenu = () => {
|
||||
label: T('OPEN_MAIN_WINDOW'),
|
||||
click () {
|
||||
windowManager.get(IWindowList.SETTING_WINDOW)!.show()
|
||||
const autoCloseMiniWindow = db.get('settings.autoCloseMiniWindow') || false
|
||||
if (autoCloseMiniWindow) {
|
||||
if (windowManager.has(IWindowList.MINI_WINDOW)) {
|
||||
windowManager.get(IWindowList.MINI_WINDOW)!.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import http from 'http'
|
||||
import fs from 'fs-extra'
|
||||
import path from 'path'
|
||||
import picgo from '@core/picgo'
|
||||
import logger from '../apis/core/picgo/logger'
|
||||
|
||||
export const imgFilePath = path.join(picgo.baseDir, 'imgTemp')
|
||||
fs.ensureDirSync(imgFilePath)
|
||||
|
||||
const serverPort = 36699
|
||||
|
||||
export function startFileServer () {
|
||||
const server = http.createServer((req, res) => {
|
||||
const requestPath = req.url?.split('?')[0]
|
||||
const filePath = path.join(imgFilePath, decodeURIComponent(requestPath as string))
|
||||
|
||||
fs.readFile(filePath, (err, data) => {
|
||||
if (err) {
|
||||
res.writeHead(404)
|
||||
res.end('404 Not Found')
|
||||
} else {
|
||||
res.end(data)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
server.listen(serverPort, () => {
|
||||
logger.info(`File server is running, http://localhost:${serverPort}`)
|
||||
}).on('error', (err) => {
|
||||
logger.error(err)
|
||||
})
|
||||
}
|
||||
@@ -47,6 +47,7 @@ import clipboardPoll from '../utils/clipboardPoll'
|
||||
import path from 'path'
|
||||
import { CLIPBOARD_IMAGE_FOLDER } from '~/universal/utils/static'
|
||||
import fs from 'fs-extra'
|
||||
import { startFileServer } from '../fileServer'
|
||||
const isDevelopment = process.env.NODE_ENV !== 'production'
|
||||
|
||||
const handleStartUpFiles = (argv: string[], cwd: string) => {
|
||||
@@ -158,6 +159,7 @@ class LifeCycle {
|
||||
shortKeyHandler.init()
|
||||
})
|
||||
server.startup()
|
||||
startFileServer()
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
handleStartUpFiles(process.argv, process.cwd())
|
||||
}
|
||||
|
||||
@@ -122,9 +122,12 @@ export const generateShortUrl = async (url: string) => {
|
||||
console.log(e)
|
||||
}
|
||||
} else if (server === 'yourls') {
|
||||
const domain = db.get('settings.yourlsDomain') || ''
|
||||
let domain = db.get('settings.yourlsDomain') || ''
|
||||
const signature = db.get('settings.yourlsSignature') || ''
|
||||
if (domain && signature) {
|
||||
if (!/^https?:\/\//.test(domain)) {
|
||||
domain = `http://${domain}`
|
||||
}
|
||||
try {
|
||||
const res = await axios.get(`${domain}/yourls-api.php?signature=${signature}&action=shorturl&format=json&url=${url}`)
|
||||
if (res.data.shorturl) {
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
@click="zoomImage(index)"
|
||||
>
|
||||
<img
|
||||
v-lazy="item.imgUrl"
|
||||
v-lazy="item.galleryPath || item.imgUrl"
|
||||
class="gallery-list__item-img"
|
||||
>
|
||||
</div>
|
||||
|
||||
@@ -110,6 +110,28 @@
|
||||
{{ $T('SETTINGS_CLICK_TO_SET') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin'"
|
||||
:label="$T('SETTINGS_CLOSE_MINI_WINDOW_SYNC')"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.autoCloseMiniWindow"
|
||||
:active-text="$T('SETTINGS_OPEN')"
|
||||
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||
@change="handleAutoCloseMiniWindowChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin'"
|
||||
:label="$T('SETTINGS_CLOSE_MAIN_WINDOW_SYNC')"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.autoCloseMainWindow"
|
||||
:active-text="$T('SETTINGS_OPEN')"
|
||||
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||
@change="handleAutoCloseMainWindowChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="os !== 'darwin'"
|
||||
:label="$T('SETTINGS_MINI_WINDOW_ON_TOP')"
|
||||
@@ -287,6 +309,16 @@
|
||||
@change="handleUploadNotification"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$T('SETTINGS_OPEN_UPLOAD_RESULT_TIPS')"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.uploadResultNotification"
|
||||
:active-text="$T('SETTINGS_OPEN')"
|
||||
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||
@change="handleUploadResultNotification"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$T('SETTINGS_COMPRESS_AND_WATERMARK')"
|
||||
>
|
||||
@@ -1527,7 +1559,10 @@ const form = reactive<ISettingForm>({
|
||||
rename: false,
|
||||
autoRename: false,
|
||||
uploadNotification: false,
|
||||
uploadResultNotification: true,
|
||||
miniWindowOntop: false,
|
||||
autoCloseMiniWindow: false,
|
||||
autoCloseMainWindow: false,
|
||||
logLevel: ['all'],
|
||||
autoCopyUrl: true,
|
||||
checkBetaUpdate: true,
|
||||
@@ -1680,7 +1715,10 @@ async function initData () {
|
||||
form.rename = settings.rename || false
|
||||
form.autoRename = settings.autoRename || false
|
||||
form.uploadNotification = settings.uploadNotification || false
|
||||
form.uploadResultNotification = settings.uploadResultNotification === undefined ? true : settings.uploadResultNotification
|
||||
form.miniWindowOntop = settings.miniWindowOntop || false
|
||||
form.autoCloseMiniWindow = settings.autoCloseMiniWindow || false
|
||||
form.autoCloseMainWindow = settings.autoCloseMainWindow || false
|
||||
form.logLevel = initLogLevel(settings.logLevel || [])
|
||||
form.autoCopyUrl = settings.autoCopy === undefined ? true : settings.autoCopy
|
||||
form.checkBetaUpdate = settings.checkBetaUpdate === undefined ? true : settings.checkBetaUpdate
|
||||
@@ -1952,6 +1990,12 @@ function handleUploadNotification (val: ICheckBoxValueType) {
|
||||
})
|
||||
}
|
||||
|
||||
function handleUploadResultNotification (val: ICheckBoxValueType) {
|
||||
saveConfig({
|
||||
'settings.uploadResultNotification': val
|
||||
})
|
||||
}
|
||||
|
||||
async function cancelWindowSize () {
|
||||
mainWindowSizeVisible.value = false
|
||||
mainWindowWidth.value = await getConfig<number>('settings.mainWindowWidth') || 1200
|
||||
@@ -1975,6 +2019,14 @@ async function confirmWindowSize () {
|
||||
}
|
||||
}
|
||||
|
||||
function handleAutoCloseMainWindowChange (val: ICheckBoxValueType) {
|
||||
saveConfig('settings.autoCloseMainWindow', val)
|
||||
}
|
||||
|
||||
function handleAutoCloseMiniWindowChange (val: ICheckBoxValueType) {
|
||||
saveConfig('settings.autoCloseMiniWindow', val)
|
||||
}
|
||||
|
||||
function handleMiniWindowOntop (val: ICheckBoxValueType) {
|
||||
saveConfig('settings.miniWindowOntop', val)
|
||||
$message.info($T('TIPS_NEED_RELOAD'))
|
||||
|
||||
Vendored
+3
@@ -159,6 +159,8 @@ interface ILocales {
|
||||
SETTINGS_OPEN_UPDATE_HELPER: string
|
||||
SETTINGS_OPEN: string
|
||||
SETTINGS_CLOSE: string
|
||||
SETTINGS_CLOSE_MINI_WINDOW_SYNC: string
|
||||
SETTINGS_CLOSE_MAIN_WINDOW_SYNC: string
|
||||
SETTINGS_ACCEPT_BETA_UPDATE: string
|
||||
SETTINGS_LAUNCH_ON_BOOT: string
|
||||
SETTINGS_RENAME_BEFORE_UPLOAD: string
|
||||
@@ -167,6 +169,7 @@ interface ILocales {
|
||||
SETTINGS_ADVANCED_RENAME_ENABLE: string
|
||||
SETTINGS_ADVANCED_RENAME_FORMAT: string
|
||||
SETTINGS_OPEN_UPLOAD_TIPS: string
|
||||
SETTINGS_OPEN_UPLOAD_RESULT_TIPS: string
|
||||
SETTINGS_MINI_WINDOW_ON_TOP: string
|
||||
SETTINGS_AUTO_COPY_URL_AFTER_UPLOAD: string
|
||||
SETTINGS_TIPS_PLACEHOLDER_URL: string
|
||||
|
||||
Vendored
+3
@@ -5,7 +5,10 @@ interface ISettingForm {
|
||||
rename: boolean
|
||||
autoRename: boolean
|
||||
uploadNotification: boolean
|
||||
uploadResultNotification: boolean
|
||||
miniWindowOntop: boolean
|
||||
autoCloseMiniWindow: boolean
|
||||
autoCloseMainWindow: boolean
|
||||
logLevel: string[]
|
||||
autoCopyUrl: boolean
|
||||
checkBetaUpdate: boolean
|
||||
|
||||
@@ -6732,10 +6732,10 @@ electron@^22.0.2:
|
||||
"@types/node" "^16.11.26"
|
||||
extract-zip "^2.0.1"
|
||||
|
||||
element-plus@^2.3.7:
|
||||
version "2.3.7"
|
||||
resolved "https://registry.npmjs.org/element-plus/-/element-plus-2.3.7.tgz#544a127f0e65f51715e3b24ec3ebf545c46859cd"
|
||||
integrity sha512-h6TxclbaLUJxg/Bv5j/ZKsK+K5yadQliw5+R30HWyE69pXlqXTX24oYx+yw3pA4Dy+lqEDi5501FQ0CORk3OSA==
|
||||
element-plus@^2.3.8:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.npmjs.org/element-plus/-/element-plus-2.3.8.tgz#46032abe1a712abfb65932f146ee19281312a9cf"
|
||||
integrity sha512-yHQR0/tG2LvPkpGUt7Te/hPmP2XW/BytBNUbx+EFO54VnGCOE3upmQcVffNp1PLgwg9sthYDXontUWpnpmLPJw==
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.1"
|
||||
"@element-plus/icons-vue" "^2.0.6"
|
||||
@@ -11054,10 +11054,10 @@ performance-now@^2.1.0:
|
||||
resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||
integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
|
||||
|
||||
piclist@^0.7.4:
|
||||
version "0.7.4"
|
||||
resolved "https://registry.npmjs.org/piclist/-/piclist-0.7.4.tgz#125c9f337e2d7375ae0c5c17fafaf924134fd65f"
|
||||
integrity sha512-PxE6S93uWP7sQNyMi6R7ZEs57oOXgm/nD14Moi0k0dbAlvtm1kWdrc4CboW/6e7hPVgeqT7pGi0+y0SF8iTxOA==
|
||||
piclist@^0.7.6:
|
||||
version "0.7.6"
|
||||
resolved "https://registry.npmjs.org/piclist/-/piclist-0.7.6.tgz#93ac36f2f3fa067d014b4ff1e808bd6304fa29e3"
|
||||
integrity sha512-aLoVhvl8A/Ez2I3T3rmqQ5MCBw6txTQ+5H0zGvgybEpHGpuTHct9MBplfJVj2eIyqwbbcWT24t5bkvaByma2gw==
|
||||
dependencies:
|
||||
"@picgo/i18n" "^1.0.0"
|
||||
"@picgo/store" "^2.0.4"
|
||||
|
||||
Reference in New Issue
Block a user