import { createSlice, PayloadAction } from "@reduxjs/toolkit"; export interface Message { role: string; content: string; timestamp: string; chatId: string; } interface ChatState { activeChatMessages: Message[]; activeChatContext: []; activeChatPrompt: string; savingPrompt: boolean; isListening: boolean; v2vChat: string; isSidebarVisible: boolean; isChangingChat: boolean; uploadingEmbeddings: boolean; } const initialState: ChatState = { activeChatMessages: [], activeChatContext: [], activeChatPrompt: "", savingPrompt: false, isListening: false, isSidebarVisible: true, isChangingChat: false, v2vChat: "", uploadingEmbeddings: false, }; export const chatSlice = createSlice({ name: "chat", initialState, reducers: { addMessage: (state, action) => { state.activeChatMessages.push(action.payload); }, setIsListening: (state, action: PayloadAction) => { state.isListening = action.payload; }, setActiveMessages: (state, action) => { state.isChangingChat = true; state.activeChatMessages = action.payload; state.isChangingChat = false; }, setActiveContext: (state, action) => { state.activeChatContext = action.payload; }, setActiveChatPrompt: (state, action) => { state.activeChatPrompt = action.payload; }, toggleSavingPrompt: (state) => { state.savingPrompt = !state.savingPrompt; }, toggleSidebar: (state) => { state.isSidebarVisible = !state.isSidebarVisible; }, setSidebarVisibility: (state, action: PayloadAction) => { state.isSidebarVisible = action.payload; }, setIsChangingChat: (state, action: PayloadAction) => { state.isChangingChat = action.payload; }, setisUploadingEmbeddings: (state, action: PayloadAction) => { state.uploadingEmbeddings = action.payload; }, setEmbeddingsText: (state, action) => { state.activeChatContext.push(action.payload); }, clearEmbeddings: (state) => { state.activeChatContext = []; }, clearActiveMessages: (state) => { state.activeChatMessages = []; }, }, }); export const { addMessage, setIsListening, setActiveMessages, toggleSidebar, setActiveContext, setSidebarVisibility, setIsChangingChat, setEmbeddingsText, clearEmbeddings, clearActiveMessages, setisUploadingEmbeddings, setActiveChatPrompt, toggleSavingPrompt, } = chatSlice.actions; export default chatSlice.reducer;