feat(guest): 支持游客态浏览示例衣物与搭配

游客可点开示例衣物详情与搭配抽屉,不再在浏览路径上要求登录。
This commit is contained in:
2026-09-17 11:41:42 +08:00
parent 45222317af
commit f0503c7ad7
30 changed files with 648 additions and 127 deletions
+27 -5
View File
@@ -8,7 +8,7 @@ import { OutfitStatusPill, isPendingSave, outfitStatusPill } from '../../utils/o
import { setTabBarSelected } from '../../utils/tabbar'
import { formatRelativeTime } from '../../utils/format'
import { navScroll } from '../../utils/nav'
import { GUEST_OUTFITS, goLogin } from '../../utils/guest'
import { GUEST_OUTFIT, goLogin } from '../../utils/guest'
import { logger } from '../../utils/logger'
// 日志模块名
@@ -45,9 +45,11 @@ Page({
pendingCount: 0,
// 滚动收缩:由 utils/nav.ts 的共享 handler 驱动
navScrolled: false,
// 游客态(未登录):展示本地示例穿搭,不发需要授权的请求
// 游客态(未登录):只展示本地示例穿搭,不发需要授权的请求
guest: false,
guestList: GUEST_OUTFITS,
guestOutfit: GUEST_OUTFIT,
// 游客态示例搭配抽屉:可完整浏览示例单品,浏览路径上不要求登录
guestSheetVisible: false,
},
// scroll-view 滚动 → 导航收缩为玻璃小标题
@@ -72,7 +74,7 @@ Page({
if (this.data.guest) {
logger.info(LOG, '检测到登录态,从游客态切换为真实穿搭列表')
;(this as any).firstShown = true
this.setData({ guest: false, guestList: [], list: [], loading: true })
this.setData({ guest: false, guestSheetVisible: false, list: [], loading: true })
this.refresh()
this.fetchPendingCount()
return
@@ -116,12 +118,32 @@ Page({
this.refresh()
},
// 游客态点击示例穿搭 / 受限入口:统一进入登录页,由用户自行选择是否登录
// 游客态点击受限入口:进入登录页,由用户自行选择是否登录
onGuestLogin() {
logger.debug(LOG, '游客态点击受限入口,引导登录')
goLogin()
},
// 抽屉内容点击不穿透到遮罩
noop() {},
// 游客态点击示例搭配:打开只读示例抽屉(浏览路径上不要求登录)
onGuestOutfitTap() {
logger.debug(LOG, '游客态打开示例搭配抽屉')
this.setData({ guestSheetVisible: true })
},
onGuestSheetClose() {
this.setData({ guestSheetVisible: false })
},
// 抽屉底部入口:用户主动选择登录时才进入登录页
onGuestSheetLogin() {
logger.info(LOG, '示例搭配抽屉内主动登录')
this.setData({ guestSheetVisible: false })
goLogin()
},
refresh() {
this.setData({ page: 1, hasMore: true, loading: this.data.list.length === 0 })
this.fetchList(1)