diff --git a/detach/src/App.vue b/detach/src/App.vue index 396dda4..cf1a350 100644 --- a/detach/src/App.vue +++ b/detach/src/App.vue @@ -184,6 +184,7 @@ html, body { .window-handle { display: flex; align-items: center; + -webkit-app-region: no-drag; } .window-handle > div { diff --git a/feature/src/assets/ant-reset.less b/feature/src/assets/ant-reset.less index 9435b0d..311cc99 100644 --- a/feature/src/assets/ant-reset.less +++ b/feature/src/assets/ant-reset.less @@ -1,3 +1,8 @@ +@import "~ant-design-vue/dist/antd.less"; // 引入官方提供的 less 样式入口文件 + +@primary-color: #ff4ea4; // 全局主色 +@error-color: #ff4ea4; // 错误色 + :root { --color-text-primary: rgba(0, 0, 0, 0.85); --color-text-content: #141414; diff --git a/feature/src/store/index.ts b/feature/src/store/index.ts index 2a65099..71adf6d 100644 --- a/feature/src/store/index.ts +++ b/feature/src/store/index.ts @@ -1,5 +1,5 @@ -import { createStore } from "vuex"; -import request from "@/assets/request"; +import { createStore } from 'vuex'; +import request from '@/assets/request'; const isDownload = (item: Market.Plugin, targets: any[]) => { let isDownload = false; @@ -29,74 +29,84 @@ export default createStore({ const totalPlugins = await request.getTotalPlugins(); const localPlugins = window.market.getLocalPlugins(); - totalPlugins.forEach( - (origin: Market.Plugin) => { - origin.isdownload = isDownload(origin, localPlugins); - origin.isloading = false; - } - ); - commit("commonUpdate", { + totalPlugins.forEach((origin: Market.Plugin) => { + origin.isdownload = isDownload(origin, localPlugins); + origin.isloading = false; + }); + // 修复卸载失败,一直转圈的问题。 + localPlugins.forEach((origin: Market.Plugin) => { + origin.isloading = false; + }); + + commit('commonUpdate', { localPlugins, totalPlugins, }); }, startDownload({ commit, state }, name) { const totalPlugins = JSON.parse(JSON.stringify(state.totalPlugins)); - totalPlugins.forEach( - (origin: Market.Plugin) => { - if (origin.name === name) { - origin.isloading = true; - } + totalPlugins.forEach((origin: Market.Plugin) => { + if (origin.name === name) { + origin.isloading = true; } - ); - commit("commonUpdate", { + }); + commit('commonUpdate', { totalPlugins, }); }, startUnDownload({ commit, state }, name) { const localPlugins = window.market.getLocalPlugins(); - localPlugins.forEach( - (origin: Market.Plugin) => { - if (origin.name === name) { - origin.isloading = true; - } + localPlugins.forEach((origin: Market.Plugin) => { + if (origin.name === name) { + origin.isloading = true; } - ); - commit("commonUpdate", { + }); + commit('commonUpdate', { + localPlugins, + }); + }, + + errorUnDownload({ commit, state }, name) { + const localPlugins = window.market.getLocalPlugins(); + // 修复卸载失败,一直转圈的问题。 + localPlugins.forEach((origin: Market.Plugin) => { + if (origin.name === name) { + origin.isloading = false; + } + }); + + commit('commonUpdate', { localPlugins, }); }, successDownload({ commit, state }, name) { const totalPlugins = JSON.parse(JSON.stringify(state.totalPlugins)); - totalPlugins.forEach( - (origin: Market.Plugin) => { - if (origin.name === name) { - origin.isloading = false; - origin.isdownload = true; - } + totalPlugins.forEach((origin: Market.Plugin) => { + if (origin.name === name) { + origin.isloading = false; + origin.isdownload = true; } - ); + }); const localPlugins = window.market.getLocalPlugins(); - commit("commonUpdate", { + commit('commonUpdate', { totalPlugins, localPlugins, }); }, + async updateLocalPlugin({ commit }) { const localPlugins = window.market.getLocalPlugins(); const totalPlugins = await request.getTotalPlugins(); - totalPlugins.forEach( - (origin: Market.Plugin) => { - origin.isdownload = isDownload(origin, localPlugins); - origin.isloading = false; - } - ); + totalPlugins.forEach((origin: Market.Plugin) => { + origin.isdownload = isDownload(origin, localPlugins); + origin.isloading = false; + }); - commit("commonUpdate", { + commit('commonUpdate', { localPlugins, totalPlugins, }); diff --git a/feature/src/views/installed/index.vue b/feature/src/views/installed/index.vue index 84a042e..ab12000 100644 --- a/feature/src/views/installed/index.vue +++ b/feature/src/views/installed/index.vue @@ -117,6 +117,7 @@ import { computed, ref, toRaw } from 'vue'; import path from 'path'; import MarkdownIt from 'markdown-it'; import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue'; +import { message } from 'ant-design-vue'; const { ipcRenderer } = window.require('electron'); @@ -135,6 +136,7 @@ const localPlugins = computed(() => ); const updateLocalPlugin = () => store.dispatch('updateLocalPlugin'); const startUnDownload = (name) => store.dispatch('startUnDownload', name); +const errorUnDownload = (name) => store.dispatch('errorUnDownload', name); const currentSelect = ref([0]); @@ -148,7 +150,7 @@ const superPanelPlugins = ref( _id: 'super-panel-plugins', } ); -console.log(toRaw(superPanelPlugins.value.data)); + const addCmdToSuperPanel = ({ cmd, code }) => { const plugin = { ...toRaw(pluginDetail.value), @@ -218,8 +220,13 @@ const readme = computed(() => { const deletePlugin = async (plugin) => { startUnDownload(plugin.name); + const timer = setTimeout(() => { + errorUnDownload(plugin.name); + message.error('卸载超时,请重试!'); + }, 20000); await window.market.deletePlugin(plugin); updateLocalPlugin(); + clearTimeout(timer); }; diff --git a/package.json b/package.json index 02fce81..3f5e75e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rubick", - "version": "2.3.4", + "version": "2.3.6", "author": "muwoo <2424880409@qq.com>", "private": true, "scripts": { diff --git a/public/detach/css/app.63fbfd69.css b/public/detach/css/app.65d55ce4.css similarity index 53% rename from public/detach/css/app.63fbfd69.css rename to public/detach/css/app.65d55ce4.css index 67cf00f..be1567c 100644 --- a/public/detach/css/app.63fbfd69.css +++ b/public/detach/css/app.65d55ce4.css @@ -1 +1 @@ -body,html{margin:0;padding:0;font-family:system-ui,PingFang SC,Helvetica Neue,Microsoft Yahei,sans-serif;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.detach{width:100%;height:60px;color:var(--color-text-primary);flex:1;display:flex;align-items:center;font-size:18px;padding-left:10px;font-weight:500;box-sizing:border-box;justify-content:space-between}.detach.darwin{padding-left:80px}.detach.darwin,.detach.win32{-webkit-app-region:drag}.detach img{width:36px;height:36px;margin-right:10px}.detach input{background-color:var(--color-body-bg);color:var(--color-text-primary);width:360px;height:36px;line-height:36px;border-radius:4px;font-size:14px;border:none;padding:0 10px;outline:none;-webkit-app-region:no-drag}.detach input::-webkit-input-placeholder{color:#aaa;-webkit-user-select:none;user-select:none}.detach .info{display:flex;align-items:center}.handle{display:flex;-webkit-app-region:no-drag}.handle>div{width:36px;height:36px;border-radius:18px;cursor:pointer;margin-right:6px}.handle>div:hover{background-color:#dee2e6}.handle .devtool{background:50% no-repeat url(../img/tool.4b0524aa.svg)}.handle-container,.window-handle{display:flex;align-items:center}.window-handle>div{width:48px;height:56px;cursor:pointer}.window-handle>div:hover{background-color:#dee2e6}.window-handle .minimize{background:50%/20px no-repeat url(../img/minimize.384634d1.svg)}.window-handle .maximize{background:50%/20px no-repeat url(../img/maximize.f11a5dfe.svg)}.window-handle .unmaximize{background:50%/20px no-repeat url(../img/unmaximize.36583168.svg)}.window-handle .close{background:50%/20px no-repeat url(../img/close.cc2cafaa.svg)}.window-handle .close:hover{background-color:#e53935!important;background-image:url(../img/close-hover.c92ca454.svg)!important}:root{--color-text-primary:rgba(0,0,0,0.85);--color-text-content:#141414;--color-text-desc:rgba(0,0,0,0.45);--color-body-bg:#fff;--color-menu-bg:#f3efef;--color-list-hover:#e2e2e2;--color-input-hover:#fff;--color-border-light:#f0f0f0}.dark{--color-text-primary:#e8e8f0;--color-text-content:#ccccd8;--color-text-desc:#8f8fa6;--color-body-bg:#1c1c28;--color-menu-bg:#1c1c28;--color-list-hover:#33333d;--color-input-hover:#33333d;--color-border-light:#33333d} \ No newline at end of file +body,html{margin:0;padding:0;font-family:system-ui,PingFang SC,Helvetica Neue,Microsoft Yahei,sans-serif;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.detach{width:100%;height:60px;color:var(--color-text-primary);flex:1;display:flex;align-items:center;font-size:18px;padding-left:10px;font-weight:500;box-sizing:border-box;justify-content:space-between}.detach.darwin{padding-left:80px}.detach.darwin,.detach.win32{-webkit-app-region:drag}.detach img{width:36px;height:36px;margin-right:10px}.detach input{background-color:var(--color-body-bg);color:var(--color-text-primary);width:360px;height:36px;line-height:36px;border-radius:4px;font-size:14px;border:none;padding:0 10px;outline:none;-webkit-app-region:no-drag}.detach input::-webkit-input-placeholder{color:#aaa;-webkit-user-select:none;user-select:none}.detach .info{display:flex;align-items:center}.handle{display:flex;-webkit-app-region:no-drag}.handle>div{width:36px;height:36px;border-radius:18px;cursor:pointer;margin-right:6px}.handle>div:hover{background-color:#dee2e6}.handle .devtool{background:50% no-repeat url(../img/tool.4b0524aa.svg)}.handle-container,.window-handle{display:flex;align-items:center}.window-handle{-webkit-app-region:no-drag}.window-handle>div{width:48px;height:56px;cursor:pointer}.window-handle>div:hover{background-color:#dee2e6}.window-handle .minimize{background:50%/20px no-repeat url(../img/minimize.384634d1.svg)}.window-handle .maximize{background:50%/20px no-repeat url(../img/maximize.f11a5dfe.svg)}.window-handle .unmaximize{background:50%/20px no-repeat url(../img/unmaximize.36583168.svg)}.window-handle .close{background:50%/20px no-repeat url(../img/close.cc2cafaa.svg)}.window-handle .close:hover{background-color:#e53935!important;background-image:url(../img/close-hover.c92ca454.svg)!important}:root{--color-text-primary:rgba(0,0,0,0.85);--color-text-content:#141414;--color-text-desc:rgba(0,0,0,0.45);--color-body-bg:#fff;--color-menu-bg:#f3efef;--color-list-hover:#e2e2e2;--color-input-hover:#fff;--color-border-light:#f0f0f0}.dark{--color-text-primary:#e8e8f0;--color-text-content:#ccccd8;--color-text-desc:#8f8fa6;--color-body-bg:#1c1c28;--color-menu-bg:#1c1c28;--color-list-hover:#33333d;--color-input-hover:#33333d;--color-border-light:#33333d} \ No newline at end of file diff --git a/public/detach/index.html b/public/detach/index.html index ab617d2..e446934 100644 --- a/public/detach/index.html +++ b/public/detach/index.html @@ -1 +1 @@ -
f?J(e,s,c,!0,!1,p):F(t,n,r,s,c,i,l,u,p)},$=(e,t,n,r,s,c,i,l,u)=>{let a=0;const f=t.length;let p=e.length-1,d=f-1;while(a<=p&&a<=d){const o=e[a],r=t[a]=u?qo(t[a]):Ro(t[a]);if(!ko(o,r))break;v(o,r,n,null,s,c,i,l,u),a++}while(a<=p&&a<=d){const o=e[p],r=t[d]=u?qo(t[d]):Ro(t[d]);if(!ko(o,r))break;v(o,r,n,null,s,c,i,l,u),p--,d--}if(a>p){if(a<=d){const e=d+1,o=e