perf: 优化webui和主程序更新的协调

fix: 修复某些请求不能正确应用代理的问题
This commit is contained in:
Soulter
2025-01-21 01:08:15 +08:00
parent 529cd64d82
commit 5dd1488b5d
15 changed files with 67 additions and 50 deletions
@@ -136,11 +136,15 @@ commonStore.getStartTime();
</template>
<v-card>
<v-card-title>
<span class="text-h5">更新项目</span>
<span class="text-h5">更新 AstrBot</span>
</v-card-title>
<v-card-text>
<v-container>
<h3 class="mb-4">升级到最新版本</h3>
<div class="mb-4">
<small>会同时尝试更新机器人主程序和管理面板。如果您正在使用 Docker 部署,也可以重新拉取镜像或者使用 <a href="https://containrrr.dev/watchtower/usage-overview/">watchtower</a> 来自动监控拉取。</small>
</div>
<p>{{ updateStatus }}</p>
<v-btn class="mt-4 mb-4" @click="switchVersion('latest')" color="primary" style="border-radius: 10px;"
:disabled="!hasNewVersion">
@@ -149,6 +153,9 @@ commonStore.getStartTime();
<v-divider></v-divider>
<div style="margin-top: 16px;">
<h3 class="mb-4">切换到指定版本或指定提交</h3>
<div class="mb-4">
<small>跳到旧版本不会重新下载管理面板文件,这可能会造成部分数据显示错误。您可在 <a href="https://github.com/Soulter/AstrBot/releases">此处</a> 找到对应的面板文件 dist.zip,解压后替换 data/dist 文件夹即可。</small>
</div>
<v-text-field label="输入版本号或 master 分支下的 commit hash。" v-model="version" required
variant="outlined"></v-text-field>
<div class="mb-4">
@@ -27,10 +27,10 @@ const sidebarMenu = shallowRef(sidebarItems);
</v-btn>
</v-list-item>
<small style="display: block;" v-if="buildVer">构建: {{ buildVer }}</small>
<small style="display: block;" v-else="buildVer">构建: embedded</small>
<small style="display: block;" v-else>构建: embedded</small>
<v-tooltip text="使用 /dashbord_update 指令更新管理面板">
<template v-slot:activator="{ props }">
<small v-bind="props" v-if="buildVer != version" style="display: block; margin-top: 4px;">面板有更新</small>
<small v-bind="props" v-if="hasWebUIUpdate" style="display: block; margin-top: 4px;">面板有更新</small>
</template>
</v-tooltip>
@@ -50,19 +50,12 @@ export default {
},
data: () => ({
version: "",
buildVer: ""
buildVer: "",
hasWebUIUpdate: false,
}),
mounted() {
this.get_version()
fetch('/assets/version').then((res) => {
return res.text()
}).then((res) => {
if (res.length > 10) {
// 不是版本,不显示 😎
return
}
this.buildVer = res.replace(/\s+/g, '')
})
this.check_webui_update()
},
methods: {
get_version() {
@@ -73,6 +66,16 @@ export default {
.catch((err) => {
console.log(err);
});
},
check_webui_update() {
axios.get('/api/update/check?type=dashboard')
.then((res) => {
this.hasWebUIUpdate = res.data.data.has_new_version;
this.buildVer = res.data.data.current_version;
})
.catch((err) => {
console.log(err);
});
}
},
};