agent-Specialization/static/src/stores/conversation.ts

52 lines
1.3 KiB
TypeScript

import { defineStore } from 'pinia';
export interface ConversationSummary {
id: string;
title: string;
updated_at: string | number;
total_messages?: number;
total_tools?: number;
}
interface ConversationState {
conversations: ConversationSummary[];
conversationsLoading: boolean;
hasMoreConversations: boolean;
loadingMoreConversations: boolean;
currentConversationId: string | null;
currentConversationTitle: string;
searchQuery: string;
searchTimer: ReturnType<typeof setTimeout> | null;
conversationsOffset: number;
conversationsLimit: number;
}
export const useConversationStore = defineStore('conversation', {
state: (): ConversationState => ({
conversations: [],
conversationsLoading: false,
hasMoreConversations: false,
loadingMoreConversations: false,
currentConversationId: null,
currentConversationTitle: '',
searchQuery: '',
searchTimer: null,
conversationsOffset: 0,
conversationsLimit: 20
}),
actions: {
resetConversations() {
this.conversations = [];
this.hasMoreConversations = false;
this.loadingMoreConversations = false;
this.conversationsOffset = 0;
},
cancelSearchTimer() {
if (this.searchTimer) {
clearTimeout(this.searchTimer);
this.searchTimer = null;
}
}
}
});