Compare commits
2 Commits
3514f87699
...
6e0a89f861
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e0a89f861 | ||
|
|
c423117ad5 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
mdui_patched/** linguist-vendored -diff
|
||||
@@ -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))
|
||||
}
|
||||
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))
|
||||
}
|
||||
async getMessageBeans(args: { page?: number, offset?: number }) {
|
||||
async getMessageBeans(args: { page?: number, offset?: number, limit?: number }) {
|
||||
try {
|
||||
return await this.getMessageBeansOrThrow(args)
|
||||
} catch (_) {
|
||||
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", {
|
||||
token: this.client.access_token,
|
||||
page,
|
||||
offset,
|
||||
limit,
|
||||
target: this.bean.id,
|
||||
})
|
||||
if (re.code == 200) return re.data!.messages as MessageBean[]
|
||||
|
||||
@@ -60,4 +60,6 @@ export const CallableMethodBeforeAuth = [
|
||||
"User.register",
|
||||
"User.login",
|
||||
"User.refreshAccessToken",
|
||||
]
|
||||
]
|
||||
|
||||
export const PageFetchMaxLimit = 15
|
||||
|
||||
@@ -116,7 +116,7 @@ export default class ChatApi extends BaseApi {
|
||||
code: 200,
|
||||
msg: "成功",
|
||||
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),
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
@@ -6,6 +6,7 @@ import chalk from "chalk"
|
||||
import config from "../config.ts"
|
||||
import Chat from "./Chat.ts"
|
||||
import MessageBean from "./MessageBean.ts"
|
||||
import { PageFetchMaxLimit } from "lingchair-internal-shared"
|
||||
|
||||
export default class MessagesManager {
|
||||
static database: DatabaseSync = this.init()
|
||||
@@ -60,13 +61,13 @@ export default class MessagesManager {
|
||||
})
|
||||
}
|
||||
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) => ({
|
||||
...v,
|
||||
chat_id: this.chat.bean.id,
|
||||
}))
|
||||
}
|
||||
getMessagesWithPage(limit: number | undefined | null, page: number = 0) {
|
||||
return this.getMessagesWithOffset(limit, (limit || 15) * page)
|
||||
return this.getMessagesWithOffset(limit, (limit || PageFetchMaxLimit) * page)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user