Compare commits

..

15 Commits

Author SHA1 Message Date
木偶
c00963fabb Update package.json 2023-10-22 15:12:32 +08:00
木偶
4b8f0e4657 Merge pull request #271 from lumozx/detach
fix: 解决win相互覆盖的问题
2023-10-22 13:22:24 +08:00
lumozx
28e7d2aa46 fix: 解决win相互覆盖的问题 2023-10-22 10:58:33 +08:00
木偶
404cb4fcb5 Merge pull request #267 from lumozx/master
fix: 多端数据同步下,列表适配暗黑模式
2023-10-20 15:50:43 +08:00
muwoo
5553170c5a 🐛 修复分离窗口后主程序失去响应的bug 2023-10-20 15:33:41 +08:00
lumozx
d8fabc6b4c fix: 暗黑模式下,点击刷新插件,插件名称输入框暗黑模式失效的问题 2023-10-20 12:12:10 +08:00
lumozx
88e4e325f3 fix: 选择器和输入框适配暗黑模式 2023-10-20 12:09:46 +08:00
muwoo
c0aaae08ee 🐛 修复 linux CI 2023-10-20 11:45:46 +08:00
muwoo
35598159a6 🐛 修复 linux CI 2023-10-20 11:45:36 +08:00
muwoo
2a1a332fbb ♻️ 修改 onPluginEnter 执行时机. 2023-10-20 11:23:57 +08:00
lumozx
6d105e0f56 fix: drawer与model暗黑适配 2023-10-20 11:01:21 +08:00
lumozx
d2acdeaad6 fix: 列表页暗黑适配 2023-10-20 10:27:56 +08:00
lumozx
54ad4ef7b2 Merge branch 'rubickCenter:master' into master 2023-10-19 21:33:15 +08:00
muwoo
7fb299d270 🐛 修复 #268 2023-10-19 15:24:13 +08:00
lumozx
606cb8bb22 fix: 多端数据同步下,列表适配暗黑模式 2023-10-18 12:44:49 +08:00
11 changed files with 106 additions and 31 deletions

View File

@@ -15,6 +15,8 @@
--color-input-hover: #fff;
// 边框
--color-border-light: #f0f0f0;
// 输入框附带icon
--color-action-color: rgba(0, 0, 0, 0.25);;
}
.dark {
@@ -29,4 +31,6 @@
--color-input-hover: #444d;
// 边框
--color-border-light: #444d;
// 输入框附带icon
--color-action-color: #ffffff4d;
}

View File

@@ -103,7 +103,7 @@ const wrapperCol = { span: 14 };
color: var(--color-text-content);
}
:deep(.ant-input) {
background: var(--color-input-hover);
background: var(--color-input-hover) !important;
color: var(--color-text-content);
}
}

View File

