46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
"use client";
|
|
|
|
/**
|
|
* IChatRepository 接口
|
|
*
|
|
* 对齐 Dart 端 `ChatRepository` 抽象(lib/data/repositories/chat_repository.dart):
|
|
* - 远程:发送消息、获取历史
|
|
* - 本地:写入 / 批量覆盖 / 读取 / 清空 / 计数
|
|
*
|
|
* 私有助手(`_chatToLocal` / `_localToChat` / `_mapLocalStorageResult`)不暴露。
|
|
* 原始 Dart: lib/data/repositories/chat_repository_impl.dart
|
|
*/
|
|
|
|
import type { Result } from "@/utils";
|
|
import type {
|
|
ChatHistoryResponse,
|
|
ChatMessage,
|
|
ChatSendResponse,
|
|
} from "@/data/dto/chat";
|
|
|
|
export interface IChatRepository {
|
|
/** 发送一条消息。 */
|
|
sendMessage(
|
|
message: string,
|
|
options?: { image?: string; useWebSocket?: boolean },
|
|
): Promise<Result<ChatSendResponse>>;
|
|
|
|
/** 获取聊天历史,分页参数默认 limit=50, offset=0。 */
|
|
getHistory(limit?: number, offset?: number): Promise<Result<ChatHistoryResponse>>;
|
|
|
|
/** 把一条消息写入本地存储。 */
|
|
saveMessageToLocal(message: ChatMessage): Promise<Result<void>>;
|
|
|
|
/** 批量覆盖写入:先清空本地存储,再写入新列表。 */
|
|
saveMessagesToLocal(messages: readonly ChatMessage[]): Promise<Result<void>>;
|
|
|
|
/** 读取所有本地消息,按 dbId 升序。 */
|
|
getLocalMessages(): Promise<Result<ChatMessage[]>>;
|
|
|
|
/** 清空本地消息。 */
|
|
clearLocalMessages(): Promise<Result<void>>;
|
|
|
|
/** 获取本地消息数量。 */
|
|
getLocalMessageCount(): Promise<Result<number>>;
|
|
}
|