From 81cdb4afd99db615c9018286821ac8b45385a83c Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sat, 4 Oct 2025 15:32:29 +0800 Subject: [PATCH] feat: Chat.getIdForPrivate --- server/api/ChatApi.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/server/api/ChatApi.ts b/server/api/ChatApi.ts index 2f5e91f..6dd3402 100644 --- a/server/api/ChatApi.ts +++ b/server/api/ChatApi.ts @@ -7,6 +7,7 @@ import UserChatLinker from "../data/UserChatLinker.ts" import ApiManager from "./ApiManager.ts" import BaseApi from "./BaseApi.ts" import TokenManager from "./TokenManager.ts" +import ChatPrivate from "../data/ChatPrivate.ts"; export default class ChatApi extends BaseApi { override getName(): string { @@ -195,5 +196,39 @@ export default class ChatApi extends BaseApi { }, } }) + /** + * 獲取對話訊息 + * @param token 令牌 + * @param target 目標對用户 + */ + this.registerEvent("Chat.getIdForPrivate", (args, { deviceId }) => { + if (this.checkArgsMissing(args, ['token', 'target'])) return { + msg: "參數缺失", + code: 400, + } + + const token = TokenManager.decode(args.token as string) + if (!this.checkToken(token, deviceId)) return { + code: 401, + msg: "令牌無效", + } + const user = User.findById(token.author) as User + const targetUser = User.findById(args.target as string) as User + if (targetUser == null) { + return { + msg: "找不到用戶", + code: 404, + } + } + const chat = ChatPrivate.findOrCreateForPrivate(user, targetUser) + + return { + code: 200, + msg: '成功', + data: { + chat_id: chat.bean.id, + } + } + }) } } \ No newline at end of file