mirror of
https://github.com/ZiuChen/ClipboardManager.git
synced 2025-06-29 13:42:54 +08:00
fix: 针对大图片卡顿优化
This commit is contained in:
parent
d25d2536f8
commit
0b2cb4243d
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"pluginName": "剪贴板",
|
"pluginName": "剪贴板",
|
||||||
"description": "强大的剪贴板管理工具",
|
"description": "强大的剪贴板管理工具",
|
||||||
"author": "ZiuChen",
|
"author": "ZiuChen",
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
const { clipboard } = require('electron')
|
const { clipboard } = require('electron')
|
||||||
const nativeImage = require('electron').nativeImage
|
|
||||||
|
|
||||||
const homePath = utools.getPath('home')
|
const homePath = utools.getPath('home')
|
||||||
const userDataPath = utools.getPath('userData')
|
const userDataPath = utools.getPath('userData')
|
||||||
@ -18,6 +17,8 @@ const isMacOs = utools.isMacOs()
|
|||||||
const isWindows = utools.isWindows()
|
const isWindows = utools.isWindows()
|
||||||
const DBPath = `${isMacOs ? userDataPath : homePath}${isWindows ? '\\' : '/'}${dbName}`
|
const DBPath = `${isMacOs ? userDataPath : homePath}${isWindows ? '\\' : '/'}${dbName}`
|
||||||
|
|
||||||
|
let globalOverSize = false
|
||||||
|
|
||||||
class DB {
|
class DB {
|
||||||
constructor(path) {
|
constructor(path) {
|
||||||
const d = new Date()
|
const d = new Date()
|
||||||
@ -114,8 +115,8 @@ class DB {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// inu1255: pbpaste & watchClipboard
|
|
||||||
const pbpaste = () => {
|
const pbpaste = () => {
|
||||||
|
// file
|
||||||
const files = utools.getCopyedFiles() // null | Array
|
const files = utools.getCopyedFiles() // null | Array
|
||||||
if (files) {
|
if (files) {
|
||||||
return {
|
return {
|
||||||
@ -123,15 +124,20 @@ const pbpaste = () => {
|
|||||||
data: JSON.stringify(files)
|
data: JSON.stringify(files)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const image = clipboard.readImage()
|
// text
|
||||||
if (!image.isEmpty())
|
const text = clipboard.readText()
|
||||||
|
if (text.trim()) return { type: 'text', data: text }
|
||||||
|
// image
|
||||||
|
const image = clipboard.readImage() // 大图卡顿来源
|
||||||
|
if (!image.isEmpty()) {
|
||||||
|
const data = image.toDataURL()
|
||||||
|
globalOverSize = data.length > 500000
|
||||||
return {
|
return {
|
||||||
type: 'image',
|
type: 'image',
|
||||||
size: `${image.getSize().width}x${image.getSize().height}`,
|
size: `${image.getSize().width}x${image.getSize().height}`,
|
||||||
data: image.toDataURL()
|
data: data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const text = clipboard.readText()
|
|
||||||
if (text.trim()) return { type: 'text', data: text }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const watchClipboard = (db, fn) => {
|
const watchClipboard = (db, fn) => {
|
||||||
@ -150,38 +156,6 @@ const watchClipboard = (db, fn) => {
|
|||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
const copy = (item) => {
|
|
||||||
switch (item.type) {
|
|
||||||
case 'text':
|
|
||||||
clipboard.writeText(item.data)
|
|
||||||
break
|
|
||||||
case 'image':
|
|
||||||
const nImg = nativeImage.createFromDataURL(item.data)
|
|
||||||
clipboard.writeImage(nImg)
|
|
||||||
break
|
|
||||||
case 'file':
|
|
||||||
const paths = JSON.parse(item.data).map((file) => file.path)
|
|
||||||
utools.copyFile(paths)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
utools.outPlugin()
|
|
||||||
utools.hideMainWindow()
|
|
||||||
}
|
|
||||||
|
|
||||||
const paste = () => {
|
|
||||||
if (utools.isMacOs()) {
|
|
||||||
utools.simulateKeyboardTap('v', 'command')
|
|
||||||
} else {
|
|
||||||
utools.simulateKeyboardTap('v', 'ctrl')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const focus = () => document.querySelector('.clip-search input')?.focus()
|
|
||||||
|
|
||||||
const toTop = () => (document.scrollingElement.scrollTop = 0)
|
|
||||||
|
|
||||||
const resetNav = () => document.querySelectorAll('.clip-switch-item')[0]?.click()
|
|
||||||
|
|
||||||
const db = new DB(DBPath)
|
const db = new DB(DBPath)
|
||||||
db.init()
|
db.init()
|
||||||
|
|
||||||
@ -198,7 +172,38 @@ watchClipboard(db, (item) => {
|
|||||||
db.addItem(item)
|
db.addItem(item)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const copy = (item) => {
|
||||||
|
switch (item.type) {
|
||||||
|
case 'text':
|
||||||
|
clipboard.writeText(item.data)
|
||||||
|
break
|
||||||
|
case 'image':
|
||||||
|
utools.copyImage(item.data)
|
||||||
|
break
|
||||||
|
case 'file':
|
||||||
|
const paths = JSON.parse(item.data).map((file) => file.path)
|
||||||
|
utools.copyFile(paths)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
utools.outPlugin()
|
||||||
|
utools.hideMainWindow()
|
||||||
|
}
|
||||||
|
|
||||||
|
const paste = () => {
|
||||||
|
if (utools.isMacOs()) utools.simulateKeyboardTap('v', 'command')
|
||||||
|
else utools.simulateKeyboardTap('v', 'ctrl')
|
||||||
|
}
|
||||||
|
|
||||||
|
const focus = () => document.querySelector('.clip-search input')?.focus()
|
||||||
|
const toTop = () => (document.scrollingElement.scrollTop = 0)
|
||||||
|
const resetNav = () => document.querySelectorAll('.clip-switch-item')[0]?.click()
|
||||||
|
|
||||||
utools.onPluginEnter(() => {
|
utools.onPluginEnter(() => {
|
||||||
|
if (globalOverSize) {
|
||||||
|
// 超大图片 向剪贴板写入文本 防止反复 readImage() 插件运行超时退出
|
||||||
|
utools.copyText('ImageOverSized')
|
||||||
|
globalOverSize = false
|
||||||
|
}
|
||||||
focus()
|
focus()
|
||||||
toTop()
|
toTop()
|
||||||
resetNav()
|
resetNav()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user