refactor(app): 重构应用主题和页面结构
- 移除动态主题切换功能,改为全局统一深色主题 - 实现自定义TabBar组件替换原生tabBar,解决iOS闪白问题 - 创建main容器页面统一管理三个tab页面的生命周期和状态 - 将所有页面的onShow/onHide等生命周期方法迁移到子组件内部 - 更新页面路径从index改为main,并调整路由跳转逻辑 - 移除theme-mixin和相关主题工具函数 - 统一页面背景色设置,优化用户体验一致性
This commit is contained in:
+31
-32
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<view :class="themeClass" class="page-container circle-page">
|
||||
<view class="page-container circle-page">
|
||||
<!-- 顶部导航 -->
|
||||
<view class="circle-header" :style="{ paddingTop: headerPaddingTop }">
|
||||
<view class="circle-title-row" :style="{ paddingRight: headerPaddingRight }">
|
||||
@@ -81,10 +81,8 @@ import EmptyState from '../../components/EmptyState.vue'
|
||||
import { GetCircleFeeds, LikeFeed, UnlikeFeed, DeleteFeed, GetFriends, GetFriendRequests, GetEvents, DeleteEvent, GetUnreadCount, isLoggedIn, requireLogin } from '../../common/api'
|
||||
import wsManager from '../../common/websocket'
|
||||
import { getMyInviteCode } from '../../common/invite'
|
||||
import themeMixin from '../../common/theme-mixin'
|
||||
|
||||
export default {
|
||||
mixins: [themeMixin],
|
||||
components: { FeedCard, FriendItem, EventCard, EmptyState },
|
||||
data() {
|
||||
const menuBtn = uni.getMenuButtonBoundingClientRect()
|
||||
@@ -119,33 +117,34 @@ export default {
|
||||
isGuest: false
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.isGuest = !isLoggedIn()
|
||||
if (this.isGuest) {
|
||||
// 游客态不发起鉴权请求,展示空态与登录引导
|
||||
this.feeds = []
|
||||
this.loading = false
|
||||
} else {
|
||||
this.loadFeeds(true)
|
||||
}
|
||||
// 消息入口已隐藏,未读角标暂不展示,空转请求先停掉(恢复入口时打开)
|
||||
// this.loadUnread()
|
||||
// this.bindWsEvents()
|
||||
// 读取当前用户ID(删除自己的动态时用)
|
||||
try {
|
||||
const user = JSON.parse(uni.getStorageSync('user_info') || '{}')
|
||||
this.myUserId = user.id !== undefined && user.id !== null ? String(user.id) : ''
|
||||
} catch (e) { this.myUserId = '' }
|
||||
// 页面显示时确保 WS 已连接(登录后/断线后兼容)
|
||||
wsManager.connect()
|
||||
},
|
||||
onHide() {
|
||||
this.unbindWsEvents()
|
||||
},
|
||||
onUnload() {
|
||||
this.unbindWsEvents()
|
||||
},
|
||||
methods: {
|
||||
// === 子组件生命周期(由 main.vue 容器通过 ref 调用)===
|
||||
pageShow() {
|
||||
this.isGuest = !isLoggedIn()
|
||||
if (this.isGuest) {
|
||||
// 游客态不发起鉴权请求,展示空态与登录引导
|
||||
this.feeds = []
|
||||
this.loading = false
|
||||
} else {
|
||||
this.loadFeeds(true)
|
||||
}
|
||||
// 消息入口已隐藏,未读角标暂不展示,空转请求先停掉(恢复入口时打开)
|
||||
// this.loadUnread()
|
||||
// this.bindWsEvents()
|
||||
// 读取当前用户ID(删除自己的动态时用)
|
||||
try {
|
||||
const user = JSON.parse(uni.getStorageSync('user_info') || '{}')
|
||||
this.myUserId = user.id !== undefined && user.id !== null ? String(user.id) : ''
|
||||
} catch (e) { this.myUserId = '' }
|
||||
// 页面显示时确保 WS 已连接(登录后/断线后兼容)
|
||||
wsManager.connect()
|
||||
},
|
||||
pageHide() {
|
||||
this.unbindWsEvents()
|
||||
},
|
||||
pageUnload() {
|
||||
this.unbindWsEvents()
|
||||
},
|
||||
// === WebSocket 事件 ===
|
||||
bindWsEvents() {
|
||||
if (this._wsBound) return
|
||||
@@ -380,7 +379,7 @@ export default {
|
||||
const parts = []
|
||||
if (this.inviteCode) parts.push(`inviteCode=${encodeURIComponent(this.inviteCode)}`)
|
||||
if (user.nickname) parts.push(`inviterNick=${encodeURIComponent(user.nickname)}`)
|
||||
const query = parts.length ? `?${parts.join('&')}` : ''
|
||||
const query = parts.length ? `&${parts.join('&')}` : ''
|
||||
const nick = user.nickname ? `「${user.nickname}」` : ''
|
||||
// 本次分享已用掉当前邀请码,异步生成新码供下次使用
|
||||
this.inviteCode = ''
|
||||
@@ -388,7 +387,7 @@ export default {
|
||||
this.shareMode = 'default'
|
||||
return {
|
||||
title: `${nick}邀请你成为酒友,一起记录饮酒生活 🍻`,
|
||||
path: `/pages/index/index${query}`
|
||||
path: `/pages/main/main?tab=0${query}`
|
||||
}
|
||||
}
|
||||
const feed = this.shareFeed
|
||||
@@ -405,7 +404,7 @@ export default {
|
||||
}
|
||||
return {
|
||||
title: '酒友圈 - 碰盏日记',
|
||||
path: '/pages/index/index'
|
||||
path: '/pages/main/main?tab=1'
|
||||
}
|
||||
},
|
||||
onShareTimeline() {
|
||||
|
||||
Reference in New Issue
Block a user