@@ -6,7 +6,7 @@
<ExportOutlined />
</template>
</a-button>
<a-button @click="importData" danger size="small" style="margin-right: 10px;">
<a-button @click="importData" danger size="small" style="margin-right: 10px; background-color: var(--color-input-hover)">
导入数据
<template #icon>
<ImportOutlined />
@@ -33,15 +33,20 @@
<DatabaseOutlined style="font-size: 18px;"/>
</a>
</template>
<a-list-item-meta :description="`${item.keys.length} 份文档`">
<a-list-item-meta>
<template #title>
<div>
<div style="color: var(--color-text-content)">
<span>{{ item.plugin?.pluginName }}</span>
</div>
</template>
<template #avatar>
<a-avatar shape="square" :src="item.plugin?.logo"/>
</template>
<template #description>
<div style="color: var(--color-text-desc)">
<span>{{ item.keys.length }} 份文档</span>
</div>
</template>
</a-list-item-meta>
</a-list-item>
</template>
@@ -52,6 +57,7 @@
:closable="false"
:title="currentSelect.plugin.pluginName"
placement="right"
class="exportDrawer"
>
<p
class="key-item"
@@ -64,7 +70,12 @@
</a-drawer>
<a-modal
centered
bodyStyle="max-height: 500px; overflow: auto"
:bodyStyle="{
maxHeight: '500px',
overflow: 'auto',
backgroundColor: 'var(--color-body-bg)',
color: 'var(--color-text-primary)'
}"
:footer="null"
:closable="false"
v-model:visible="show"
@@ -75,6 +86,7 @@
v-model:visible="showSetting"
title="webdav 账户配置"
:footer="null"
class="webdavModel"
>
<a-alert v-if="formState.suport === 'jianguo'" style="margin-bottom: 20px;" type="info" show-icon>
<template #message>
@@ -255,7 +267,7 @@ const downloadPlugin = async (plugin) => {
.export-header {
width: 100%;
height: 40px;
border-bottom: 1px solid #eee;
border-bottom: 1px solid var(--color-border-light);
text-align: right;
}
.key-item {
@@ -265,4 +277,44 @@ const downloadPlugin = async (plugin) => {
color: var(--ant-primary-color);
}
}
.exportDrawer{
.ant-drawer-header{
background-color: var(--color-body-bg);
border-bottom: 1px solid var(--color-border-light);
.ant-drawer-title{
color: var(--color-text-primary);
}
}
.ant-drawer-body{
background-color: var(--color-body-bg);
color: var(--color-text-content)
}
}
.webdavModel{
.ant-modal-close-x{
color: var(--color-text-content);
}
.ant-modal-header{
background-color: var(--color-body-bg);
border-bottom: 1px solid var(--color-border-light);
.ant-modal-title{
color: var(--color-text-primary);
}
}
.ant-form-item-label>label {
color: var(--color-text-content);
}
.ant-modal-body {
background-color: var(--color-body-bg);
.ant-input,
.ant-input-password,
.ant-select-selector {
background: var(--color-input-hover) !important;
color: var(--color-text-content);
}
.ant-input-password-icon, .ant-select-arrow {
color: var(--color-action-color);
}
}
}
</style>

View File

@@ -512,6 +512,13 @@ const changeLanguage = (value) => {
background: var(--color-list-hover);
}
}
.ant-select-selector {
background: var(--color-input-hover) !important;
color: var(--color-text-content);
}
.ant-input-password-icon, .ant-select-arrow {
color: var(--color-action-color);
}
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "rubick",
"version": "4.0.5",
"version": "4.0.9",
"author": "muwoo <2424880409@qq.com>",
"private": true,
"scripts": {

View File

@@ -17,10 +17,13 @@ export default function getCopyFiles(): Array<any> | null {
return null;
}
} else if (process.platform === 'win32') {
/* eslint-disable */
const clipboardEx = require('electron-clipboard-ex');
fileInfo = clipboardEx.readFilePaths();
// todo
try {
/* eslint-disable */
const clipboardEx = require('electron-clipboard-ex');
fileInfo = clipboardEx.readFilePaths();
} catch (e) {
// todo
}
} else {
if (!commonConst.linux()) return null;
if (!clipboard.has('text/uri-list')) return null;

View File

@@ -5,18 +5,18 @@ import { WINDOW_MIN_HEIGHT } from '@/common/constans/common';
export default () => {
let win: any;
const init = (pluginInfo, viewInfo, view) => {
const init = async (pluginInfo, viewInfo, view) => {
ipcMain.on('detach:service', async (event, arg: { type: string }) => {
const data = await operation[arg.type]();
event.returnValue = data;
});
createWindow(pluginInfo, viewInfo, view);
const createWin = await createWindow(pluginInfo, viewInfo, view);
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@electron/remote/main').enable(win.webContents);
require('@electron/remote/main').enable(createWin.webContents);
};
const createWindow = async (pluginInfo, viewInfo, view) => {
win = new BrowserWindow({
const createWin = new BrowserWindow({
height: viewInfo.height,
minHeight: WINDOW_MIN_HEIGHT,
width: viewInfo.width,
@@ -43,29 +43,32 @@ export default () => {
});
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
win.loadURL('http://localhost:8082');
createWin.loadURL('http://localhost:8082');
} else {
win.loadURL(`file://${path.join(__static, './detach/index.html')}`);
createWin.loadURL(`file://${path.join(__static, './detach/index.html')}`);
}
win.on('close', () => {
createWin.on('close', () => {
executeHooks('PluginOut', null);
});
win.on('closed', () => {
createWin.on('closed', () => {
win = undefined;
});
createWin.on('focus', () => {
win = createWin;
});
win.once('ready-to-show', async () => {
createWin.once('ready-to-show', async () => {
const config = await localConfig.getConfig();
const darkMode = config.perf.common.darkMode;
darkMode &&
win.webContents.executeJavaScript(
createWin.webContents.executeJavaScript(
`document.body.classList.add("dark");window.rubick.theme="dark"`
);
win.setBrowserView(view);
win.webContents.executeJavaScript(
createWin.setBrowserView(view);
createWin.webContents.executeJavaScript(
`window.initDetach(${JSON.stringify(pluginInfo)})`
);
win.show();
createWin.show();
});
const executeHooks = (hook, data) => {
if (!view) return;
@@ -77,6 +80,7 @@ export default () => {
`;
view.webContents.executeJavaScript(evalJs);
};
return createWin;
};
const getWindow = () => win;

View File

@@ -175,14 +175,16 @@ export default () => {
const getView = () => view;
const executeHooks = (hook, data) => {
if (!view) return;
const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) {
try {
setTimeout(() => {
if (!view) return;
const evalJs = `if(window.rubick && window.rubick.hooks && typeof window.rubick.hooks.on${hook} === 'function' ) {
try {
window.rubick.hooks.on${hook}(${data ? JSON.stringify(data) : ''});
} catch(e) {}
} catch(e) {}
}
`;
view.webContents?.executeJavaScript(evalJs);
view.webContents?.executeJavaScript(evalJs);
}, 300);
};
return {

View File

@@ -222,7 +222,7 @@ class API extends DBInstance {
}
public getFeatures() {
return this.currentPlugin.features;
return this.currentPlugin?.features;
}
public setFeature({ data }, window) {

View File

@@ -14,7 +14,7 @@
:key="index"
>
<a-avatar style="width: 28px; height: 28px;" :src="item.icon" />
<div class="name ellpise">{{item.pluginName || item._name || item.name}}</div>
<div class="name ellpise">{{item.cmd || item.pluginName || item._name || item.name}}</div>
</a-col>
</a-row>
</div>

View File

@@ -70,6 +70,9 @@ const createPluginManager = (): any => {
const openPlugin = async (plugin, option) => {
if (plugin.pluginType === 'ui' || plugin.pluginType === 'system') {
if (state.currentPlugin && state.currentPlugin.name === plugin.name) {
ipcRenderer.sendSync('msg-trigger', {
type: 'showMainWindow',
});
return;
}
await loadPlugin(plugin);