refactor(chat): remove legacy screen visibility events and use absolute state refs
- Remove ChatScreenVisible and ChatScreenInvisible events from chat state machine - Remove legacy ChatInit event handler - Migrate state transitions to use absolute references (#chat.guestSession, #chat.userSession, #chat.idle) - Adjust legal text wording for Cozsweet privacy agreement
This commit is contained in:
@@ -32,14 +32,14 @@ export function AuthLegalText() {
|
||||
{checked ? <span className={styles.checkboxInner} /> : null}
|
||||
</button>
|
||||
<p className={styles.text}>
|
||||
I agree to the{" "}
|
||||
I agree to the Cozsweet {" "}
|
||||
<a
|
||||
href={AppConstants.privacyPolicyUrl}
|
||||
className={styles.link}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
Cozsweet Privacy Agreement
|
||||
Privacy Agreement
|
||||
</a>{" "}
|
||||
and{" "}
|
||||
<a
|
||||
|
||||
@@ -96,10 +96,8 @@ export function ChatScreen() {
|
||||
// 屏幕生命周期 + 派初次鉴权生命周期事件
|
||||
// ─────────────────────────────────────────────────────────────
|
||||
useEffect(() => {
|
||||
chatDispatch({ type: "ChatScreenVisible" });
|
||||
dispatchAuthLifecycle(authState.loginStatus, chatDispatch);
|
||||
return () => {
|
||||
chatDispatch({ type: "ChatScreenInvisible" });
|
||||
};
|
||||
// 注:mount useEffect 故意**不**依赖 loginStatus —— 首次 mount 时机是固定的
|
||||
// ("用户进 /chat 那一刻"),loginStatus 由 splash/auth-screen 提前 settle。
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
export type ChatEvent =
|
||||
// 内部 UI 事件
|
||||
| { type: "ChatInit" }
|
||||
| { type: "ChatScreenVisible" }
|
||||
| { type: "ChatScreenInvisible" }
|
||||
// 鉴权生命周期(**用户**显式触发登录后由 chat-screen 派)
|
||||
| { type: "ChatGuestLogin" }
|
||||
| { type: "ChatNonGuestLogin"; token: string }
|
||||
|
||||
@@ -297,10 +297,8 @@ export const chatMachine = setup({
|
||||
// ─────────────────────────────────────────────────────────────
|
||||
idle: {
|
||||
on: {
|
||||
ChatGuestLogin: "guestSession",
|
||||
ChatNonGuestLogin: "userSession",
|
||||
// 兼容旧事件(**无**资源 —— 旧 chat-screen 还在派 ChatInit)
|
||||
ChatInit: "guestSession",
|
||||
ChatGuestLogin: "#chat.guestSession",
|
||||
ChatNonGuestLogin: "#chat.userSession",
|
||||
ChatLoadMoreHistory: "loadingMoreHistory", // 旧逻辑保留(翻历史用)
|
||||
},
|
||||
},
|
||||
@@ -345,10 +343,9 @@ export const chatMachine = setup({
|
||||
actions: "appendUserImage",
|
||||
},
|
||||
ChatLoadMoreHistory: "loadingMore",
|
||||
ChatScreenInvisible: "idle", // 屏不可见 → idle
|
||||
ChatLogout: "idle", // 登出 → idle
|
||||
ChatLogout: "#chat.idle", // 登出 → idle
|
||||
// 跨态(游客 → email)
|
||||
ChatNonGuestLogin: "userSession",
|
||||
ChatNonGuestLogin: "#chat.userSession",
|
||||
ChatAISentenceReceived: {
|
||||
actions: "appendOrUpdateAISentence",
|
||||
},
|
||||
@@ -426,10 +423,9 @@ export const chatMachine = setup({
|
||||
actions: "appendUserImage",
|
||||
},
|
||||
ChatLoadMoreHistory: "loadingMore",
|
||||
ChatScreenInvisible: "idle", // 屏不可见 → idle(cleanup WS via parent state exit)
|
||||
ChatLogout: "idle", // 登出 → idle(cleanup WS)
|
||||
ChatLogout: "#chat.idle", // 登出 → idle(cleanup WS)
|
||||
// 跨态(email → 游客)
|
||||
ChatGuestLogin: "guestSession",
|
||||
ChatGuestLogin: "#chat.guestSession",
|
||||
ChatAISentenceReceived: {
|
||||
actions: "appendOrUpdateAISentence",
|
||||
},
|
||||
@@ -501,10 +497,9 @@ export const chatMachine = setup({
|
||||
actions: "appendUserImage",
|
||||
},
|
||||
ChatLoadMoreHistory: "loadingMoreHistory",
|
||||
ChatScreenInvisible: "idle",
|
||||
ChatLogout: "idle",
|
||||
ChatGuestLogin: "guestSession",
|
||||
ChatNonGuestLogin: "userSession",
|
||||
ChatLogout: "#chat.idle",
|
||||
ChatGuestLogin: "#chat.guestSession",
|
||||
ChatNonGuestLogin: "#chat.userSession",
|
||||
ChatAISentenceReceived: {
|
||||
actions: "appendOrUpdateAISentence",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user