feat(private-room): connect moments feed
Docker Image / Build and Push Docker Image (push) Successful in 9m29s

This commit is contained in:
2026-07-08 16:29:08 +08:00
parent 77b496da2b
commit c46b9b4cdd
41 changed files with 3107 additions and 281 deletions
+9 -58
View File
@@ -1,63 +1,14 @@
"use client";
import { type Dispatch, useEffect, useRef } from "react";
import {
type UseGuestLoginBootstrapInput,
shouldSubmitGuestLogin,
useGuestLoginBootstrap,
} from "@/hooks/use-guest-login-bootstrap";
import type { LoginStatus } from "@/data/dto/auth";
import type { AuthEvent } from "@/stores/auth/auth-events";
export type UseChatGuestLoginInput = UseGuestLoginBootstrapInput;
export { shouldSubmitGuestLogin };
export interface GuestLoginState {
hasInitialized: boolean;
isLoading: boolean;
loginStatus: LoginStatus;
}
export interface ShouldSubmitGuestLoginInput extends GuestLoginState {
alreadyRequested: boolean;
}
export interface UseChatGuestLoginInput extends GuestLoginState {
dispatch: Dispatch<AuthEvent>;
}
export function shouldSubmitGuestLogin({
alreadyRequested,
hasInitialized,
isLoading,
loginStatus,
}: ShouldSubmitGuestLoginInput): boolean {
if (!hasInitialized || isLoading) return false;
if (loginStatus !== "notLoggedIn") return false;
return !alreadyRequested;
}
export function useChatGuestLogin({
dispatch,
hasInitialized,
isLoading,
loginStatus,
}: UseChatGuestLoginInput): void {
const guestLoginRequestedRef = useRef(false);
useEffect(() => {
if (!hasInitialized || isLoading) return;
if (loginStatus !== "notLoggedIn") {
guestLoginRequestedRef.current = false;
return;
}
if (
!shouldSubmitGuestLogin({
alreadyRequested: guestLoginRequestedRef.current,
hasInitialized,
isLoading,
loginStatus,
})
) {
return;
}
guestLoginRequestedRef.current = true;
dispatch({ type: "AuthGuestLoginSubmitted" });
}, [dispatch, hasInitialized, isLoading, loginStatus]);
export function useChatGuestLogin(input: UseChatGuestLoginInput): void {
useGuestLoginBootstrap(input);
}