mirror of
https://github.com/rubickCenter/rubick
synced 2025-06-08 03:24:12 +08:00
🔨 cherry pick
This commit is contained in:
parent
310dba0aa3
commit
8d3d55bdd8
@ -1,7 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="installed">
|
<div class="installed">
|
||||||
<div v-if="!localPlugins.length">
|
<div v-if="!localPlugins.length">
|
||||||
<a-result status="404" title="暂无任何插件" sub-title="去插件市场选择安装合适的插件吧!" />
|
<a-result
|
||||||
|
status="404"
|
||||||
|
title="暂无任何插件"
|
||||||
|
sub-title="去插件市场选择安装合适的插件吧!"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="container" v-else>
|
<div class="container" v-else>
|
||||||
<div class="installed-list">
|
<div class="installed-list">
|
||||||
@ -44,8 +48,7 @@
|
|||||||
@click="deletePlugin(pluginDetail)"
|
@click="deletePlugin(pluginDetail)"
|
||||||
>
|
>
|
||||||
移除
|
移除
|
||||||
</a-button
|
</a-button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-tabs default-active-key="1">
|
<a-tabs default-active-key="1">
|
||||||
@ -61,6 +64,14 @@
|
|||||||
:key="cmd"
|
:key="cmd"
|
||||||
v-for="cmd in item.cmds"
|
v-for="cmd in item.cmds"
|
||||||
@close="removeFeature(cmd)"
|
@close="removeFeature(cmd)"
|
||||||
|
@click="
|
||||||
|
!cmd.label &&
|
||||||
|
openPlugin({
|
||||||
|
code: item.code,
|
||||||
|
cmd
|
||||||
|
})
|
||||||
|
"
|
||||||
|
:class="{ executable: !cmd.label }"
|
||||||
:color="!cmd.label && '#87d068'"
|
:color="!cmd.label && '#87d068'"
|
||||||
>
|
>
|
||||||
{{ cmd.label || cmd }}
|
{{ cmd.label || cmd }}
|
||||||
@ -74,7 +85,6 @@
|
|||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -83,6 +93,7 @@ import { useStore } from "vuex";
|
|||||||
import { computed, ref } from "vue";
|
import { computed, ref } from "vue";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import MarkdownIt from "markdown-it";
|
import MarkdownIt from "markdown-it";
|
||||||
|
const { ipcRenderer } = window.require("electron");
|
||||||
|
|
||||||
const { remote } = window.require("electron");
|
const { remote } = window.require("electron");
|
||||||
const fs = window.require("fs");
|
const fs = window.require("fs");
|
||||||
@ -94,11 +105,11 @@ const baseDir = path.join(appPath, "./rubick-plugins");
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
const localPlugins = computed(() =>
|
const localPlugins = computed(() =>
|
||||||
store.state.localPlugins.filter(
|
store.state.localPlugins.filter(
|
||||||
(plugin) => plugin.name !== "rubick-system-feature"
|
plugin => plugin.name !== "rubick-system-feature"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
const updateLocalPlugin = () => store.dispatch("updateLocalPlugin");
|
const updateLocalPlugin = () => store.dispatch("updateLocalPlugin");
|
||||||
const startUnDownload = (name) => store.dispatch("startUnDownload", name);
|
const startUnDownload = name => store.dispatch("startUnDownload", name);
|
||||||
|
|
||||||
const currentSelect = ref([0]);
|
const currentSelect = ref([0]);
|
||||||
|
|
||||||
@ -106,6 +117,23 @@ const pluginDetail = computed(() => {
|
|||||||
return localPlugins.value[currentSelect.value] || {};
|
return localPlugins.value[currentSelect.value] || {};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const openPlugin = ({ cmd, code }) => {
|
||||||
|
console.log(pluginDetail.value);
|
||||||
|
window.rubick.openPlugin(
|
||||||
|
JSON.parse(
|
||||||
|
JSON.stringify({
|
||||||
|
...pluginDetail.value,
|
||||||
|
cmd,
|
||||||
|
ext: {
|
||||||
|
code,
|
||||||
|
type: "text",
|
||||||
|
payload: null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const readme = computed(() => {
|
const readme = computed(() => {
|
||||||
if (!pluginDetail.value.name) return "";
|
if (!pluginDetail.value.name) return "";
|
||||||
const readmePath = path.resolve(
|
const readmePath = path.resolve(
|
||||||
@ -121,7 +149,7 @@ const readme = computed(() => {
|
|||||||
return "";
|
return "";
|
||||||
});
|
});
|
||||||
|
|
||||||
const deletePlugin = async (plugin) => {
|
const deletePlugin = async plugin => {
|
||||||
startUnDownload(plugin.name);
|
startUnDownload(plugin.name);
|
||||||
await window.market.deletePlugin(plugin);
|
await window.market.deletePlugin(plugin);
|
||||||
updateLocalPlugin();
|
updateLocalPlugin();
|
||||||
@ -198,6 +226,15 @@ const deletePlugin = async (plugin) => {
|
|||||||
.desc-item {
|
.desc-item {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
|
.ant-tag {
|
||||||
|
margin-top: 6px;
|
||||||
|
&.executable {
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.desc-title {
|
.desc-title {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -333,6 +333,10 @@ const { shortCut, common, local, global } = toRefs(state);
|
|||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
:deep(.ant-input) {
|
||||||
|
color: #6c9fe2;
|
||||||
|
font-weight: lighter;
|
||||||
|
}
|
||||||
&.ant-input-affix-wrapper {
|
&.ant-input-affix-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ const os = require("os");
|
|||||||
const ipcSendSync = (type, data) => {
|
const ipcSendSync = (type, data) => {
|
||||||
const returnValue = ipcRenderer.sendSync("msg-trigger", {
|
const returnValue = ipcRenderer.sendSync("msg-trigger", {
|
||||||
type,
|
type,
|
||||||
data,
|
data
|
||||||
});
|
});
|
||||||
if (returnValue instanceof Error) throw returnValue;
|
if (returnValue instanceof Error) throw returnValue;
|
||||||
return returnValue;
|
return returnValue;
|
||||||
@ -13,7 +13,7 @@ const ipcSendSync = (type, data) => {
|
|||||||
const ipcSend = (type, data) => {
|
const ipcSend = (type, data) => {
|
||||||
ipcRenderer.send("msg-trigger", {
|
ipcRenderer.send("msg-trigger", {
|
||||||
type,
|
type,
|
||||||
data,
|
data
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -30,7 +30,9 @@ window.rubick = {
|
|||||||
onPluginOut(cb) {
|
onPluginOut(cb) {
|
||||||
typeof cb === "function" && (window.rubick.hooks.onPluginOut = cb);
|
typeof cb === "function" && (window.rubick.hooks.onPluginOut = cb);
|
||||||
},
|
},
|
||||||
|
openPlugin(plugin) {
|
||||||
|
ipcSendSync("loadPlugin", plugin);
|
||||||
|
},
|
||||||
// 窗口交互
|
// 窗口交互
|
||||||
hideMainWindow() {
|
hideMainWindow() {
|
||||||
ipcSendSync("hideMainWindow");
|
ipcSendSync("hideMainWindow");
|
||||||
@ -49,7 +51,7 @@ window.rubick = {
|
|||||||
(window.rubick.hooks.onSubInputChange = onChange);
|
(window.rubick.hooks.onSubInputChange = onChange);
|
||||||
ipcSendSync("setSubInput", {
|
ipcSendSync("setSubInput", {
|
||||||
placeholder,
|
placeholder,
|
||||||
isFocus,
|
isFocus
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
removeSubInput() {
|
removeSubInput() {
|
||||||
@ -74,15 +76,15 @@ window.rubick = {
|
|||||||
copyText(text) {
|
copyText(text) {
|
||||||
return ipcSendSync("copyText", { text });
|
return ipcSendSync("copyText", { text });
|
||||||
},
|
},
|
||||||
copyFile: (file) => {
|
copyFile: file => {
|
||||||
return ipcSendSync("copyFile", { file })
|
return ipcSendSync("copyFile", { file });
|
||||||
},
|
},
|
||||||
db: {
|
db: {
|
||||||
put: (data) => ipcSendSync("dbPut", { data }),
|
put: data => ipcSendSync("dbPut", { data }),
|
||||||
get: (id) => ipcSendSync("dbGet", { id }),
|
get: id => ipcSendSync("dbGet", { id }),
|
||||||
remove: (doc) => ipcSendSync("dbRemove", { doc }),
|
remove: doc => ipcSendSync("dbRemove", { doc }),
|
||||||
bulkDocs: (docs) => ipcSendSync("dbBulkDocs", { docs }),
|
bulkDocs: docs => ipcSendSync("dbBulkDocs", { docs }),
|
||||||
allDocs: (key) => ipcSendSync("dbAllDocs", { key }),
|
allDocs: key => ipcSendSync("dbAllDocs", { key })
|
||||||
},
|
},
|
||||||
dbStorage: {
|
dbStorage: {
|
||||||
setItem: (key, value) => {
|
setItem: (key, value) => {
|
||||||
@ -93,14 +95,14 @@ window.rubick = {
|
|||||||
const res = ipcSendSync("dbPut", { data: target });
|
const res = ipcSendSync("dbPut", { data: target });
|
||||||
if (res.error) throw new Error(res.message);
|
if (res.error) throw new Error(res.message);
|
||||||
},
|
},
|
||||||
getItem: (key) => {
|
getItem: key => {
|
||||||
const res = ipcSendSync("dbGet", { id: key });
|
const res = ipcSendSync("dbGet", { id: key });
|
||||||
return res && "value" in res ? res.value : null;
|
return res && "value" in res ? res.value : null;
|
||||||
},
|
},
|
||||||
removeItem: (key) => {
|
removeItem: key => {
|
||||||
const res = ipcSendSync("dbGet", { id: key });
|
const res = ipcSendSync("dbGet", { id: key });
|
||||||
res && ipcSendSync("dbRemove", { doc: res });
|
res && ipcSendSync("dbRemove", { doc: res });
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
isDarkColors() {
|
isDarkColors() {
|
||||||
return false;
|
return false;
|
||||||
|
@ -3,9 +3,11 @@ import path from "path";
|
|||||||
import commonConst from "../../common/utils/commonConst";
|
import commonConst from "../../common/utils/commonConst";
|
||||||
import { PLUGIN_INSTALL_DIR as baseDir } from "@/common/constans/main";
|
import { PLUGIN_INSTALL_DIR as baseDir } from "@/common/constans/main";
|
||||||
|
|
||||||
const getRelativePath = (indexPath) => {
|
const getRelativePath = indexPath => {
|
||||||
return commonConst.windows() ? indexPath.replace("file://", "") : indexPath.replace("file:", "");
|
return commonConst.windows()
|
||||||
}
|
? indexPath.replace("file://", "")
|
||||||
|
: indexPath.replace("file:", "");
|
||||||
|
};
|
||||||
|
|
||||||
const getPreloadPath = (plugin, pluginIndexPath) => {
|
const getPreloadPath = (plugin, pluginIndexPath) => {
|
||||||
const { name, preload, tplPath, indexPath } = plugin;
|
const { name, preload, tplPath, indexPath } = plugin;
|
||||||
@ -54,8 +56,8 @@ export default () => {
|
|||||||
devTools: true,
|
devTools: true,
|
||||||
webviewTag: true,
|
webviewTag: true,
|
||||||
preload,
|
preload,
|
||||||
session: ses,
|
session: ses
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
window.setBrowserView(view);
|
window.setBrowserView(view);
|
||||||
view.webContents.loadURL(pluginIndexPath);
|
view.webContents.loadURL(pluginIndexPath);
|
||||||
@ -67,6 +69,25 @@ export default () => {
|
|||||||
executeHooks("PluginReady", plugin.ext);
|
executeHooks("PluginReady", plugin.ext);
|
||||||
window.webContents.executeJavaScript(`window.pluginLoaded()`);
|
window.webContents.executeJavaScript(`window.pluginLoaded()`);
|
||||||
});
|
});
|
||||||
|
// 修复请求跨域问题
|
||||||
|
view.webContents.session.webRequest.onBeforeSendHeaders(
|
||||||
|
(details, callback) => {
|
||||||
|
callback({
|
||||||
|
requestHeaders: { referer: "*", ...details.requestHeaders }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
view.webContents.session.webRequest.onHeadersReceived(
|
||||||
|
(details, callback) => {
|
||||||
|
callback({
|
||||||
|
responseHeaders: {
|
||||||
|
"Access-Control-Allow-Origin": ["*"],
|
||||||
|
...details.responseHeaders
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const removeView = (window: BrowserWindow) => {
|
const removeView = (window: BrowserWindow) => {
|
||||||
@ -95,6 +116,6 @@ export default () => {
|
|||||||
init,
|
init,
|
||||||
getView,
|
getView,
|
||||||
removeView,
|
removeView,
|
||||||
executeHooks,
|
executeHooks
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
Notification,
|
Notification,
|
||||||
nativeImage,
|
nativeImage,
|
||||||
clipboard,
|
clipboard,
|
||||||
shell,
|
shell
|
||||||
} from "electron";
|
} from "electron";
|
||||||
import { runner, detach } from "../browsers";
|
import { runner, detach } from "../browsers";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
@ -37,7 +37,15 @@ export const API: any = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
openPlugin({ plugin }, window) {
|
|
||||||
|
loadPlugin({ data: plugin }, window) {
|
||||||
|
window.webContents.executeJavaScript(
|
||||||
|
`window.loadPlugin(${JSON.stringify(plugin)})`
|
||||||
|
);
|
||||||
|
API.openPlugin({ data: plugin }, window);
|
||||||
|
},
|
||||||
|
|
||||||
|
openPlugin({ data: plugin }, window) {
|
||||||
if (API.currentPlugin && API.currentPlugin.name === plugin.name) return;
|
if (API.currentPlugin && API.currentPlugin.name === plugin.name) return;
|
||||||
window.setSize(window.getSize()[0], 60);
|
window.setSize(window.getSize()[0], 60);
|
||||||
runnerInstance.removeView(window);
|
runnerInstance.removeView(window);
|
||||||
@ -45,7 +53,7 @@ export const API: any = {
|
|||||||
API.currentPlugin = plugin;
|
API.currentPlugin = plugin;
|
||||||
window.webContents.executeJavaScript(
|
window.webContents.executeJavaScript(
|
||||||
`window.setCurrentPlugin(${JSON.stringify({
|
`window.setCurrentPlugin(${JSON.stringify({
|
||||||
currentPlugin: API.currentPlugin,
|
currentPlugin: API.currentPlugin
|
||||||
})})`
|
})})`
|
||||||
);
|
);
|
||||||
window.show();
|
window.show();
|
||||||
@ -86,7 +94,7 @@ export const API: any = {
|
|||||||
if (!originWindow) return;
|
if (!originWindow) return;
|
||||||
originWindow.webContents.executeJavaScript(
|
originWindow.webContents.executeJavaScript(
|
||||||
`window.setSubInput(${JSON.stringify({
|
`window.setSubInput(${JSON.stringify({
|
||||||
placeholder: data.placeholder,
|
placeholder: data.placeholder
|
||||||
})})`
|
})})`
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -106,7 +114,7 @@ export const API: any = {
|
|||||||
if (!originWindow) return;
|
if (!originWindow) return;
|
||||||
originWindow.webContents.executeJavaScript(
|
originWindow.webContents.executeJavaScript(
|
||||||
`window.setSubInputValue(${JSON.stringify({
|
`window.setSubInputValue(${JSON.stringify({
|
||||||
value: data.text,
|
value: data.text
|
||||||
})})`
|
})})`
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -121,7 +129,7 @@ export const API: any = {
|
|||||||
const notify = new Notification({
|
const notify = new Notification({
|
||||||
title: plugin.pluginName,
|
title: plugin.pluginName,
|
||||||
body,
|
body,
|
||||||
icon: plugin.logo,
|
icon: plugin.logo
|
||||||
});
|
});
|
||||||
notify.show();
|
notify.show();
|
||||||
},
|
},
|
||||||
@ -166,7 +174,7 @@ export const API: any = {
|
|||||||
...API.currentPlugin,
|
...API.currentPlugin,
|
||||||
features: (() => {
|
features: (() => {
|
||||||
let has = false;
|
let has = false;
|
||||||
API.currentPlugin.features.some((feature) => {
|
API.currentPlugin.features.some(feature => {
|
||||||
has = feature.code === data.feature.code;
|
has = feature.code === data.feature.code;
|
||||||
return has;
|
return has;
|
||||||
});
|
});
|
||||||
@ -174,11 +182,11 @@ export const API: any = {
|
|||||||
return [...API.currentPlugin.features, data.feature];
|
return [...API.currentPlugin.features, data.feature];
|
||||||
}
|
}
|
||||||
return API.currentPlugin.features;
|
return API.currentPlugin.features;
|
||||||
})(),
|
})()
|
||||||
};
|
};
|
||||||
window.webContents.executeJavaScript(
|
window.webContents.executeJavaScript(
|
||||||
`window.updatePlugin(${JSON.stringify({
|
`window.updatePlugin(${JSON.stringify({
|
||||||
currentPlugin: API.currentPlugin,
|
currentPlugin: API.currentPlugin
|
||||||
})})`
|
})})`
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
@ -186,16 +194,16 @@ export const API: any = {
|
|||||||
removeFeature({ data }, window) {
|
removeFeature({ data }, window) {
|
||||||
API.currentPlugin = {
|
API.currentPlugin = {
|
||||||
...API.currentPlugin,
|
...API.currentPlugin,
|
||||||
features: API.currentPlugin.features.filter((feature) => {
|
features: API.currentPlugin.features.filter(feature => {
|
||||||
if (data.code.type) {
|
if (data.code.type) {
|
||||||
return feature.code.type !== data.code.type;
|
return feature.code.type !== data.code.type;
|
||||||
}
|
}
|
||||||
return feature.code !== data.code;
|
return feature.code !== data.code;
|
||||||
}),
|
})
|
||||||
};
|
};
|
||||||
window.webContents.executeJavaScript(
|
window.webContents.executeJavaScript(
|
||||||
`window.updatePlugin(${JSON.stringify({
|
`window.updatePlugin(${JSON.stringify({
|
||||||
currentPlugin: API.currentPlugin,
|
currentPlugin: API.currentPlugin
|
||||||
})})`
|
})})`
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
@ -207,12 +215,12 @@ export const API: any = {
|
|||||||
runnerInstance.getView().webContents.sendInputEvent({
|
runnerInstance.getView().webContents.sendInputEvent({
|
||||||
type: "keyDown",
|
type: "keyDown",
|
||||||
modifiers,
|
modifiers,
|
||||||
keyCode: code,
|
keyCode: code
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
runnerInstance.getView().webContents.sendInputEvent({
|
runnerInstance.getView().webContents.sendInputEvent({
|
||||||
type: "keyDown",
|
type: "keyDown",
|
||||||
keyCode: code,
|
keyCode: code
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -223,11 +231,11 @@ export const API: any = {
|
|||||||
window.setBrowserView(null);
|
window.setBrowserView(null);
|
||||||
window.webContents
|
window.webContents
|
||||||
.executeJavaScript(`window.getMainInputInfo()`)
|
.executeJavaScript(`window.getMainInputInfo()`)
|
||||||
.then((res) => {
|
.then(res => {
|
||||||
detachInstance.init(
|
detachInstance.init(
|
||||||
{
|
{
|
||||||
...API.currentPlugin,
|
...API.currentPlugin,
|
||||||
subInput: res,
|
subInput: res
|
||||||
},
|
},
|
||||||
window.getBounds(),
|
window.getBounds(),
|
||||||
view
|
view
|
||||||
|
@ -11,7 +11,7 @@ import { PLUGIN_INSTALL_DIR as baseDir } from "@/common/constans/renderer";
|
|||||||
|
|
||||||
const createPluginManager = (): any => {
|
const createPluginManager = (): any => {
|
||||||
const pluginInstance = new PluginHandler({
|
const pluginInstance = new PluginHandler({
|
||||||
baseDir,
|
baseDir
|
||||||
});
|
});
|
||||||
|
|
||||||
const state: any = reactive({
|
const state: any = reactive({
|
||||||
@ -19,7 +19,7 @@ const createPluginManager = (): any => {
|
|||||||
plugins: [],
|
plugins: [],
|
||||||
localPlugins: [],
|
localPlugins: [],
|
||||||
currentPlugin: {},
|
currentPlugin: {},
|
||||||
pluginLoading: false,
|
pluginLoading: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const appList = ref([]);
|
const appList = ref([]);
|
||||||
@ -28,25 +28,29 @@ const createPluginManager = (): any => {
|
|||||||
appList.value = await appSearch(nativeImage);
|
appList.value = await appSearch(nativeImage);
|
||||||
};
|
};
|
||||||
|
|
||||||
const openPlugin = (plugin) => {
|
const loadPlugin = plugin => {
|
||||||
|
state.pluginLoading = true;
|
||||||
|
state.currentPlugin = plugin;
|
||||||
|
};
|
||||||
|
|
||||||
|
const openPlugin = plugin => {
|
||||||
if (plugin.pluginType === "ui" || plugin.pluginType === "system") {
|
if (plugin.pluginType === "ui" || plugin.pluginType === "system") {
|
||||||
if (state.currentPlugin && state.currentPlugin.name === plugin.name) {
|
if (state.currentPlugin && state.currentPlugin.name === plugin.name) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.pluginLoading = true;
|
loadPlugin(plugin);
|
||||||
state.currentPlugin = plugin;
|
|
||||||
ipcRenderer.sendSync("msg-trigger", {
|
ipcRenderer.sendSync("msg-trigger", {
|
||||||
type: "openPlugin",
|
type: "openPlugin",
|
||||||
plugin: JSON.parse(
|
data: JSON.parse(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
...plugin,
|
...plugin,
|
||||||
ext: plugin.ext || {
|
ext: plugin.ext || {
|
||||||
code: plugin.feature.code,
|
code: plugin.feature.code,
|
||||||
type: plugin.cmd.type || "text",
|
type: plugin.cmd.type || "text",
|
||||||
payload: null,
|
payload: null
|
||||||
},
|
}
|
||||||
})
|
})
|
||||||
),
|
)
|
||||||
});
|
});
|
||||||
setSearchValue("");
|
setSearchValue("");
|
||||||
}
|
}
|
||||||
@ -57,13 +61,18 @@ const createPluginManager = (): any => {
|
|||||||
|
|
||||||
const { searchValue, onSearch, setSearchValue, placeholder } =
|
const { searchValue, onSearch, setSearchValue, placeholder } =
|
||||||
searchManager();
|
searchManager();
|
||||||
const { options, searchFocus, clipboardFile, clearClipboardFile, readClipboardContent } =
|
const {
|
||||||
optionsManager({
|
options,
|
||||||
searchValue,
|
searchFocus,
|
||||||
appList,
|
clipboardFile,
|
||||||
openPlugin,
|
clearClipboardFile,
|
||||||
currentPlugin: toRefs(state).currentPlugin,
|
readClipboardContent
|
||||||
});
|
} = optionsManager({
|
||||||
|
searchValue,
|
||||||
|
appList,
|
||||||
|
openPlugin,
|
||||||
|
currentPlugin: toRefs(state).currentPlugin
|
||||||
|
});
|
||||||
// plugin operation
|
// plugin operation
|
||||||
const getPluginInfo = async ({ pluginName, pluginPath }) => {
|
const getPluginInfo = async ({ pluginName, pluginPath }) => {
|
||||||
const pluginInfo = await pluginInstance.getAdapterInfo(
|
const pluginInfo = await pluginInstance.getAdapterInfo(
|
||||||
@ -75,11 +84,11 @@ const createPluginManager = (): any => {
|
|||||||
icon: pluginInfo.logo,
|
icon: pluginInfo.logo,
|
||||||
indexPath: commonConst.dev()
|
indexPath: commonConst.dev()
|
||||||
? "http://localhost:8081/#/"
|
? "http://localhost:8081/#/"
|
||||||
: `file://${path.join(pluginPath, "../", pluginInfo.main)}`,
|
: `file://${path.join(pluginPath, "../", pluginInfo.main)}`
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const changeSelect = (select) => {
|
const changeSelect = select => {
|
||||||
state.currentPlugin = select;
|
state.currentPlugin = select;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -90,6 +99,9 @@ const createPluginManager = (): any => {
|
|||||||
const removePlugin = (plugin: any) => {
|
const removePlugin = (plugin: any) => {
|
||||||
// todo
|
// todo
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window.loadPlugin = plugin => loadPlugin(plugin);
|
||||||
|
|
||||||
window.updatePlugin = ({ currentPlugin }: any) => {
|
window.updatePlugin = ({ currentPlugin }: any) => {
|
||||||
state.currentPlugin = currentPlugin;
|
state.currentPlugin = currentPlugin;
|
||||||
remote.getGlobal("LOCAL_PLUGINS").updatePlugin(currentPlugin);
|
remote.getGlobal("LOCAL_PLUGINS").updatePlugin(currentPlugin);
|
||||||
@ -125,7 +137,7 @@ const createPluginManager = (): any => {
|
|||||||
searchFocus,
|
searchFocus,
|
||||||
clipboardFile,
|
clipboardFile,
|
||||||
clearClipboardFile,
|
clearClipboardFile,
|
||||||
readClipboardContent,
|
readClipboardContent
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
17
src/renderer/shims-vue.d.ts
vendored
17
src/renderer/shims-vue.d.ts
vendored
@ -1,22 +1,23 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
declare module '*.vue' {
|
declare module "*.vue" {
|
||||||
import type { DefineComponent } from 'vue'
|
import type { DefineComponent } from "vue";
|
||||||
const component: DefineComponent<{}, {}, any>
|
const component: DefineComponent<{}, {}, any>;
|
||||||
export default component
|
export default component;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'main' {
|
declare module "main" {
|
||||||
export function main (): any
|
export function main(): any;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare const __static: string
|
declare const __static: string;
|
||||||
|
|
||||||
declare module 'lodash.throttle'
|
declare module "lodash.throttle";
|
||||||
|
|
||||||
interface Window {
|
interface Window {
|
||||||
setSubInput: ({ placeholder }: { placeholder: string }) => void;
|
setSubInput: ({ placeholder }: { placeholder: string }) => void;
|
||||||
setSubInputValue: ({ value }: { value: string }) => void;
|
setSubInputValue: ({ value }: { value: string }) => void;
|
||||||
removeSubInput: () => void;
|
removeSubInput: () => void;
|
||||||
|
loadPlugin: (plugin: any) => void;
|
||||||
updatePlugin: (plugin: any) => void;
|
updatePlugin: (plugin: any) => void;
|
||||||
initRubick: () => void;
|
initRubick: () => void;
|
||||||
setCurrentPlugin: (plugin: any) => void;
|
setCurrentPlugin: (plugin: any) => void;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user