Merge pull request #139 from covespace/history_in_page
Refactor historyMessages and historyMessagesBase
This commit is contained in:
commit
8678183865
@ -1,14 +1,25 @@
|
||||
import * as vscode from 'vscode';
|
||||
import { MessageHandler } from './messageHandler';
|
||||
import { regInMessage, regOutMessage } from '../util/reg_messages';
|
||||
import { historyMessagesBase, onApiKeyBase } from './historyMessagesBase';
|
||||
import { historyMessagesBase, LoadHistoryMessages, loadTopicHistoryFromCurrentMessageHistory, onApiKeyBase } from './historyMessagesBase';
|
||||
import messageHistory from '../util/messageHistory';
|
||||
import { TopicManager } from '../topic/topicManager';
|
||||
import { UiUtilWrapper } from '../util/uiUtil';
|
||||
|
||||
|
||||
|
||||
regInMessage({command: 'historyMessages', options: { skip: 0, maxCount: 0 }});
|
||||
regInMessage({command: 'historyMessages', page: 0});
|
||||
regOutMessage({command: 'loadHistoryMessages', entries: [{hash: '',user: '',date: '',request: '',response: '',context: [{content: '',role: ''}]}]});
|
||||
export async function historyMessages(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise<void> {
|
||||
const historyMessage = await historyMessagesBase();
|
||||
export async function historyMessages(message: {command: string, page: number}, panel: vscode.WebviewPanel|vscode.WebviewView): Promise<void> {
|
||||
// if history message has load, send it to webview
|
||||
const maxCount = Number(UiUtilWrapper.getConfiguration('DevChat', 'maxLogCount'));
|
||||
const skip = maxCount * (message.page ? message.page : 0);
|
||||
|
||||
if (messageHistory.getTopic() !== TopicManager.getInstance().currentTopicId) {
|
||||
await historyMessagesBase();
|
||||
}
|
||||
|
||||
const historyMessage = loadTopicHistoryFromCurrentMessageHistory(skip, maxCount);
|
||||
if (historyMessage) {
|
||||
MessageHandler.sendMessage(panel, historyMessage);
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import { logger } from '../util/logger';
|
||||
|
||||
let isApiSet: boolean | undefined = undefined;
|
||||
|
||||
interface LoadHistoryMessages {
|
||||
export interface LoadHistoryMessages {
|
||||
command: string;
|
||||
entries: Array<LogEntry>;
|
||||
}
|
||||
@ -77,6 +77,7 @@ export async function loadTopicHistoryLogs() : Promise<Array<LogEntry> | undefin
|
||||
|
||||
export function updateCurrentMessageHistory(logEntries: Array<LogEntry>): void {
|
||||
messageHistory.clear();
|
||||
messageHistory.setTopic(TopicManager.getInstance().currentTopicId!);
|
||||
|
||||
for (let i = 0; i < logEntries.length; i++) {
|
||||
let entryOld = logEntries[i];
|
||||
@ -86,15 +87,35 @@ export function updateCurrentMessageHistory(logEntries: Array<LogEntry>): void {
|
||||
request: entryOld.request,
|
||||
text: entryOld.response,
|
||||
user: entryOld.user,
|
||||
parentHash: '',
|
||||
parentHash: entryOld.parent,
|
||||
context: entryOld.context,
|
||||
};
|
||||
if (i > 0) {
|
||||
entryNew.parentHash = logEntries[i - 1].hash;
|
||||
}
|
||||
messageHistory.add(entryNew);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export function loadTopicHistoryFromCurrentMessageHistory(skip: number, count: number): LoadHistoryMessages {
|
||||
const logEntries = messageHistory.getList();
|
||||
const newEntries = logEntries.map((entry) => {
|
||||
return {
|
||||
hash: entry.hash,
|
||||
parent: entry.parentHash,
|
||||
user: entry.user,
|
||||
date: entry.date,
|
||||
request: entry.request,
|
||||
response: entry.text,
|
||||
context: entry.context,
|
||||
} as LogEntry;
|
||||
});
|
||||
|
||||
const logEntriesFlat = newEntries.reverse().slice(skip, skip + count).reverse();
|
||||
return {
|
||||
command: 'loadHistoryMessages',
|
||||
entries: logEntriesFlat,
|
||||
} as LoadHistoryMessages;
|
||||
}
|
||||
|
||||
export async function apiKeyInvalidMessage(): Promise<LoadHistoryMessages|undefined> {
|
||||
const apiKey = await ApiKeyManager.getApiKey();
|
||||
isApiSet = true;
|
||||
|
@ -2,10 +2,20 @@
|
||||
export class MessageHistory {
|
||||
private history: any[];
|
||||
private lastmessage: any | null;
|
||||
private topic: string | null;
|
||||
|
||||
constructor() {
|
||||
this.history = [];
|
||||
this.lastmessage = null;
|
||||
this.topic = null;
|
||||
}
|
||||
|
||||
setTopic(topic: string) {
|
||||
this.topic = topic;
|
||||
}
|
||||
|
||||
getTopic() {
|
||||
return this.topic;
|
||||
}
|
||||
|
||||
add(message: any) {
|
||||
@ -13,6 +23,10 @@ export class MessageHistory {
|
||||
this.lastmessage = message;
|
||||
}
|
||||
|
||||
getList() {
|
||||
return this.history;
|
||||
}
|
||||
|
||||
find(hash: string) {
|
||||
return this.history.find(message => message.hash === hash);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user