diff --git a/src/assets/options.js b/src/assets/options.js
index 2713369..4ee7a2c 100644
--- a/src/assets/options.js
+++ b/src/assets/options.js
@@ -4,7 +4,7 @@
dbData = db ? db.data : {};
return dbData;
}
-
+
putDB = (code, pushData, id) => {
var db = utools.db.get(id);
if (db) {
@@ -18,39 +18,53 @@
utools.db.put({ _id: id, data: data });
}
}
-
- // 导入
- let importCommand = file => {
- var options = file ? { type: 'file', argvs: file } : { type: 'dialog', argvs: { filters: [{ name: 'json', extensions: ['json'] }] } }
- options.readfile = true
- var fileinfo = getFileInfo(options)
- if (!fileinfo) return false
+
+ let isJsonQc = obj => {
+ var keys = ["features", "program", "cmd", "output"]
+ if (keys.filter(x => typeof obj[x] == 'undefined').length) return false
+ return true
+ }
+
+ // 判断是否为可导入的快捷命令
+ let quickCommandParser = json => {
try {
- var pushData = JSON.parse(fileinfo.data);
+ var qc = JSON.parse(json)
} catch (error) {
- quickcommand.showMessageBox("格式错误", "error")
return false
}
+ console.log(qc);
+ if (isJsonQc(qc)) return { single: true, qc: qc }
+ else if (!Object.values(qc).filter(q => !isJsonQc(q)).length) return { single: false, qc: qc }
+ else return false
+ }
+
+ // 导入
+ importCommand = file => {
+ var pushData, clipboardText = clipboardReadText()
+ if (!file) pushData = quickCommandParser(clipboardText)
+ if (!pushData) {
+ var options = file ? { type: 'file', argvs: file } : { type: 'dialog', argvs: { filters: [{ name: 'json', extensions: ['json'] }] } }
+ options.readfile = true
+ var fileinfo = getFileInfo(options)
+ if (!fileinfo) return
+ pushData = quickCommandParser(fileinfo.data)
+ if (!pushData) return false
+ }
// 单个命令导入
- if (typeof(pushData.features) == 'object') {
- var code = pushData.features.code;
- putDB(code, pushData, 'customFts');
- return true
+ if (pushData.single) {
+ var code = pushData.qc.features.code;
+ putDB(code, pushData.qc, 'customFts');
// 多个命令导入
} else {
- if (typeof(Object.values(pushData)[0].features) == 'object') {
- for (var code of Object.keys(pushData)) {
- putDB(code, pushData[code], 'customFts');
- }
- return true
+ for (var code of Object.keys(pushData.qc)) {
+ putDB(code, pushData.qc[code], 'customFts');
}
}
- quickcommand.showMessageBox("格式错误", "error")
- return false
+ return true
}
-
+
let exportAll = () => {
- json = utools.db.get('customFts').data,
+ let jsonQc = utools.db.get('customFts').data,
options = {
title: '选择保存位置',
defaultPath: 'quickCommand',
@@ -58,9 +72,10 @@
{ name: 'json', extensions: ['json'] },
]
};
- window.saveFile(options, JSON.stringify(json));
+ Object.keys(jsonQc).filter(k => jsonQc[k].tags && jsonQc[k].tags.includes('默认')).map(k => delete jsonQc[k])
+ window.saveFile(options, JSON.stringify(jsonQc));
}
-
+
let clearAll = () => {
Swal.fire({
text: '将会清空所有命令,请确认!',
@@ -78,7 +93,7 @@
}
})
}
-
+
programs = {
shell: {
bin: 'bash',
@@ -165,7 +180,7 @@
color: '#438eff'
}
}
-
+
showOptions = (tag = "默认") => {
$("#options").empty().fadeIn();
var currentFts = utools.getFeatures(),
@@ -187,28 +202,28 @@
}
var cmds = '', rules = features.cmds[0].match;
if (features.cmds[0].type == 'regex') {
- if (rules.length > 15) rules = rules.slice(0, 15) + '...';
+ if (rules.length > 14) rules = rules.slice(0, 14) + '...';
cmds = `
正则
${rules}
`;
} else if (features.cmds[0].type == 'window') {
cmds += `窗口
`
if (!rules) {
cmds += `所有窗口`
} else if (rules.title || rules.class) {
- cmds += `${JSON.stringify(rules).slice(0, 15) + '...'}`;
+ cmds += `${JSON.stringify(rules).slice(0, 14) + '...'}`;
} else if (rules.app) {
rules = rules.app.join(",")
- if(rules.length > 15) rules = rules.slice(0, 15) + '...';
+ if(rules.length > 14) rules = rules.slice(0, 14) + '...';
rules.split(',').forEach(r => {
cmds += `${r}`;
- });
- }
+ });
+ }
cmds += `
`
} else if (features.cmds[0].type == 'files') {
- if (rules.length > 15) rules = rules.slice(0, 15) + '...';
+ if (rules.length > 14) rules = rules.slice(0, 14) + '...';
cmds = `文件
${rules}
`;
} else {
rules = features.cmds.join(",")
- if(rules.length > 15) rules = rules.slice(0, 15) + '...';
+ if(rules.length > 14) rules = rules.slice(0, 14) + '...';
cmds += `关键字
`
rules.split(',').forEach(r => {
cmds += `
${r}`;
@@ -229,11 +244,11 @@
 |
${features.explain}
-
+
●
${fts.program} | ${platformIcons.join('')}
-
+
|
${cmds} |
@@ -245,8 +260,7 @@
|
-
- ${tag == "默认" ? "" : ` `}
+ ${(tag == "默认" && !fofoCommon.isDev()) ? "" : ` `}
| `
})
featureList += `
`
@@ -257,17 +271,18 @@
`
var footer = `
`
$("#options").append(sidebar + featureList + footer)
}
-
+
let showCustomize = (readonly = false) => {
$("#customize").remove();
let options = ``
@@ -386,7 +401,7 @@
if (width) options.width = width
return options
}
-
+
let createTypeSelect2 = (width = false) => {
var data = [
{
@@ -412,14 +427,14 @@
]
$('#type').select2(getSelect2Option(data, width));
}
-
+
let createProgramSelect2 = (width, dropdownAutoWidth = false) => {
var programStyled = p => `
${p}`
var data = [{ id: "quickcommand", text: 'quickcommand', html: programStyled('quickcommand') }]
data = data.concat(Object.keys(programs).map(x => { return { id: x, text: x, html: programStyled(x) } }))
$('#program').select2(getSelect2Option(data, width, dropdownAutoWidth));
}
-
+
let createEditor = () => {
window.editor = CodeMirror.fromTextArea(document.getElementById("cmd"), {
lineNumbers: true,
@@ -452,15 +467,15 @@
"Shift-Alt-Down": "duplicateLine"
}
});
-
+
window.editor.on("change", showHint);
window.editor.setOption("mode", 'javascript');
}
-
+
showHint = () => {
editor.showHint({ completeSingle: false });
}
-
+
let beautifyCode = () => {
if ($("#customize").is(":parent")) {
var cmd = window.editor.getValue()
@@ -480,8 +495,8 @@
}
}
}
-
-
+
+
// 获取特殊变量
let getSpecialVars = () => {
var specialVars = []
@@ -491,7 +506,7 @@
})
localStorage['specialVars'] = specialVars
}
-
+
let typeCheck = () => {
var type = $("#type").val();
switch (type) {
@@ -523,19 +538,19 @@
}
getSpecialVars()
}
-
+
let clearAllFeatures = () => {
for (var fts of utools.getFeatures()) {
utools.removeFeature(fts.code)
}
}
-
+
let hasCustomIcon = () => {
var src = $("#icon").attr('src');
var iconame = $("#iconame").val();
return /data:image\/png;base64,/.test(src) || iconame
}
-
+
let programCheck = () => {
let mode = $('#program').val();
$('.customscript').hide();
@@ -573,8 +588,8 @@
}
window.editor.setOption("mode", mode);
}
-
- // 合规性校验
+
+ // 合规性校验
let cmdCheck = (type, cmd) => {
var blacklist
switch (type) {
@@ -601,7 +616,7 @@
return true
}
}
-
+
// 开关
$("#options").on('change', 'input[type=checkbox]', function () {
var customFts = getDB('customFts'),
@@ -610,16 +625,21 @@
utools.setFeature(customFts[code].features);
}
});
-
+
// 底部功能按钮
$("#options").on('click', '.footBtn', function () {
switch ($(this).attr('id')) {
- case 'viewHelps': utools.createBrowserWindow('./helps/help.html');
+ case 'viewHelps': utools.createBrowserWindow('./helps/HELP.html');
+ break;
+ case 'getShares': getSharedQCFromYuQue();
break;
case 'add': showCustomize();
$("#customize").animate({ top: '0px' });
break;
- case 'import': importCommand() && showOptions();
+ case 'import':
+ var success = importCommand()
+ if (success) showOptions() || quickcommand.showMessageBox("导入成功")
+ else if (success == false) quickcommand.showMessageBox("导入失败,格式错误", "error")
break;
case 'enableAll': $(".checked-switch:not(:checked)").click();
break;
@@ -631,14 +651,18 @@
break;
}
})
-
- // 编辑
- $("#options").on('click', '.editBtn', function () {
- var readonly = false,
- code = $(this).parents('tr').attr('id'),
- data = utools.db.get("customFts").data[code],
- cmds = data.features.cmds[0],
- platform = data.features.platform;
+
+ let editCurrentCommand = data => {
+ let code = data.features.code
+ let cmds = data.features.cmds[0]
+ let platform = data.features.platform
+ let readonly = false
+ let extraInfo = {
+ authorName: data.authorName,
+ authorId: data.authorId,
+ docId: data.docId
+ }
+ $('#options').data('extraInfo', extraInfo)
if (data.tags && data.tags.includes("默认")) readonly = true
showCustomize(readonly);
data.tags && $('#tags').val(data.tags).trigger('change')
@@ -674,8 +698,15 @@
$("#customize").animate({ top: '0px' }, () => {
window.editor.replaceRange(data.cmd.slice(2000), {line: Infinity});
});
+ }
+
+ // 编辑
+ $("#options").on('click', '.editBtn', function () {
+ let code = $(this).parents('tr').attr('id')
+ let data = utools.db.get("customFts").data[code]
+ editCurrentCommand(data)
})
-
+
// 添加模拟按键
$("#options").on('click', '#addKey', function () {
$("#addKey").text("▶ 录制中").addClass('record')
@@ -689,12 +720,12 @@
$("#addKey").text("﹢按键").removeClass('record')
});
})
-
+
// quickCommand的帮助
$("#options").on('click', '#showHelp', function () {
utools.createBrowserWindow('./helps/quickcommand.html')
})
-
+
// 添加动作
$("#options").on('click', '#addAction', function () {
var html = `
@@ -718,7 +749,7 @@
title: "预设动作",
onBeforeOpen: () => {
$('#actionType').change(function () {
- $('#actionArgs').attr('placeholder', $(this).find(`[value=${$(this).val().replace('.', '\\.')}]`).attr('args'))
+ $('#actionArgs').attr('placeholder', $(this).find(`[value=${$(this).val().replace('.', '\\.')}]`).attr('args'))
})
},
html: html,
@@ -733,21 +764,140 @@
}
})
})
-
+
+ let setYuQueToken = async () => {
+ let yuQueToken = await quickcommand.showInputBox(["请输入 Token"])
+ if (!yuQueToken) return
+ yuQueToken = yuQueToken[0]
+ yuQueClient.defaults.headers['X-Auth-Token'] = yuQueToken
+ try {
+ let res = await yuQueClient('user')
+ let authorId = res.data.data.account_id
+ let authorName = res.data.data.name
+ putDB('yuQueToken', yuQueToken, 'extraInfo')
+ putDB('authorName', authorName, 'extraInfo')
+ putDB('authorId', authorId, 'extraInfo')
+ quickcommand.showMessageBox("设置成功~")
+ } catch (e) {
+ quickcommand.showMessageBox('Token 校验失败', "error")
+ }
+ }
+
+ let createShareMenu = jsonQc => {
+ let menu = ['复制到剪贴板', '导出到文件', '', '设置 Token']
+ let extraInfo = getDB('extraInfo')
+ if (jsonQc.authorId) {
+ if (jsonQc.authorId == extraInfo.authorId) menu[2] = '更新分享'
+ else menu[2] = '分享自:' + jsonQc.authorName
+ } else {
+ if (extraInfo.yuQueToken) menu[2] = '分享命令'
+ else menu[2] = '☛ 分享命令'
+ }
+ return menu
+ }
+
// 导出
- $("#options").on('click', '.exportBtn', function () {
- var code = $(this).parents('tr').attr('id'),
- json = getDB('customFts')[code],
- options = {
- title: '选择保存位置',
- defaultPath: `${json.features.explain}.json`,
- filters: [
- { name: 'json', extensions: ['json'] },
- ]
- };
- window.saveFile(options, JSON.stringify(json));
+ $("#options").on('click', '.exportBtn', async function () {
+ var code = $(this).parents('tr').attr('id')
+ var jsonQc = getDB('customFts')[code]
+ var stringifyQc = JSON.stringify(jsonQc, null, 4)
+ var choise = await quickcommand.showButtonBox(createShareMenu(jsonQc))
+ switch (choise.text) {
+ case '复制到剪贴板':
+ utools.copyText(stringifyQc) && quickcommand.showMessageBox('已复制到剪贴板')
+ break;
+ case '导出到文件':
+ window.saveFile({
+ title: '选择保存位置',
+ defaultPath: `${jsonQc.features.explain}.json`,
+ filters: [ { name: 'json', extensions: ['json'] }, ]
+ }, stringifyQc)
+ break;
+ case '分享命令':
+ var result = await shareQCToYuQue(jsonQc)
+ result && quickcommand.showMessageBox('分享成功')
+ break;
+ case '更新分享':
+ var result = await shareQCToYuQue(jsonQc, true)
+ result && quickcommand.showMessageBox('分享成功')
+ break;
+ case '☛ 分享命令':
+ utools.createBrowserWindow('./helps/HELP.html?#分享命令')
+ break;
+ case '设置 Token':
+ await setYuQueToken()
+ break;
+ }
})
-
+
+ // 一键分享到语雀
+ let shareQCToYuQue = async (jsonQc, update = false) => {
+ let extraInfo = getDB('extraInfo')
+ if (!extraInfo.yuQueToken) return quickcommand.showMessageBox("请先设置 Token,点击底部「查看帮助」可查看 Token 设置方法", "error")
+ jsonQc.authorId = extraInfo.authorId
+ jsonQc.authorName = extraInfo.authorName
+ let stringifyQc = JSON.stringify(jsonQc, null, 4)
+ if (stringifyQc.length > 5000000) return quickcommand.showMessageBox('命令大小超过5M无法分享,请检查图标或脚本内容是否过大', "error")
+ let platform = jsonQc.platform ? platform.join(" ") : "win32 darwin linux"
+ let type = jsonQc.features.cmds[0].type
+ let tags = jsonQc.tags ? jsonQc.tags.join(' ') : ""
+ type || (type = 'keywords')
+ let parameters = {
+ title: jsonQc.features.explain,
+ slug: jsonQc.features.code,
+ public: 1,
+ format: "markdown",
+ body: '```json\n' + stringifyQc + '\n```',
+ custom_description: `作者:${jsonQc.authorName} | 环境:${jsonQc.program} | 匹配:${type} | 平台:${platform} | 标签:${tags}`
+ }
+ yuQueClient.defaults.headers['X-Auth-Token'] = extraInfo.yuQueToken
+ let res
+ try {
+ if (update) res = await yuQueClient.put('repos/fofolee/em2rng/docs/' + jsonQc.docId, parameters)
+ else res = await yuQueClient.post('repos/fofolee/em2rng/docs', parameters)
+ if (res.data.data) {
+ jsonQc.docId = res.data.data.id
+ putDB(jsonQc.features.code, jsonQc, 'customFts');
+ return jsonQc
+ } else {
+ return quickcommand.showMessageBox("分享失败,不知道为啥", "error")
+ }
+ } catch (error) {
+ return quickcommand.showMessageBox(error, "error")
+ }
+ }
+
+ getSharedQCFromYuQue = async () => {
+ $('#options').hide()
+ let extraInfo = getDB('extraInfo')
+ if (extraInfo.yuQueToken) yuQueClient.defaults.headers['X-Auth-Token'] = extraInfo.yuQueToken
+ let res = await yuQueClient('repos/fofolee/em2rng/docs')
+ let docs = res.data.data.map(d => {
+ return {
+ title: d.title,
+ description: d.custom_description,
+ slug: d.slug,
+ icon: d.last_editor.avatar_url
+ }
+ })
+ let choise = await quickcommand.showSelectList(docs, { optionType: 'json' })
+ let doc = await yuQueClient(`repos/fofolee/em2rng/docs/${choise.slug}?raw=1`)
+ let body = doc.data.data.body
+ let stringifyQc = body.match(/```json([\s\S]*)```/)[1]
+ let qc = JSON.parse(stringifyQc)
+ $('#options').show()
+ qc.docId = doc.data.data.id
+ editCurrentCommand(qc)
+ utools.setExpendHeight(600)
+ }
+
+ $("#out").on('click', '#importSharedQc', function () {
+ importCommand() ? quickcommand.showMessageBox("导入成功") : quickcommand.showMessageBox("导入失败,格式错误", "error")
+ showOptions()
+ utools.setExpendHeight(600)
+ $('#out').empty()
+ })
+
// 删除
$("#options").on('click', '.delBtn', function () {
Swal.fire({
@@ -772,7 +922,7 @@
}
})
})
-
+
// 选择图标
$("#options").on('click', '#icon', function () {
var options = {
@@ -785,10 +935,10 @@
var file = getFileInfo({ type: 'dialog', argvs: options, readfile: false })
if (file) {
$("#iconame").val(file.name);
- $("#icon").attr('src', file.path);
+ $("#icon").attr('src', file.path);
}
})
-
+
let SaveCurrentCommand = async () => {
if ($('#tags').is(":parent")) {
var type = $('#type').val(),
@@ -839,7 +989,7 @@
"label": desc,
"type": "window"
}
- if (rule) {
+ if (rule) {
try {
cmdOfWin.match = JSON.parse(rule)
} catch (error) {
@@ -870,7 +1020,8 @@
var platform = []
$('.platform').not('.disabled').each(function() { platform.push($(this).attr('id')) })
// 添加特性
- pushData = {
+ var extraInfo = $('#options').data('extraInfo')
+ var pushData = {
features: {
"code": code,
"explain": desc,
@@ -882,7 +1033,10 @@
cmd: cmd,
output: output,
hasSubInput: hasSubInput,
- scptarg: scptarg
+ scptarg: scptarg,
+ authorId: extraInfo.authorId,
+ authorName: extraInfo.authorName,
+ docId: extraInfo.docId
}
if (tags) pushData.tags = tags
if (program == 'custom') {
@@ -909,11 +1063,13 @@
showOptions(redirectTag);
location.href = '#' + code
$("#customize").empty()
- $(`#${code} .checked-switch`).is(':checked') || $(`#${code} .checked-switch`).click()
+ let checkSwitch = $(`#${code} .checked-switch`)
+ checkSwitch.click()
+ checkSwitch.is(':checked') || checkSwitch.click()
});
}
}
-
+
// 显示运行结果
let showRunResult = (content, raw, success) => {
var options, position, showClass, hideClass, maxlength = 100000
@@ -953,7 +1109,7 @@
success ? swalOneByOne(options) : Swal.fire(options)
}
}
-
+
let runCurrentCommand = async () => {
if ($("#customize").is(":parent")) {
var cmd = window.editor.getValue()
@@ -1012,17 +1168,17 @@
}
}
}
-
+
let killCurrentCommand = () => {
}
-
+
let quitCurrentCommand = () => {
if ($("#customize").is(":parent") && $("#featureList").is(":parent")) {
$("#customize").animate({ top: '100%' });
$("#customize").empty()
}
}
-
+
let highlightIfKnown = ext => {
var lang = Object.keys(programs).filter(p => programs[p].ext == ext)
if (lang.length) {
@@ -1031,7 +1187,7 @@
return lang[0]
}
}
-
+
showCodeEditor = file => {
var customWindow = `
@@ -1101,53 +1257,53 @@
}
}
}
-
+
// 切换TAGS
$("#options").on('click', '.sidebar li', function () {
showOptions($(this).text());
})
-
+
// 运行
$("#options").on('click', '.cmdBtn.run, #runCode', function () {
runCurrentCommand()
})
-
+
// 格式化
$("#options").on('click', '#beautifyCode', function () {
beautifyCode()
})
-
+
// 取消
$("#options").on('click', '.cmdBtn.cancel', function () {
quitCurrentCommand()
})
-
+
// 保存
$("#options").on('click', '.cmdBtn.save', function () {
SaveCurrentCommand()
})
-
+
// 语言选项改变时
$("#options").on('change', '#program', function () {
programCheck()
})
-
+
// 变量选项改变时
$("#options").on('change', '#vars', function () {
$("#vars").css({'color':'black'})
window.editor.replaceSelection($("#vars").val());
})
-
+
$("#options").on('change', '#action', function () {
$("#action").css({ 'color': 'black' })
})
-
+
// 方式选项改变时
$("#options").on('change', '#type', function () {
// resetVars();
typeCheck();
})
-
+
$("#options").on('change', '#customext', function () {
highlightIfKnown($('#customext').val())
})
@@ -1159,19 +1315,19 @@
} else {
if ($('.disabled').length == 2) quickcommand.showMessageBox('至少保留一个平台', 'error')
else $(this).addClass('disabled')
- }
+ }
})
-
+
Mousetrap.bind('ctrl+s', () => {
SaveCurrentCommand()
return false
});
-
+
Mousetrap.bind('ctrl+q', () => {
quitCurrentCommand()
return false
});
-
+
Mousetrap.bind('ctrl+b', () => {
runCurrentCommand()
return false
@@ -1181,4 +1337,4 @@
showSearchBox()
return false
});
-}()
\ No newline at end of file
+}()
diff --git a/src/preload.js b/src/preload.js
index 980de90..dd3bc9a 100644
--- a/src/preload.js
+++ b/src/preload.js
@@ -85,7 +85,7 @@ quickcommand = {
showInputBox: function (placeHolders) {
return new Promise((reslove, reject) => {
placeHolders || (placeHolders = [""])
- if (!(placeHolders instanceof Array)) reject("参数类型错误:应为数组")
+ if (!(placeHolders instanceof Array)) return reject("参数类型错误:应为数组")
utools.setExpendHeight(600)
var html = ""
var inputBoxNumbers = placeHolders.length
@@ -96,12 +96,15 @@ quickcommand = {
var options = {
onBeforeOpen: () => {
document.getElementById(`inputBox0`).focus()
- $(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20)
+ $('.swal2-content').keydown(function (e) {
+ e.which == 13 && swal.clickConfirm()
+ })
+ $(".output").is(":parent") ? utools.setExpendHeight(600) : modWindowHeight($('.swal2-popup').outerHeight() + 20)
},
html: html,
focusConfirm: false,
showCancelButton: true,
- backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
+ backdrop: utools.isDarkColors() ? '#ffffff26' : '#bbbbbb80',
preConfirm: () => {
for (let i = 0; i < inputBoxNumbers; i++) {
result.push(document.getElementById(`inputBox${i}`).value)
@@ -116,7 +119,7 @@ quickcommand = {
// 显示选项按钮
showButtonBox: function (buttons) {
return new Promise((reslove, reject) => {
- if (!(buttons instanceof Array)) reject("参数类型错误:应为数组")
+ if (!(buttons instanceof Array)) return reject("参数类型错误:应为数组")
utools.setExpendHeight(600)
var html = ``
var buttonBoxNumbers = buttons.length
@@ -132,7 +135,7 @@ quickcommand = {
$(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20)
},
html: html,
- backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
+ backdrop: utools.isDarkColors() ? '#ffffff26' : '#bbbbbb80',
showConfirmButton: false
}
swalOneByOne(options)
@@ -146,21 +149,19 @@ quickcommand = {
title: title,
toast: true,
position: 'top',
- // timer: time,
+ timer: time,
showConfirmButton: false,
- onOpen: toast => {
- // toast.addEventListener('mouseenter', Swal.stopTimer)
- // toast.addEventListener('mouseleave', Swal.resumeTimer)
- setTimeout(() => { Swal.clickConfirm() }, time);
- }
+ // onBeforeOpen: () => {
+ // setTimeout(() => { Swal.clickConfirm() }, time);
+ // }
}
- swalOneByOne(options)
+ swal.fire(options)
},
// 显示选项列表
showSelectList: function (selects, opt = {}) {
return new Promise((reslove, reject) => {
- if (!(selects instanceof Array)) reject("参数类型错误:应为数组")
+ if (!(selects instanceof Array)) return reject("参数类型错误:应为数组")
opt.optionType || (opt.optionType = 'plaintext')
typeof opt.placeholder == 'undefined' && (opt.placeholder = "搜索,支持拼音")
typeof opt.enableSearch == 'undefined' && (opt.enableSearch = true)
@@ -168,15 +169,16 @@ quickcommand = {
$("body").append(`
`)
let item, data = []
selects.forEach((s, i) => {
- item = {id: i}
+ item = {}
if (opt.optionType == 'json') {
item.text = ''
Object.keys(s).forEach(k => item[k] = s[k])
+ item.id = i
s.icon && (item.text += `
`)
s.title && (item.text += `
${s.title}
`)
s.description && (item.text += `
${s.description}
`)
} else {
- item.text = s
+ item = {id: i, text: s}
}
data.push(item)
})
@@ -296,7 +298,8 @@ quickcommand = {
var filebuffer = Buffer.from(res.data)
if (!filepath) reslove(filebuffer)
fs.writeFile(filepath, filebuffer, err => {
- err && reject(err) || reslove(filebuffer)
+ if (err) reject(err)
+ else reslove(filebuffer)
})
}).catch(err => {
reject(err)
@@ -306,7 +309,7 @@ quickcommand = {
}
swalOneByOne = options => {
- swal.getQueueStep() && Swal.insertQueueStep(options) || Swal.queue([options])
+ swal.getQueueStep() ? Swal.insertQueueStep(options) : Swal.queue([options])
}
let getSleepCodeByShell = ms => {
@@ -563,55 +566,13 @@ saveFile = (options, content) => {
})
}
-// 保存剪贴板
-// storeClip = () => {
-// var formats = electron.clipboard.availableFormats("clipboard");
-// if (formats.includes("text/plain")) {
-// return ['text', electron.clipboard.readText()]
-// }
-// if (formats.includes("image/png") || formats.includes("image/jpeg")) {
-// return ['image', electron.clipboard.readImage()]
-// }
-// var file;
-// if (utools.isWindows()) {
-// file = electron.clipboard.readBuffer('FileNameW').toString('ucs2').replace(/\\/g, '/');
-// file = file.replace(new RegExp(String.fromCharCode(0), 'g'), '');
-// } else {
-// file = electron.clipboard.read('public.file-url').replace('file://', '');
-// }
-// if (file) {
-// return ['file', file]
-// }
-// return []
-// }
-
-// 恢复剪贴板
-// restoreClip = historyData => {
-// if (historyData[0] == 'text') {
-// electron.clipboard.writeText(historyData[1]);
-// return
-// }
-// if (historyData[0] == 'image') {
-// electron.clipboard.writeImage(historyData[1]);
-// return
-// }
-// if (historyData[0] == 'file') {
-// utools.copyFile(historyData[1])
-// return
-// }
-// electron.clipboard.writeText('')
-// }
-
-// getSelectText = () => {
-// var historyData = storeClip();
-// electron.clipboard.writeText('');
-// quickcommand.simulateCopy();
-// var selectText = electron.clipboard.readText()
-// setTimeout(() => {
-// restoreClip(historyData)
-// }, 500);
-// return selectText
-// }
+yuQueClient = axios.create({
+ baseURL: 'https://www.yuque.com/api/v2/',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'X-Auth-Token': 'WNrd0Z4kfCZLFrGLVAaas93DZ7sbG6PirKq7VxBL'
+ }
+});
getSelectFile = hwnd =>
new Promise((reslove, reject) => {
@@ -619,7 +580,7 @@ getSelectFile = hwnd =>
var cmd = `powershell.exe -NoProfile "(New-Object -COM 'Shell.Application').Windows() | Where-Object { $_.HWND -eq ${hwnd} } | Select-Object -Expand Document | select @{ n='SelectItems'; e={$_.SelectedItems()} } | select -Expand SelectItems | select -Expand Path "`;
child_process.exec(cmd, { encoding: "buffer" }, (err, stdout, stderr) => {
if (err) reject(stderr)
- reslove(iconv.decode(stdout, 'GBK').trim().replace(/\\/g, '/'));
+ else reslove(iconv.decode(stdout, 'GBK').trim().replace(/\\/g, '/'));
})
} else {
var cmd = `osascript -e 'tell application "Finder" to set selectedItems to selection as alias list
@@ -633,11 +594,15 @@ getSelectFile = hwnd =>
`
child_process.exec(cmd, (err, stdout, stderr) => {
if (err) reject(stderr)
- reslove(stdout.trim());
+ else reslove(stdout.trim());
});
}
})
+clipboardReadText = () => {
+ return electron.clipboard.readText()
+},
+
special = cmd => {
// 判断是否 windows 系统
if (cmd.includes('{{isWin}}')) {
@@ -659,7 +624,7 @@ special = cmd => {
// 获取剪切板的文本
if (cmd.includes('{{ClipText}}')) {
- let repl = electron.clipboard.readText();
+ let repl = clipboardReadText();
cmd = cmd.replace(/\{\{ClipText\}\}/mg, repl)
}