From 0ac42f0a76df5b90cdf0b54bf950231cdd645b8f Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 2 Jun 2026 22:48:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=96=B9=E5=BC=8F=E7=9A=84=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/subscribe.vue | 50 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/pages/subscribe.vue b/src/pages/subscribe.vue index f27b1eee..2ca67cde 100644 --- a/src/pages/subscribe.vue +++ b/src/pages/subscribe.vue @@ -56,8 +56,52 @@ const subscribeStatusFilter = ref(null) type SubscribeSortBy = 'custom' | 'last_update' | 'date' | 'lack_episode' +const subscribeSortStorageKeyPrefix = 'MPSubscribeSortBy' + +// 获取当前订阅类型对应的排序本地存储键。 +function getSubscribeSortStorageKey() { + return `${subscribeSortStorageKeyPrefix}:${subType || 'default'}` +} + +// 判断排序值是否适用于当前订阅类型。 +function isValidSubscribeSortBy(value: string | null): value is SubscribeSortBy { + if (!value) return false + + const sortValues: SubscribeSortBy[] = ['custom', 'last_update', 'date'] + if (subType !== '电影') { + sortValues.push('lack_episode') + } + + return sortValues.includes(value as SubscribeSortBy) +} + +// 从本地读取上次选择的订阅排序方式。 +function loadSubscribeSortBy() { + try { + const storedSortBy = localStorage.getItem(getSubscribeSortStorageKey()) + return isValidSubscribeSortBy(storedSortBy) ? storedSortBy : '' + } catch (error) { + console.warn('读取订阅排序方式失败:', error) + return '' + } +} + +// 保存当前选择的订阅排序方式到本地。 +function saveSubscribeSortBy(value: SubscribeSortBy | '') { + try { + const storageKey = getSubscribeSortStorageKey() + if (value) { + localStorage.setItem(storageKey, value) + } else { + localStorage.removeItem(storageKey) + } + } catch (error) { + console.warn('保存订阅排序方式失败:', error) + } +} + // 订阅排序方式 -const subscribeSortBy = ref('') +const subscribeSortBy = ref(loadSubscribeSortBy()) // 分享搜索词 const shareKeyword = ref('') @@ -195,6 +239,10 @@ watch(activeTab, newTab => { } }) +watch(subscribeSortBy, newSortBy => { + saveSubscribeSortBy(newSortBy) +}) + onUnmounted(() => { shareKeywordUpdater.cancel() })