fix: 修改退出登录时,没有完全清除存储的数据
This commit is contained in:
parent
f426b84c0a
commit
d7634a558f
@ -109,6 +109,7 @@ import { ref } from 'vue';
|
||||
import { useStore } from 'vuex';
|
||||
import { validatePhone, validatePassword } from '@/utils/validator';
|
||||
import { AGREEMENT_CONTENT } from '@/utils/agreement';
|
||||
import { resetAllGuides } from '@/utils/guideConfig';
|
||||
|
||||
const store = useStore();
|
||||
|
||||
@ -137,9 +138,9 @@ const togglePassword = () => {
|
||||
// 跳转到注册页面
|
||||
const goToRegister = () => {
|
||||
// 清除新手引导相关数据
|
||||
resetAllGuides();
|
||||
uni.removeStorageSync('is_new_user');
|
||||
uni.removeStorageSync('has_seen_welcome');
|
||||
uni.removeStorageSync('guide_shown_square_home');
|
||||
|
||||
uni.navigateTo({
|
||||
url: '/pages/register/register'
|
||||
|
||||
@ -119,7 +119,18 @@ const backButtonTop = computed(() => {
|
||||
})
|
||||
|
||||
const handleBack = () => {
|
||||
uni.navigateBack()
|
||||
// 获取页面栈
|
||||
const pages = getCurrentPages();
|
||||
if (pages.length > 1) {
|
||||
// 有上一页,执行返回
|
||||
uni.navigateBack();
|
||||
} else {
|
||||
uni.removeStorageSync('is_new_user')
|
||||
// 没有上一页,跳转到square页面
|
||||
uni.reLaunch({
|
||||
url: '/pages/square/square'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const loading = ref(true)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { loginApi, registerApi, getOssPresignedUrlApi } from '@/utils/api'
|
||||
import { downloadAndCacheAvatar } from '@/utils/avatarCache'
|
||||
import { resetAllGuides } from '@/utils/guideConfig'
|
||||
|
||||
const state = {
|
||||
token: uni.getStorageSync('access_token') || '',
|
||||
@ -56,12 +57,29 @@ const mutations = {
|
||||
state.token = ''
|
||||
state.userInfo = null
|
||||
state.starId = null
|
||||
// 获取当前 userId 用于清除引导数据(需要在清除 user 数据之前获取)
|
||||
const userStr = uni.getStorageSync('user')
|
||||
let userId = null
|
||||
if (userStr) {
|
||||
try {
|
||||
const user = JSON.parse(userStr)
|
||||
userId = user?.uid || null
|
||||
} catch (e) {}
|
||||
}
|
||||
// 清除所有引导相关存储(传入 userId 确保正确清除)
|
||||
resetAllGuides(userId)
|
||||
|
||||
// 清除 storage
|
||||
uni.removeStorageSync('access_token')
|
||||
uni.removeStorageSync('user')
|
||||
uni.removeStorageSync('star_id')
|
||||
// 清除登录手机号
|
||||
uni.removeStorageSync('login_mobile')
|
||||
// 清除 gallery_owner_id
|
||||
uni.removeStorageSync('gallery_owner_id')
|
||||
// 清除每日登录打卡记录
|
||||
const today = new Date().toISOString().split('T')[0]
|
||||
uni.removeStorageSync(`daily_login_completed_${today}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -307,6 +307,38 @@ export function getAllGuideKeys() {
|
||||
return Object.keys(guideConfig)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前 userId(从 localStorage 读取)
|
||||
* @returns {number|null}
|
||||
*/
|
||||
function getCurrentUserId() {
|
||||
const userStr = uni.getStorageSync('user')
|
||||
if (userStr) {
|
||||
try {
|
||||
const user = JSON.parse(userStr)
|
||||
return user?.uid || null
|
||||
} catch (e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成带 userId 的存储 key
|
||||
* @param {string} prefix 前缀
|
||||
* @param {string} key 引导key
|
||||
* @returns {string}
|
||||
*/
|
||||
function makeUserIdKey(prefix, key) {
|
||||
const userId = getCurrentUserId()
|
||||
if (userId) {
|
||||
return `${prefix}_${userId}_${key}`
|
||||
}
|
||||
// 如果没有 userId,使用默认值确保不会跨账号混淆
|
||||
return `${prefix}_default_${key}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否需要显示某个引导
|
||||
* @param {string} key 引导key
|
||||
@ -370,22 +402,33 @@ export function markGuideAsShown(key) {
|
||||
* @param {string} key 引导key
|
||||
*/
|
||||
export function resetGuide(key) {
|
||||
const storageKey = `guide_shown_${key}`
|
||||
uni.removeStorageSync(storageKey)
|
||||
uni.removeStorageSync(`guide_shown_${key}`)
|
||||
uni.removeStorageSync(makeUserIdKey('guide_done', key))
|
||||
uni.removeStorageSync(makeUserIdKey('guide_step', key))
|
||||
uni.removeStorageSync(makeUserIdKey('guide_rewards_claimed', key))
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置所有引导(用于调试)
|
||||
* 重置所有引导
|
||||
* @param {number|string|null} userId 用户ID,如果不传则从 storage 读取
|
||||
*/
|
||||
export function resetAllGuides() {
|
||||
export function resetAllGuides(userId = null) {
|
||||
const keys = getAllGuideKeys()
|
||||
// 如果没有传入 userId,从 storage 读取
|
||||
if (userId === null) {
|
||||
userId = getCurrentUserId()
|
||||
}
|
||||
keys.forEach(key => {
|
||||
const storageKey = `guide_shown_${key}`
|
||||
uni.removeStorageSync(storageKey)
|
||||
uni.removeStorageSync(`guide_done_${key}`)
|
||||
uni.removeStorageSync(`guide_step_${key}`)
|
||||
uni.removeStorageSync(`guide_shown_${key}`)
|
||||
if (userId) {
|
||||
uni.removeStorageSync(`guide_done_${userId}_${key}`)
|
||||
uni.removeStorageSync(`guide_step_${userId}_${key}`)
|
||||
uni.removeStorageSync(`guide_completed_steps_${userId}_${key}`)
|
||||
}
|
||||
})
|
||||
uni.removeStorageSync('guide_rewards_claimed')
|
||||
if (userId) {
|
||||
uni.removeStorageSync(`guide_rewards_claimed_${userId}`)
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== 新增:状态管理函数 ====================
|
||||
@ -396,7 +439,7 @@ export function resetAllGuides() {
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function isGuideDone(key) {
|
||||
return uni.getStorageSync(`guide_done_${key}`) === true
|
||||
return uni.getStorageSync(makeUserIdKey('guide_done', key)) === true
|
||||
}
|
||||
|
||||
/**
|
||||
@ -405,7 +448,7 @@ export function isGuideDone(key) {
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function isGuideRewardClaimed(key) {
|
||||
const claimed = uni.getStorageSync('guide_rewards_claimed') || []
|
||||
const claimed = uni.getStorageSync(makeUserIdKey('guide_rewards_claimed', '')) || []
|
||||
return claimed.includes(key)
|
||||
}
|
||||
|
||||
@ -450,7 +493,7 @@ export function getClaimableRewardCount() {
|
||||
* @param {string} key 引导key
|
||||
*/
|
||||
export function markGuideDone(key) {
|
||||
uni.setStorageSync(`guide_done_${key}`, true)
|
||||
uni.setStorageSync(makeUserIdKey('guide_done', key), true)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -475,9 +518,9 @@ export function claimGuideReward(key) {
|
||||
}
|
||||
|
||||
// 标记已领取
|
||||
const claimed = uni.getStorageSync('guide_rewards_claimed') || []
|
||||
const claimed = uni.getStorageSync(makeUserIdKey('guide_rewards_claimed', '')) || []
|
||||
claimed.push(key)
|
||||
uni.setStorageSync('guide_rewards_claimed', claimed)
|
||||
uni.setStorageSync(makeUserIdKey('guide_rewards_claimed', ''), claimed)
|
||||
|
||||
// 发放奖励(需要调用后端接口,这里先本地记录)
|
||||
console.log(`[Guide] 领取奖励: ${key}`, config.reward)
|
||||
@ -568,7 +611,7 @@ export function getGuideStatusList() {
|
||||
* @returns {number} 当前步骤索引,默认0
|
||||
*/
|
||||
export function getGuideCurrentStep(key) {
|
||||
return uni.getStorageSync(`guide_step_${key}`) || 0
|
||||
return uni.getStorageSync(makeUserIdKey('guide_step', key)) || 0
|
||||
}
|
||||
|
||||
/**
|
||||
@ -577,7 +620,7 @@ export function getGuideCurrentStep(key) {
|
||||
* @param {number} step 步骤索引
|
||||
*/
|
||||
export function setGuideCurrentStep(key, step) {
|
||||
uni.setStorageSync(`guide_step_${key}`, step)
|
||||
uni.setStorageSync(makeUserIdKey('guide_step', key), step)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -597,11 +640,11 @@ export function getNextUndoneGuideKey() {
|
||||
* @param {number} stepIndex 步骤索引
|
||||
*/
|
||||
export function completeSubStep(key, stepIndex) {
|
||||
const completed = uni.getStorageSync(`guide_completed_steps_${key}`) || []
|
||||
const completed = uni.getStorageSync(makeUserIdKey('guide_completed_steps', key)) || []
|
||||
if (!completed.includes(stepIndex)) {
|
||||
completed.push(stepIndex)
|
||||
completed.sort((a, b) => a - b)
|
||||
uni.setStorageSync(`guide_completed_steps_${key}`, completed)
|
||||
uni.setStorageSync(makeUserIdKey('guide_completed_steps', key), completed)
|
||||
}
|
||||
}
|
||||
|
||||
@ -611,7 +654,7 @@ export function completeSubStep(key, stepIndex) {
|
||||
* @returns {number[]}
|
||||
*/
|
||||
export function getCompletedSteps(key) {
|
||||
return uni.getStorageSync(`guide_completed_steps_${key}`) || []
|
||||
return uni.getStorageSync(makeUserIdKey('guide_completed_steps', key)) || []
|
||||
}
|
||||
|
||||
/**
|
||||
@ -672,7 +715,7 @@ export function hasGuideProgress(key) {
|
||||
* @param {string} key 引导key
|
||||
*/
|
||||
export function clearSubStepProgress(key) {
|
||||
uni.removeStorageSync(`guide_completed_steps_${key}`)
|
||||
uni.removeStorageSync(makeUserIdKey('guide_completed_steps', key))
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user