Merge branch 'dev' into test
This commit is contained in:
@@ -21,7 +21,7 @@ import { useEffect, useRef } from "react";
|
||||
import Image from "next/image";
|
||||
|
||||
import { useAuthState } from "@/stores/auth/auth-context";
|
||||
import type { LoginStatus } from "@/models/auth/login-status";
|
||||
import type { LoginStatus } from "@/data/dto/auth";
|
||||
import { AuthStorage } from "@/data/storage/auth/auth_storage";
|
||||
import { useChatDispatch, useChatState } from "@/stores/chat/chat-context";
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
import { useEffect, useRef } from "react";
|
||||
|
||||
import type { UiMessage } from "@/models/chat/ui-message";
|
||||
import type { UiMessage } from "@/data/dto/chat";
|
||||
|
||||
import { AiDisclosureBanner } from "./ai-disclosure-banner";
|
||||
import { DateHeader } from "./date-header";
|
||||
@@ -79,4 +79,4 @@ function renderMessagesWithDateHeaders(messages: readonly UiMessage[]) {
|
||||
/>
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,5 @@ export const AuthPanelMode = {
|
||||
Email: "email",
|
||||
} as const;
|
||||
|
||||
export type AuthPanelMode = (typeof AuthPanelMode)[keyof typeof AuthPanelMode];
|
||||
export type AuthPanelMode =
|
||||
(typeof AuthPanelMode)[keyof typeof AuthPanelMode];
|
||||
@@ -3,12 +3,15 @@
|
||||
*/
|
||||
|
||||
export * from "./apple_login_request";
|
||||
export * from "./auth_mode";
|
||||
export * from "./auth_panel_mode";
|
||||
export * from "./facebook_login_request";
|
||||
export * from "./facebook_user_data";
|
||||
export * from "./fb_id_login_request";
|
||||
export * from "./google_login_request";
|
||||
export * from "./guest_login_request";
|
||||
export * from "./guest_login_response";
|
||||
export * from "./login_status";
|
||||
export * from "./login_request";
|
||||
export * from "./login_response";
|
||||
export * from "./logout_response";
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* - loading-animation:AI 正在输入的动画
|
||||
* - message:实际消息
|
||||
*/
|
||||
import type { UiMessage } from "./ui-message";
|
||||
import type { UiMessage } from "./ui_message";
|
||||
|
||||
export type ChatListItem =
|
||||
| { type: "ai-disclosure" }
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
|
||||
export * from "./chat_history_response";
|
||||
export * from "./chat_list_item";
|
||||
export * from "./chat_message";
|
||||
export * from "./chat_send_response";
|
||||
export * from "./chat_sync_data";
|
||||
@@ -12,3 +13,4 @@ export * from "./image_upload_response";
|
||||
export * from "./send_message_request";
|
||||
export * from "./stt_data";
|
||||
export * from "./sync_message";
|
||||
export * from "./ui_message";
|
||||
|
||||
@@ -25,7 +25,12 @@ export const UiMessage = {
|
||||
create(input: Omit<UiMessage, "date"> & { date?: string }): UiMessage {
|
||||
return UiMessageSchema.parse({
|
||||
...input,
|
||||
date: input.date ?? new Date().toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }),
|
||||
date:
|
||||
input.date ??
|
||||
new Date().toLocaleTimeString([], {
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
}),
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -10,3 +10,4 @@ export * from "./recent_memory";
|
||||
export * from "./update_profile_request";
|
||||
export * from "./user";
|
||||
export * from "./user_stats_response";
|
||||
export * from "./user_view";
|
||||
|
||||
@@ -20,6 +20,4 @@ export const UserViewSchema = z.object({
|
||||
stripeCustomerId: z.string().nullable(),
|
||||
});
|
||||
|
||||
|
||||
|
||||
export type UserView = z.infer<typeof UserViewSchema>;
|
||||
@@ -1,7 +0,0 @@
|
||||
/**
|
||||
* @file Automatically generated by barrelsby.
|
||||
*/
|
||||
|
||||
export * from "./auth-mode";
|
||||
export * from "./auth-panel-mode";
|
||||
export * from "./login-status";
|
||||
@@ -1,6 +0,0 @@
|
||||
/**
|
||||
* @file Automatically generated by barrelsby.
|
||||
*/
|
||||
|
||||
export * from "./chat-list-item";
|
||||
export * from "./ui-message";
|
||||
@@ -1,5 +0,0 @@
|
||||
/**
|
||||
* @file Automatically generated by barrelsby.
|
||||
*/
|
||||
|
||||
export * from "./user";
|
||||
@@ -4,7 +4,7 @@
|
||||
import { fromPromise } from "xstate";
|
||||
|
||||
import { AuthPlatform, type AuthProvider } from "@/lib/auth/auth_platform";
|
||||
import type { LoginStatus } from "@/models/auth/login-status";
|
||||
import type { LoginStatus } from "@/data/dto/auth";
|
||||
import { authRepository } from "@/data/repositories/auth_repository";
|
||||
import type { IAuthRepository } from "@/data/repositories/interfaces";
|
||||
import { AuthStorage } from "@/data/storage/auth/auth_storage";
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
* 事件名与原 Dart AuthEvent 对齐。
|
||||
*/
|
||||
import type { AuthProvider } from "@/lib/auth/auth_platform";
|
||||
import type { AuthMode } from "@/models/auth/auth-mode";
|
||||
import type { AuthPanelMode } from "@/models/auth/auth-panel-mode";
|
||||
import type { AuthMode, AuthPanelMode } from "@/data/dto/auth";
|
||||
|
||||
export type AuthEvent =
|
||||
// 内部 UI 事件
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
/**
|
||||
* Auth 状态机:State 形状 + 初始值
|
||||
*/
|
||||
import type { AuthMode } from "@/models/auth/auth-mode";
|
||||
import type { AuthPanelMode } from "@/models/auth/auth-panel-mode";
|
||||
import type { LoginStatus } from "@/models/auth/login-status";
|
||||
import type { AuthMode, AuthPanelMode, LoginStatus } from "@/data/dto/auth";
|
||||
|
||||
export interface AuthState {
|
||||
/** 当前面板模式(Facebook / Email) */
|
||||
|
||||
@@ -308,4 +308,4 @@ export const sendMessageWsActor = fromPromise<void, { content: string }>(
|
||||
);
|
||||
|
||||
// Re-export `UiMessage` type for the chat-machine.ts public API
|
||||
type UiMessage = import("@/models/chat/ui-message").UiMessage;
|
||||
type UiMessage = import("@/data/dto/chat").UiMessage;
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
* - `AuthStorage` import 已删(只 `readInitData` 用过,移到 `chatInit` actor 上层调用)
|
||||
*/
|
||||
|
||||
import type { UiMessage } from "@/models/chat/ui-message";
|
||||
import type { UiMessage } from "@/data/dto/chat";
|
||||
import { chatRepository } from "@/data/repositories/chat_repository";
|
||||
import type { IChatRepository } from "@/data/repositories/interfaces";
|
||||
import { ChatStorage } from "@/data/storage/chat/chat_storage";
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* - `ChatWebSocketConnected` 事件 → true
|
||||
* - `userSession.exit` → false(WS actor cleanup 时也会跑 exit)
|
||||
*/
|
||||
import type { UiMessage } from "@/models/chat/ui-message";
|
||||
import type { UiMessage } from "@/data/dto/chat";
|
||||
|
||||
export interface ChatState {
|
||||
messages: UiMessage[];
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* User 状态机:事件联合
|
||||
*/
|
||||
import type { UserView } from "@/models/user/user";
|
||||
import type { UserView } from "@/data/dto/user";
|
||||
|
||||
export type UserEvent =
|
||||
| { type: "UserInit" }
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
import { fromPromise } from "xstate";
|
||||
|
||||
import type { UserView } from "@/models/user/user";
|
||||
import type { UserView } from "@/data/dto/user";
|
||||
import { userRepository } from "@/data/repositories/user_repository";
|
||||
import { authRepository } from "@/data/repositories/auth_repository";
|
||||
import type {
|
||||
@@ -70,4 +70,4 @@ export const userFetchActor = fromPromise<UserView | null>(async () => {
|
||||
*/
|
||||
export const userLogoutActor = fromPromise<void>(async () => {
|
||||
await authRepo.logout();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* - machine 依赖 actors(import)—— 不直接依赖 helpers
|
||||
*/
|
||||
|
||||
import type { UserView } from "@/models/user/user";
|
||||
import type { UserView } from "@/data/dto/user";
|
||||
import { UserStorage } from "@/data/storage/user/user_storage";
|
||||
import { Result } from "@/utils/result";
|
||||
|
||||
@@ -102,4 +102,4 @@ export async function readInitData(): Promise<InitData> {
|
||||
}
|
||||
|
||||
return { user, avatarUrl };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* User 状态机:State 形状 + 初始值
|
||||
*/
|
||||
import type { UserView } from "@/models/user/user";
|
||||
import type { UserView } from "@/data/dto/user";
|
||||
|
||||
export interface UserState {
|
||||
currentUser: UserView | null;
|
||||
|
||||
Reference in New Issue
Block a user