mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-10 07:46:02 +00:00
* feat: combine bot settings and bot log dialogs * perf: dialog style when creating bot * perf: bot creation dialog * feat: combine pipeline dialogs * perf: ui * perf: move buttons * perf: ui layout in pipeline detail dialog * perf: remove debug button from pipeline card * perf: open pipeline dialog after creating * perf: placeholder in send input * perf: no close dialog when save done * fix: linter errors
64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
import { httpClient } from '@/app/infra/http/HttpClient';
|
|
import {
|
|
BotLog,
|
|
GetBotLogsResponse,
|
|
} from '@/app/infra/http/requestParam/bots/GetBotLogsResponse';
|
|
|
|
export class BotLogManager {
|
|
private botId: string;
|
|
private callbacks: ((_: BotLog[]) => void)[] = [];
|
|
private intervalIds: number[] = [];
|
|
|
|
constructor(botId: string) {
|
|
this.botId = botId;
|
|
}
|
|
|
|
startListenServerPush() {
|
|
const timerNumber = setInterval(() => {
|
|
this.getLogList(-1, 50).then((response) => {
|
|
this.callbacks.forEach((callback) =>
|
|
callback(this.parseResponse(response)),
|
|
);
|
|
});
|
|
}, 3000);
|
|
this.intervalIds.push(Number(timerNumber));
|
|
}
|
|
|
|
stopServerPush() {
|
|
this.intervalIds.forEach((id) => clearInterval(id));
|
|
this.intervalIds = [];
|
|
}
|
|
|
|
subscribeLogPush(callback: (_: BotLog[]) => void) {
|
|
if (!this.callbacks.includes(callback)) {
|
|
this.callbacks.push(callback);
|
|
}
|
|
}
|
|
|
|
dispose() {
|
|
this.callbacks = [];
|
|
}
|
|
|
|
/**
|
|
* 获取日志页的基本信息
|
|
*/
|
|
private getLogList(next: number, count: number = 20) {
|
|
return httpClient.getBotLogs(this.botId, {
|
|
from_index: next,
|
|
max_count: count,
|
|
});
|
|
}
|
|
|
|
async loadFirstPage() {
|
|
return this.parseResponse(await this.getLogList(-1, 10));
|
|
}
|
|
|
|
async loadMore(position: number, total: number) {
|
|
return this.parseResponse(await this.getLogList(position, total));
|
|
}
|
|
|
|
private parseResponse(httpResponse: GetBotLogsResponse): BotLog[] {
|
|
return httpResponse.logs;
|
|
}
|
|
}
|