Compare commits

..

6 Commits

Author SHA1 Message Date
Tim f27cb5c703 feat: remember home tab selection 2025-08-16 18:13:37 +08:00
tim 642a527dcf Revert "feat: persist home tab selection"
This reverts commit 2c5462cd97.
2025-08-16 16:20:52 +08:00
Tim 88afcc5a8e Merge pull request #597 from nagisa77/codex/save-user-tab-selection-in-localstorage-9dskt8
feat: persist home tab selection
2025-08-16 16:19:58 +08:00
tim 2f29946b11 Revert "feat: remember selected tab"
This reverts commit 2322b2da15.
2025-08-16 16:19:23 +08:00
Tim e27aa34cfd Merge pull request #596 from nagisa77/codex/save-user-tab-selection-in-localstorage
feat: persist home tab selection
2025-08-16 16:10:49 +08:00
Tim 2322b2da15 feat: remember selected tab 2025-08-16 16:10:37 +08:00
+20 -15
View File
@@ -147,20 +147,17 @@ const categoryOptions = ref([])
const isLoadingMore = ref(false) const isLoadingMore = ref(false)
const topics = ref(['最新回复', '最新', '排行榜' /*, '热门', '类别'*/]) const topics = ref(['最新回复', '最新', '排行榜' /*, '热门', '类别'*/])
const HOME_TAB_KEY = 'homeTab' const selectedTopicCookie = useCookie('homeTab')
const routeDefault = const selectedTopic = ref(
route.query.view === 'ranking' ? '排行榜' : route.query.view === 'latest' ? '最新' : null selectedTopicCookie.value
const selectedTopic = ref(routeDefault || '最新回复') ? selectedTopicCookie.value
if (import.meta.client) { : route.query.view === 'ranking'
if (routeDefault) { ? '排行榜'
localStorage.setItem(HOME_TAB_KEY, routeDefault) : route.query.view === 'latest'
} else { ? '最新'
const stored = localStorage.getItem(HOME_TAB_KEY) : '最新回复',
if (stored && topics.value.includes(stored)) { )
selectedTopic.value = stored if (!selectedTopicCookie.value) selectedTopicCookie.value = selectedTopic.value
}
}
}
const articles = ref([]) const articles = ref([])
const page = ref(0) const page = ref(0)
const pageSize = 10 const pageSize = 10
@@ -186,6 +183,11 @@ onMounted(() => {
const { category, tags } = route.query const { category, tags } = route.query
if (category) selectedCategorySet(category) if (category) selectedCategorySet(category)
if (tags) selectedTagsSet(tags) if (tags) selectedTagsSet(tags)
const saved = localStorage.getItem('homeTab')
if (saved) {
selectedTopic.value = saved
}
}) })
/** 路由变更时同步筛选 **/ /** 路由变更时同步筛选 **/
@@ -352,9 +354,12 @@ watch([selectedCategory, selectedTags], () => {
loadOptions() loadOptions()
}) })
watch(selectedTopic, (val) => { watch(selectedTopic, (val) => {
if (import.meta.client) localStorage.setItem(HOME_TAB_KEY, val)
// 仅当需要额外选项时加载 // 仅当需要额外选项时加载
loadOptions() loadOptions()
selectedTopicCookie.value = val
if (process.client) {
localStorage.setItem('homeTab', val)
}
}) })
/** 选项首屏加载:服务端执行一次;客户端兜底 **/ /** 选项首屏加载:服务端执行一次;客户端兜底 **/