mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-02-02 11:08:13 -05:00
✨ Feature: add clipbord listening menu for mini page
This commit is contained in:
parent
b20c6d7a85
commit
04d67058e5
@ -14,13 +14,17 @@ import picgoCoreIPC from '~/main/events/picgoCoreIPC'
|
|||||||
import { PicGo as PicGoCore } from 'piclist'
|
import { PicGo as PicGoCore } from 'piclist'
|
||||||
import { T } from '~/main/i18n'
|
import { T } from '~/main/i18n'
|
||||||
import { changeCurrentUploader } from '~/main/utils/handleUploaderConfig'
|
import { changeCurrentUploader } from '~/main/utils/handleUploaderConfig'
|
||||||
|
import db from '~/main/apis/core/datastore'
|
||||||
|
import clipboardListener from 'clipboard-event'
|
||||||
|
import clipboardPoll from '~/main/utils/clipboardPoll'
|
||||||
interface GuiMenuItem {
|
interface GuiMenuItem {
|
||||||
label: string
|
label: string
|
||||||
handle: (arg0: PicGoCore, arg1: GuiApi) => Promise<void>
|
handle: (arg0: PicGoCore, arg1: GuiApi) => Promise<void>
|
||||||
}
|
}
|
||||||
|
|
||||||
const buildMiniPageMenu = () => {
|
const buildMiniPageMenu = () => {
|
||||||
|
const isListeningClipboard = db.get('settings.isListeningClipboard') || false
|
||||||
|
const ClipboardWatcher = process.platform === 'win32' ? clipboardListener : clipboardPoll
|
||||||
const submenu = buildPicBedListMenu()
|
const submenu = buildPicBedListMenu()
|
||||||
const template = [
|
const template = [
|
||||||
{
|
{
|
||||||
@ -49,6 +53,29 @@ const buildMiniPageMenu = () => {
|
|||||||
BrowserWindow.getFocusedWindow()!.hide()
|
BrowserWindow.getFocusedWindow()!.hide()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: T('START_WATCH_CLIPBOARD'),
|
||||||
|
click () {
|
||||||
|
db.set('settings.isListeningClipboard', true)
|
||||||
|
ClipboardWatcher.startListening()
|
||||||
|
ClipboardWatcher.on('change', () => {
|
||||||
|
picgo.log.info('clipboard changed')
|
||||||
|
uploadClipboardFiles()
|
||||||
|
})
|
||||||
|
buildMiniPageMenu()
|
||||||
|
},
|
||||||
|
enabled: !isListeningClipboard
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: T('STOP_WATCH_CLIPBOARD'),
|
||||||
|
click () {
|
||||||
|
db.set('settings.isListeningClipboard', false)
|
||||||
|
ClipboardWatcher.stopListening()
|
||||||
|
ClipboardWatcher.removeAllListeners()
|
||||||
|
buildMiniPageMenu()
|
||||||
|
},
|
||||||
|
enabled: isListeningClipboard
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: T('RELOAD_APP'),
|
label: T('RELOAD_APP'),
|
||||||
click () {
|
click () {
|
||||||
|
@ -70,7 +70,6 @@ import { IResult } from '@picgo/store/dist/types'
|
|||||||
import { OPEN_WINDOW } from '#/events/constants'
|
import { OPEN_WINDOW } from '#/events/constants'
|
||||||
import { IPasteStyle, IWindowList } from '#/types/enum'
|
import { IPasteStyle, IWindowList } from '#/types/enum'
|
||||||
import { getConfig, sendToMain } from '@/utils/dataSender'
|
import { getConfig, sendToMain } from '@/utils/dataSender'
|
||||||
import { formatCustomLink } from '~/main/utils/pasteTemplate'
|
|
||||||
import { handleUrlEncode } from '#/utils/common'
|
import { handleUrlEncode } from '#/utils/common'
|
||||||
|
|
||||||
const files = ref<IResult<ImgInfo>[]>([])
|
const files = ref<IResult<ImgInfo>[]>([])
|
||||||
@ -92,6 +91,25 @@ async function getData () {
|
|||||||
files.value = (await $$db.get<ImgInfo>({ orderBy: 'desc', limit: 5 })).data
|
files.value = (await $$db.get<ImgInfo>({ orderBy: 'desc', limit: 5 })).data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const formatCustomLink = (customLink: string, item: ImgInfo) => {
|
||||||
|
const fileName = item.fileName!.replace(new RegExp(`\\${item.extname}$`), '')
|
||||||
|
const url = item.url || item.imgUrl
|
||||||
|
const extName = item.extname
|
||||||
|
const formatObj = {
|
||||||
|
url,
|
||||||
|
fileName,
|
||||||
|
extName
|
||||||
|
}
|
||||||
|
const keys = Object.keys(formatObj) as ['url', 'fileName', 'extName']
|
||||||
|
keys.forEach(item => {
|
||||||
|
if (customLink.indexOf(`$${item}`) !== -1) {
|
||||||
|
const reg = new RegExp(`\\$${item}`, 'g')
|
||||||
|
customLink = customLink.replace(reg, formatObj[item])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return customLink
|
||||||
|
}
|
||||||
|
|
||||||
async function copyTheLink (item: ImgInfo) {
|
async function copyTheLink (item: ImgInfo) {
|
||||||
notification.body = item.imgUrl!
|
notification.body = item.imgUrl!
|
||||||
const pasteStyle = await getConfig<IPasteStyle>('settings.pasteStyle') || IPasteStyle.MARKDOWN
|
const pasteStyle = await getConfig<IPasteStyle>('settings.pasteStyle') || IPasteStyle.MARKDOWN
|
||||||
|
Loading…
Reference in New Issue
Block a user