Showing
1 changed file
with
53 additions
and
48 deletions
... | ... | @@ -2,16 +2,26 @@ |
2 | 2 | <el-tabs> |
3 | 3 | <el-tab-pane label="Debugger Apps"> |
4 | 4 | <div class="app-list"> |
5 | - <template v-for="(app, key) in QX_DEBUG_APPS" :key="key"> | |
5 | + <template v-for="(app, key) in debuggerApps" :key="key"> | |
6 | 6 | <div class="app-list-item"> |
7 | 7 | <div class="app-list-item__content"> |
8 | - <el-input placeholder="子应用名称" v-model="app.name"></el-input> | |
8 | + <el-input placeholder="子应用名称" v-model="app.name"> </el-input> | |
9 | 9 | <el-input placeholder="子应用地址" v-model="app.entry"></el-input> |
10 | 10 | </div> |
11 | 11 | <div class="app-list-item__btn"> |
12 | + <el-button | |
13 | + v-if="app.debugging" | |
14 | + type="" | |
15 | + @click="handleDebugging(key)" | |
16 | + > | |
17 | + <VideoPause style="width: 1em; height: 1em" /> | |
18 | + </el-button> | |
19 | + <el-button v-else type="" @click="handleDebugging(key)"> | |
20 | + <VideoPlay style="width: 1em; height: 1em" /> | |
21 | + </el-button> | |
12 | 22 | <el-button type="" @click="deleteItem(key)">-</el-button> |
13 | 23 | <el-button |
14 | - v-if="key === QX_DEBUG_APPS.length - 1" | |
24 | + v-if="key === debuggerApps.length - 1" | |
15 | 25 | type="" |
16 | 26 | @click="add" |
17 | 27 | >+</el-button |
... | ... | @@ -24,14 +34,9 @@ |
24 | 34 | <el-button @click="start(true)" |
25 | 35 | ><Refresh style="width: 1em; height: 1em" /> |
26 | 36 | </el-button> |
27 | - <el-button | |
28 | - v-if="DEVELOPER_MODE == 1 && filterDebuggerApps.length" | |
29 | - @click="end" | |
30 | - > | |
37 | + <el-button v-if="debuggerStatus" @click="end"> | |
31 | 38 | <VideoPause style="width: 1em; height: 1em; margin-right: 8px" /> |
32 | - <el-tooltip content="关闭调试模式,会同步关闭开发者模式" placement=""> | |
33 | - 关闭调试 | |
34 | - </el-tooltip> | |
39 | + 结束调试 | |
35 | 40 | </el-button> |
36 | 41 | <el-button v-else @click="start" |
37 | 42 | ><VideoPlay style="width: 1em; height: 1em; margin-right: 8px" /> |
... | ... | @@ -44,49 +49,58 @@ |
44 | 49 | |
45 | 50 | <script setup> |
46 | 51 | import { reactive, ref, computed, watchEffect } from "vue"; |
52 | +const defaultApps = [{ name: "", entry: "", debugging: false }]; | |
47 | 53 | |
48 | 54 | const { sessionStorage } = |
49 | 55 | chrome.extension.getBackgroundPage().backgroundState || {}; |
50 | 56 | |
51 | -const defaultApps = [{ name: "", entry: "" }]; | |
52 | - | |
53 | -const sessionDebuggerApps = JSON.parse( | |
54 | - sessionStorage.QX_DEBUG_APPS || JSON.stringify(defaultApps) | |
57 | +const debuggerApps = ref( | |
58 | + JSON.parse( | |
59 | + window.localStorage.getItem("qx-debugger-apps") || | |
60 | + JSON.stringify(defaultApps) | |
61 | + ) | |
55 | 62 | ); |
56 | 63 | |
57 | -const QX_DEBUG_APPS = reactive( | |
58 | - sessionDebuggerApps.length ? sessionDebuggerApps : defaultApps | |
64 | +const debuggerStatus = ref( | |
65 | + JSON.parse(window.localStorage.getItem("qx-debugger-status") || "false") | |
59 | 66 | ); |
60 | 67 | |
61 | 68 | const filterDebuggerApps = computed(() => |
62 | - QX_DEBUG_APPS.filter((item) => item.name && item.entry) | |
69 | + debuggerApps.value.filter((app) => app.name && app.entry && app.debugging) | |
63 | 70 | ); |
64 | 71 | |
65 | -const DEVELOPER_MODE = ref(sessionStorage.DEVELOPER_MODE === "1"); | |
72 | +watchEffect(() => { | |
73 | + window.localStorage.setItem( | |
74 | + "qx-debugger-apps", | |
75 | + JSON.stringify(debuggerApps.value || defaultApps) | |
76 | + ); | |
77 | + | |
78 | + chrome.runtime.sendMessage({ | |
79 | + type: "setSessionStorage", | |
80 | + key: "QX_DEBUG_APPS", | |
81 | + value: JSON.stringify(filterDebuggerApps.value), | |
82 | + }); | |
83 | +}); | |
66 | 84 | |
67 | -console.log("sessionStorage", sessionStorage); | |
85 | + | |
86 | +const DEVELOPER_MODE = ref(sessionStorage.DEVELOPER_MODE === "1"); | |
68 | 87 | |
69 | 88 | function add() { |
70 | - QX_DEBUG_APPS.push({ name: "", entry: "" }); | |
89 | + debuggerApps.value.push(defaultApps[0]); | |
71 | 90 | } |
72 | 91 | |
73 | 92 | function deleteItem(index) { |
74 | - QX_DEBUG_APPS.splice(index, 1); | |
75 | - | |
76 | - if (index == 0 && !QX_DEBUG_APPS.length) { | |
77 | - QX_DEBUG_APPS.push({ name: "", entry: "" }); | |
78 | - } | |
79 | -} | |
93 | + debuggerApps.value.splice(index, 1); | |
80 | 94 | |
81 | -function validate(refresh) { | |
82 | - if (filterDebuggerApps.value.length || refresh) { | |
83 | - return true; | |
95 | + if (index == 0 && !debuggerApps.length) { | |
96 | + debuggerApps.value.push({ name: "", entry: "" }); | |
84 | 97 | } |
85 | - | |
86 | - return false; | |
87 | 98 | } |
88 | 99 | |
89 | -async function save() { | |
100 | +async function start() { | |
101 | + chrome.runtime.sendMessage({ type: "reload" }); | |
102 | + debuggerStatus.value = true; | |
103 | + window.localStorage.setItem("qx-debugger-status", "true"); | |
90 | 104 | chrome.runtime.sendMessage({ |
91 | 105 | type: "setSessionStorage", |
92 | 106 | key: "QX_DEBUG_APPS", |
... | ... | @@ -94,30 +108,21 @@ async function save() { |
94 | 108 | }); |
95 | 109 | } |
96 | 110 | |
97 | -async function start(refresh) { | |
98 | - if (validate(refresh)) { | |
99 | - DEVELOPER_MODE.value = "1"; | |
100 | - save(); | |
101 | - chrome.runtime.sendMessage({ | |
102 | - type: "setSessionStorage", | |
103 | - key: "DEVELOPER_MODE", | |
104 | - value: "1", | |
105 | - }); | |
106 | - | |
107 | - chrome.runtime.sendMessage({ type: "reload" }); | |
108 | - } | |
109 | -} | |
110 | - | |
111 | 111 | async function end() { |
112 | - DEVELOPER_MODE.value = null; | |
112 | + debuggerStatus.value = false; | |
113 | + window.localStorage.setItem("qx-debugger-status", "false"); | |
113 | 114 | |
114 | 115 | chrome.runtime.sendMessage({ |
115 | 116 | type: "removeSessionStorage", |
116 | - key: "DEVELOPER_MODE", | |
117 | + key: "QX_DEBUG_APPS", | |
117 | 118 | }); |
118 | 119 | |
119 | 120 | chrome.runtime.sendMessage({ type: "reload" }); |
120 | 121 | } |
122 | + | |
123 | +function handleDebugging(index) { | |
124 | + debuggerApps.value[index].debugging = !debuggerApps.value[index].debugging; | |
125 | +} | |
121 | 126 | </script> |
122 | 127 | |
123 | 128 | <style> | ... | ... |