Merge branch 'dev' into test

This commit is contained in:
2026-06-17 11:52:44 +08:00
3 changed files with 15 additions and 10 deletions
+7 -8
View File
@@ -6,16 +6,15 @@ import { useAuthDispatch, useAuthState } from "@/stores/auth/auth-context";
import { LoadingIndicator } from "@/app/_components/core/loading-indicator"; import { LoadingIndicator } from "@/app/_components/core/loading-indicator";
import styles from "./splash-button.module.css"; import styles from "./splash-button.module.css";
export function SplashButton() { export interface SplashButtonProps {
onSkip: () => void;
}
export function SplashButton({ onSkip }: SplashButtonProps) {
const state = useAuthState(); const state = useAuthState();
const authDispatch = useAuthDispatch(); const authDispatch = useAuthDispatch();
const isLoading = state.isLoading; const isLoading = state.isLoading;
// Skip = 显式游客登录入口("以游客身份继续")
const handleSkip = () => {
authDispatch({ type: "AuthGuestLoginSubmitted" });
};
const handleFacebookLogin = () => { const handleFacebookLogin = () => {
authDispatch({ authDispatch({
type: "AuthFacebookLoginSubmitted", type: "AuthFacebookLoginSubmitted",
@@ -25,10 +24,10 @@ export function SplashButton() {
return ( return (
<div className={styles.wrapper}> <div className={styles.wrapper}>
{/* Skip 按钮 = 显式游客登录入口(派发 AuthGuestLoginSubmitted,不做路由跳转 */} {/* Skip 按钮 = 显式游客登录入口(派发事件 + 立即跳 /chat */}
<button <button
type="button" type="button"
onClick={handleSkip} onClick={onSkip}
disabled={isLoading} disabled={isLoading}
className={styles.skip} className={styles.skip}
> >
+6 -1
View File
@@ -21,6 +21,11 @@ export function SplashScreen() {
const authDispatch = useAuthDispatch(); const authDispatch = useAuthDispatch();
const userDispatch = useUserDispatch(); const userDispatch = useUserDispatch();
const handleSkip = () => {
authDispatch({ type: "AuthGuestLoginSubmitted" });
router.replace(ROUTES.chat);
};
// ───────────────────────────────────────────────────────────── // ─────────────────────────────────────────────────────────────
// useEffect ① 启动时检查 localStorage 里的 loginToken // useEffect ① 启动时检查 localStorage 里的 loginToken
// - loginTokenOAuth/email sync 写下的)→ 视为"已登录"跳 /chat // - loginTokenOAuth/email sync 写下的)→ 视为"已登录"跳 /chat
@@ -86,7 +91,7 @@ export function SplashScreen() {
<div className={styles.spacer} /> <div className={styles.spacer} />
<SplashContent /> <SplashContent />
<div className={styles.buttonArea}> <div className={styles.buttonArea}>
<SplashButton /> <SplashButton onSkip={handleSkip} />
</div> </div>
{/* {/*
* 登录错误提示 —— auth state machine 的 onError 会设 errorMessage * 登录错误提示 —— auth state machine 的 onError 会设 errorMessage
+2 -1
View File
@@ -134,7 +134,8 @@ export const authMachine = setup({
// 内联 assign —— XState v5 type inference 保留 loadingGuestLogin state 类型 // 内联 assign —— XState v5 type inference 保留 loadingGuestLogin state 类型
actions: assign({ actions: assign({
loginStatus: ({ event }) => event.output, loginStatus: ({ event }) => event.output,
pendingRedirect: true, // ← 显式登录成功 → splash / auth 看到跳 /chat // Skip 点击后已在 splash 里立即跳 /chatguest login 不再依赖 pendingRedirect。
pendingRedirect: false,
errorMessage: null, errorMessage: null,
}), }),
}, },