Anurag
version-2 initial version
5306da4
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<boolean>) => {
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<boolean>) => {
state.isSidebarVisible = action.payload;
},
setIsChangingChat: (state, action: PayloadAction<boolean>) => {
state.isChangingChat = action.payload;
},
setisUploadingEmbeddings: (state, action: PayloadAction<boolean>) => {
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;