Compare commits

...

2 Commits

Author SHA1 Message Date
CrescentLeaf
6e0a89f861 允许设定获取的消息的最大限制 2026-01-01 16:02:14 +08:00
CrescentLeaf
c423117ad5 忽略 mdui_patched 的代码统计 2026-01-01 15:54:11 +08:00
5 changed files with 13 additions and 8 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
mdui_patched/** linguist-vendored -diff

View File

@@ -81,24 +81,25 @@ export default class Chat extends BaseClientObject {
* 对话消息 * 对话消息
* ================================================ * ================================================
*/ */
async getMessages(args: { page?: number, offset?: number }) { async getMessages(args: { page?: number, offset?: number, limit?: number }) {
return (await this.getMessageBeans(args)).map((v) => new Message(this.client, v)) return (await this.getMessageBeans(args)).map((v) => new Message(this.client, v))
} }
async getMessagesOrThrow(args: { page?: number, offset?: number }) { async getMessagesOrThrow(args: { page?: number, offset?: number, limit?: number }) {
return (await this.getMessageBeansOrThrow(args)).map((v) => new Message(this.client, v)) return (await this.getMessageBeansOrThrow(args)).map((v) => new Message(this.client, v))
} }
async getMessageBeans(args: { page?: number, offset?: number }) { async getMessageBeans(args: { page?: number, offset?: number, limit?: number }) {
try { try {
return await this.getMessageBeansOrThrow(args) return await this.getMessageBeansOrThrow(args)
} catch (_) { } catch (_) {
return [] return []
} }
} }
async getMessageBeansOrThrow({ page, offset }: { page?: number, offset?: number }) { async getMessageBeansOrThrow({ page, offset, limit }: { page?: number, offset?: number, limit?: number }) {
const re = await this.client.invoke("Chat.getMessageHistory", { const re = await this.client.invoke("Chat.getMessageHistory", {
token: this.client.access_token, token: this.client.access_token,
page, page,
offset, offset,
limit,
target: this.bean.id, target: this.bean.id,
}) })
if (re.code == 200) return re.data!.messages as MessageBean[] if (re.code == 200) return re.data!.messages as MessageBean[]

View File

@@ -60,4 +60,6 @@ export const CallableMethodBeforeAuth = [
"User.register", "User.register",
"User.login", "User.login",
"User.refreshAccessToken", "User.refreshAccessToken",
] ]
export const PageFetchMaxLimit = 15

View File

@@ -116,7 +116,7 @@ export default class ChatApi extends BaseApi {
code: 200, code: 200,
msg: "成功", msg: "成功",
data: { data: {
messages: MessagesManager.getInstanceForChat(chat)[args.page ? 'getMessagesWithPage' : 'getMessagesWithOffset'](null, (args.page ? args.page : args.offset) as number), messages: MessagesManager.getInstanceForChat(chat)[args.page ? 'getMessagesWithPage' : 'getMessagesWithOffset'](args.limit as number | undefined, (args.page ? args.page : args.offset) as number),
}, },
} }
}) })

View File

@@ -6,6 +6,7 @@ import chalk from "chalk"
import config from "../config.ts" import config from "../config.ts"
import Chat from "./Chat.ts" import Chat from "./Chat.ts"
import MessageBean from "./MessageBean.ts" import MessageBean from "./MessageBean.ts"
import { PageFetchMaxLimit } from "lingchair-internal-shared"
export default class MessagesManager { export default class MessagesManager {
static database: DatabaseSync = this.init() static database: DatabaseSync = this.init()
@@ -60,13 +61,13 @@ export default class MessagesManager {
}) })
} }
getMessagesWithOffset(limit: number | undefined | null, offset: number = 0) { getMessagesWithOffset(limit: number | undefined | null, offset: number = 0) {
const ls = MessagesManager.database.prepare(`SELECT * FROM ${this.getTableName()} ORDER BY id DESC LIMIT ? OFFSET ?;`).all(limit || 15, offset) as unknown as MessageBean[] const ls = MessagesManager.database.prepare(`SELECT * FROM ${this.getTableName()} ORDER BY id DESC LIMIT ? OFFSET ?;`).all(limit || PageFetchMaxLimit, offset) as unknown as MessageBean[]
return ls.map((v) => ({ return ls.map((v) => ({
...v, ...v,
chat_id: this.chat.bean.id, chat_id: this.chat.bean.id,
})) }))
} }
getMessagesWithPage(limit: number | undefined | null, page: number = 0) { getMessagesWithPage(limit: number | undefined | null, page: number = 0) {
return this.getMessagesWithOffset(limit, (limit || 15) * page) return this.getMessagesWithOffset(limit, (limit || PageFetchMaxLimit) * page)
} }
} }