mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
feat: add prerelease visibility toggle
This commit is contained in:
@@ -26,7 +26,9 @@
|
|||||||
"release": "😊 Release"
|
"release": "😊 Release"
|
||||||
},
|
},
|
||||||
"advancedSettings": "Advanced settings",
|
"advancedSettings": "Advanced settings",
|
||||||
|
"releases": "Releases",
|
||||||
"updateToLatest": "Update to Latest Version",
|
"updateToLatest": "Update to Latest Version",
|
||||||
|
"showPreReleases": "Show pre-release versions",
|
||||||
"preRelease": "Pre-release",
|
"preRelease": "Pre-release",
|
||||||
"preReleaseWarning": {
|
"preReleaseWarning": {
|
||||||
"title": "Pre-release Version Notice",
|
"title": "Pre-release Version Notice",
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
"release": "😊 Релиз"
|
"release": "😊 Релиз"
|
||||||
},
|
},
|
||||||
"advancedSettings": "Расширенные настройки",
|
"advancedSettings": "Расширенные настройки",
|
||||||
|
"releases": "Релизы",
|
||||||
"updateToLatest": "Обновить до последней версии",
|
"updateToLatest": "Обновить до последней версии",
|
||||||
|
"showPreReleases": "Показывать предварительные версии",
|
||||||
"preRelease": "Предварительная версия",
|
"preRelease": "Предварительная версия",
|
||||||
"preReleaseWarning": {
|
"preReleaseWarning": {
|
||||||
"title": "Внимание: предварительная версия",
|
"title": "Внимание: предварительная версия",
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
"release": "😊 正式版"
|
"release": "😊 正式版"
|
||||||
},
|
},
|
||||||
"advancedSettings": "高级设置",
|
"advancedSettings": "高级设置",
|
||||||
|
"releases": "版本列表",
|
||||||
"updateToLatest": "更新到最新版本",
|
"updateToLatest": "更新到最新版本",
|
||||||
|
"showPreReleases": "显示预发布版本",
|
||||||
"preRelease": "预发布",
|
"preRelease": "预发布",
|
||||||
"preReleaseWarning": {
|
"preReleaseWarning": {
|
||||||
"title": "预发布版本提醒",
|
"title": "预发布版本提醒",
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ const { t } = useI18n();
|
|||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const LAST_BOT_ROUTE_KEY = "astrbot:last_bot_route";
|
const LAST_BOT_ROUTE_KEY = "astrbot:last_bot_route";
|
||||||
const LAST_CHAT_ROUTE_KEY = "astrbot:last_chat_route";
|
const LAST_CHAT_ROUTE_KEY = "astrbot:last_chat_route";
|
||||||
|
const SHOW_PRE_RELEASES_KEY = "astrbot:updateDialog:showPreReleases";
|
||||||
let dialog = ref(false);
|
let dialog = ref(false);
|
||||||
let accountWarning = ref(false);
|
let accountWarning = ref(false);
|
||||||
let accountWarningMd5 = ref(false);
|
let accountWarningMd5 = ref(false);
|
||||||
@@ -50,6 +51,11 @@ let dashboardHasNewVersion = ref(false);
|
|||||||
let dashboardCurrentVersion = ref("");
|
let dashboardCurrentVersion = ref("");
|
||||||
let releases = ref<any[]>([]);
|
let releases = ref<any[]>([]);
|
||||||
let releasesLoading = ref(false);
|
let releasesLoading = ref(false);
|
||||||
|
const showPreReleases = ref(
|
||||||
|
typeof window === "undefined"
|
||||||
|
? false
|
||||||
|
: localStorage.getItem(SHOW_PRE_RELEASES_KEY) === "true",
|
||||||
|
);
|
||||||
let updatingDashboardLoading = ref(false);
|
let updatingDashboardLoading = ref(false);
|
||||||
let installLoading = ref(false);
|
let installLoading = ref(false);
|
||||||
let showAdvancedUpdateSettings = ref(false);
|
let showAdvancedUpdateSettings = ref(false);
|
||||||
@@ -150,7 +156,12 @@ const releasesHeader = computed(() => [
|
|||||||
{ title: t("core.header.updateDialog.table.content"), key: "body" },
|
{ title: t("core.header.updateDialog.table.content"), key: "body" },
|
||||||
{ title: t("core.header.updateDialog.table.actions"), key: "switch" },
|
{ title: t("core.header.updateDialog.table.actions"), key: "switch" },
|
||||||
]);
|
]);
|
||||||
const firstReleasePageItems = computed(() => releases.value.slice(0, 6));
|
const visibleReleases = computed(() =>
|
||||||
|
showPreReleases.value
|
||||||
|
? releases.value
|
||||||
|
: releases.value.filter((item: any) => !isPreRelease(item.tag_name)),
|
||||||
|
);
|
||||||
|
const firstReleasePageItems = computed(() => visibleReleases.value.slice(0, 6));
|
||||||
const firstReleasePageHasPreRelease = computed(() =>
|
const firstReleasePageHasPreRelease = computed(() =>
|
||||||
firstReleasePageItems.value.some((item: any) => isPreRelease(item.tag_name)),
|
firstReleasePageItems.value.some((item: any) => isPreRelease(item.tag_name)),
|
||||||
);
|
);
|
||||||
@@ -883,6 +894,11 @@ onMounted(() => {
|
|||||||
// 监听 viewMode 变化,切换到 bot 模式时跳转到首页
|
// 监听 viewMode 变化,切换到 bot 模式时跳转到首页
|
||||||
// 保存 bot 模式的最後路由
|
// 保存 bot 模式的最後路由
|
||||||
// 監聽 route 變化,保存最後一次 bot 路由
|
// 監聽 route 變化,保存最後一次 bot 路由
|
||||||
|
watch(showPreReleases, (value) => {
|
||||||
|
if (typeof window === "undefined") return;
|
||||||
|
localStorage.setItem(SHOW_PRE_RELEASES_KEY, value ? "true" : "false");
|
||||||
|
});
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => route.fullPath,
|
() => route.fullPath,
|
||||||
(newPath) => {
|
(newPath) => {
|
||||||
@@ -1456,6 +1472,21 @@ onMounted(async () => {
|
|||||||
|
|
||||||
<!-- 发行版 -->
|
<!-- 发行版 -->
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
<div class="release-table-toolbar mb-3">
|
||||||
|
<div class="text-subtitle-1 font-weight-medium">
|
||||||
|
{{ t("core.header.updateDialog.releases") }}
|
||||||
|
</div>
|
||||||
|
<v-switch
|
||||||
|
v-model="showPreReleases"
|
||||||
|
class="release-prerelease-switch"
|
||||||
|
color="warning"
|
||||||
|
density="compact"
|
||||||
|
hide-details
|
||||||
|
inset
|
||||||
|
:label="t('core.header.updateDialog.showPreReleases')"
|
||||||
|
></v-switch>
|
||||||
|
</div>
|
||||||
|
|
||||||
<v-alert
|
<v-alert
|
||||||
v-if="!installLoading && firstReleasePageHasPreRelease"
|
v-if="!installLoading && firstReleasePageHasPreRelease"
|
||||||
type="warning"
|
type="warning"
|
||||||
@@ -1489,7 +1520,7 @@ onMounted(async () => {
|
|||||||
|
|
||||||
<v-data-table
|
<v-data-table
|
||||||
:headers="releasesHeader"
|
:headers="releasesHeader"
|
||||||
:items="releases"
|
:items="visibleReleases"
|
||||||
item-key="name"
|
item-key="name"
|
||||||
:items-per-page="6"
|
:items-per-page="6"
|
||||||
density="comfortable"
|
density="comfortable"
|
||||||
@@ -1913,6 +1944,18 @@ onMounted(async () => {
|
|||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.release-table-toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 12px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.release-prerelease-switch {
|
||||||
|
flex: 0 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
/* 响应式布局样式 */
|
/* 响应式布局样式 */
|
||||||
.logo-container {
|
.logo-container {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
|||||||
Reference in New Issue
Block a user