fix: 修复分享模式进入主线冲突的 bug

This commit is contained in:
richarjiang
2026-05-19 19:30:37 +08:00
parent d78c29000d
commit 165fef318f
2 changed files with 74 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ import { ToastManager } from 'db://assets/scripts/utils/ToastManager';
import { StaminaInfo } from 'db://assets/scripts/types/ApiTypes';
import { AuthManager } from 'db://assets/scripts/utils/AuthManager';
import { AchievementTitleManager } from 'db://assets/scripts/utils/AchievementTitleManager';
import { ShareManager } from 'db://assets/scripts/utils/ShareManager';
const { ccclass, property } = _decorator;
/**
@@ -110,15 +111,23 @@ export class PageHome extends BaseView {
return;
}
// 兜底:清空可能残留的好友分享挑战状态,确保进入的是纯主线挑战
// 场景:用户从微信好友分享卡片进入挑战 → 退出回首页 → 再次点击开始游戏
// 若不清理,缓存的 PageLevel 仍会读到 ShareManager 的分享态数据
if (ShareManager.instance.isShareMode) {
console.log('[PageHome] 检测到残留的分享挑战状态,清理后再进入主线挑战');
ShareManager.instance.clearShareMode();
}
this._isAnimating = true;
this._playStaminaCostAnimation()
.then(() => {
ViewManager.instance.open('PageLevel');
ViewManager.instance.open('PageLevel', { params: { shareMode: false } });
})
.catch(err => {
console.error('[PageHome] 体力消耗动画异常:', err);
// 异常兜底:直接进入关卡
ViewManager.instance.open('PageLevel');
ViewManager.instance.open('PageLevel', { params: { shareMode: false } });
})
.finally(() => {
this._isAnimating = false;