fix(play): render AuthModal in immersive branch (#78)

手机竖屏 (orientation === 'portrait') 和桌面按 F 全屏
(presentation) 都会走 PlayInner 的 immersive 渲染分支,但该分支
加入时只带了 SettingsModal、漏掉了 AuthModal。导致这两条路径下
若 API 返回 401 触发 setAuthModalOpen(true),登录框不会被挂载,
用户无法登录继续游戏。

预设故事卡片入口 (onCardClick) 不做跳转前登录校验,未登录用户进
/play 后点选项即触发 401,在手机上复现该 bug。

补上与非 immersive 分支完全一致的 AuthModal 块,复用现有
authResolveRef 重试机制,登录成功后自动重放被拦截的请求。
This commit is contained in:
Zonghao Yuan
2026-06-14 23:26:52 +08:00
committed by GitHub
parent 74e87673d1
commit da191dd7a2
+15
View File
@@ -2253,6 +2253,21 @@ function PlayInner() {
footerNote="保存后配音 Key 会立即生效,用你自己的额度合成当前这一幕的配音。"
/>
)}
{authModalOpen && (
<AuthModal
onClose={() => {
setAuthModalOpen(false);
// User dismissed login — drop the retry, don't re-run the action.
authResolveRef.current = null;
}}
onSuccess={() => {
setAuthModalOpen(false);
const retry = authResolveRef.current;
authResolveRef.current = null;
retry?.();
}}
/>
)}
</div>
);
}