|
15 | 15 | style="position: fixed; right: 20px; bottom: 20px; z-index: 999" |
16 | 16 | > |
17 | 17 | <div class="floating-actions"> |
18 | | - <button |
19 | | - class="floating-btn lang-switcher" |
20 | | - :title="t('switchLanguage')" |
21 | | - :disabled="isBusy" |
22 | | - @click="toggleLanguage" |
23 | | - > |
| 18 | + <button class="floating-btn lang-switcher" :title="t('switchLanguage')" @click="toggleLanguage"> |
24 | 19 | <svg |
25 | 20 | xmlns="http://www.w3.org/2000/svg" |
26 | 21 | width="24" |
|
40 | 35 | <path d="M14 18h6" /> |
41 | 36 | </svg> |
42 | 37 | </button> |
43 | | - <button |
44 | | - class="floating-btn logout-button" |
45 | | - :title="t('logout')" |
46 | | - :disabled="isBusy" |
47 | | - @click="handleLogout" |
48 | | - > |
| 38 | + <button class="floating-btn logout-button" :title="t('logout')" @click="handleLogout"> |
49 | 39 | <svg |
50 | 40 | xmlns="http://www.w3.org/2000/svg" |
51 | 41 | width="24" |
|
66 | 56 | </el-affix> |
67 | 57 |
|
68 | 58 | <div class="status-container"> |
69 | | - <button |
70 | | - class="desktop-btn lang-switcher" |
71 | | - :title="t('switchLanguage')" |
72 | | - :disabled="isBusy" |
73 | | - @click="toggleLanguage" |
74 | | - > |
| 59 | + <button class="desktop-btn lang-switcher" :title="t('switchLanguage')" @click="toggleLanguage"> |
75 | 60 | <svg |
76 | 61 | xmlns="http://www.w3.org/2000/svg" |
77 | 62 | width="24" |
|
91 | 76 | <path d="M14 18h6" /> |
92 | 77 | </svg> |
93 | 78 | </button> |
94 | | - <button class="desktop-btn logout-button" :title="t('logout')" :disabled="isBusy" @click="handleLogout"> |
| 79 | + <button class="desktop-btn logout-button" :title="t('logout')" @click="handleLogout"> |
95 | 80 | <svg |
96 | 81 | xmlns="http://www.w3.org/2000/svg" |
97 | 82 | width="24" |
@@ -304,9 +289,19 @@ const apiKeySourceText = computed(() => { |
304 | 289 | return translated === key ? state.apiKeySource : translated || state.apiKeySource; |
305 | 290 | }); |
306 | 291 |
|
307 | | -const browserConnectedClass = computed(() => (state.browserConnected ? "status-ok" : "status-error")); |
| 292 | +const browserConnectedClass = computed(() => { |
| 293 | + if (state.isSystemBusy) { |
| 294 | + return "status-warning"; |
| 295 | + } |
| 296 | + return state.browserConnected ? "status-ok" : "status-error"; |
| 297 | +}); |
308 | 298 |
|
309 | | -const browserConnectedText = computed(() => (state.browserConnected ? t("running") : t("disconnected"))); |
| 299 | +const browserConnectedText = computed(() => { |
| 300 | + if (state.isSystemBusy) { |
| 301 | + return t("connecting"); |
| 302 | + } |
| 303 | + return state.browserConnected ? t("running") : t("disconnected"); |
| 304 | +}); |
310 | 305 |
|
311 | 306 | const currentAccountName = computed(() => { |
312 | 307 | if (state.currentAuthIndex < 0) { |
@@ -735,6 +730,11 @@ pre { |
735 | 730 | font-weight: bold; |
736 | 731 | } |
737 | 732 |
|
| 733 | +.status-warning { |
| 734 | + color: @warning-color; |
| 735 | + font-weight: bold; |
| 736 | +} |
| 737 | +
|
738 | 738 | .status-error { |
739 | 739 | color: @error-color; |
740 | 740 | font-weight: bold; |
|
0 commit comments