feat(personal): 持久化开发者模式状态并优化登录后数据加载
- 新增 kv-store 持久化开发者模式开关,避免每次冷启动丢失 - 登录成功后立即拉取用户资料,减少首页空数据闪烁 - 修复体重卡片在未登录时重复请求的问题 - 移除 ActivityHeatMap 与 userSlice 中的调试日志 - useAuthGuard 增加 token 调试输出(临时)
This commit is contained in:
@@ -8,6 +8,7 @@ import { useNotifications } from '@/hooks/useNotifications';
|
||||
import { DEFAULT_MEMBER_NAME, fetchActivityHistory, fetchMyProfile } from '@/store/userSlice';
|
||||
import { log } from '@/utils/logger';
|
||||
import { getNotificationEnabled, setNotificationEnabled as saveNotificationEnabled } from '@/utils/userPreferences';
|
||||
import { getItem, setItem } from '@/utils/kvStore';
|
||||
import { Ionicons } from '@expo/vector-icons';
|
||||
|
||||
import { useFocusEffect } from '@react-navigation/native';
|
||||
@@ -54,6 +55,8 @@ export default function PersonalScreen() {
|
||||
dispatch(fetchActivityHistory());
|
||||
// 加载用户推送偏好设置
|
||||
loadNotificationPreference();
|
||||
// 加载开发者模式状态
|
||||
loadDeveloperModeState();
|
||||
}, [dispatch])
|
||||
);
|
||||
|
||||
@@ -67,6 +70,27 @@ export default function PersonalScreen() {
|
||||
}
|
||||
};
|
||||
|
||||
// 加载开发者模式状态
|
||||
const loadDeveloperModeState = async () => {
|
||||
try {
|
||||
const enabled = await getItem('developer_mode_enabled');
|
||||
if (enabled === 'true') {
|
||||
setShowDeveloperSection(true);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载开发者模式状态失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 保存开发者模式状态
|
||||
const saveDeveloperModeState = async (enabled: boolean) => {
|
||||
try {
|
||||
await setItem('developer_mode_enabled', enabled.toString());
|
||||
} catch (error) {
|
||||
console.error('保存开发者模式状态失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 数据格式化函数
|
||||
const formatHeight = () => {
|
||||
if (userProfile.height == null) return '--';
|
||||
@@ -89,9 +113,10 @@ export default function PersonalScreen() {
|
||||
// 显示名称
|
||||
const displayName = (userProfile.name?.trim()) ? userProfile.name : DEFAULT_MEMBER_NAME;
|
||||
|
||||
// 初始化时加载推送偏好设置
|
||||
// 初始化时加载推送偏好设置和开发者模式状态
|
||||
useEffect(() => {
|
||||
loadNotificationPreference();
|
||||
loadDeveloperModeState();
|
||||
}, []);
|
||||
|
||||
// 处理用户名连续点击
|
||||
@@ -110,6 +135,7 @@ export default function PersonalScreen() {
|
||||
// 检查是否有3次连续点击
|
||||
if (clickTimestamps.current.length >= 3) {
|
||||
setShowDeveloperSection(true);
|
||||
saveDeveloperModeState(true); // 持久化保存开发者模式状态
|
||||
clickTimestamps.current = []; // 清空点击记录
|
||||
log.info('开发者模式已激活');
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user