Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 2 additions & 13 deletions backend/src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,8 @@ app.use(cors({
if (!origin) return callback(null, true);

const allowedOrigins = [
'https://contextual-chatbot-react.vercel.app',
'http://localhost:5173',
'http://localhost:3000',
'http://localhost:3001',
'https://contextual-chatbot-react.onrender.com',
// Add your Vercel domain for mobile access
'https://contextual-chatbot-react.vercel.app/',
'https://contextual-chatbot-react.vercel.app/login',
'https://contextual-chatbot-react.vercel.app/register',

'https://contextual-chatbot-react.vercel.app/chat',
'https://vercel.com/chetramyts-projects/contextual-chatbot-react',

'https://contextual-chatbot-react.vercel.app', // Your Vercel frontend
'http://localhost:5173', // Your local dev frontend
];

if (allowedOrigins.includes(origin)) {
Expand Down
4 changes: 4 additions & 0 deletions frontend/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@ import React, { useEffect } from 'react';
import MainRoutes from './routes/MainRoutes';
import { useDispatch } from 'react-redux';
import { setUserFromStorage } from '../src/redux/reducers/authSlice';
import { clearChatStore } from '../src/redux/reducers/chatSlice';

const App = () => {
const dispatch = useDispatch();

useEffect(() => {
// Clear chat store on app initialization to ensure clean state
dispatch(clearChatStore());

const user = localStorage.getItem('user');
if (user) {
dispatch(setUserFromStorage(JSON.parse(user)));
Expand Down
5 changes: 5 additions & 0 deletions frontend/src/redux/actions/authActions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import {
loginFailure,
logout as logoutAction,
} from "../reducers/authSlice";
import { clearChatStore } from "../reducers/chatSlice";


export const registerUser = async (dispatch, data) => {
dispatch(registerRequest());
try {
const response = await axios.post("/auth/register", data);
dispatch(registerSuccess(response.data.user));
dispatch(clearChatStore()); // Clear any existing chat data for new user
localStorage.setItem('user', JSON.stringify(response.data.user));
return { success: true };
} catch (error) {
Expand All @@ -30,6 +32,7 @@ export const loginUser = async (dispatch, data) => {
try {
const response = await axios.post("/auth/login", data);
dispatch(loginSuccess(response.data.user));
dispatch(clearChatStore()); // Clear any existing chat data for new user
localStorage.setItem('user', JSON.stringify(response.data.user));
return { success: true };
} catch (error) {
Expand All @@ -43,11 +46,13 @@ export const logoutUser = ()=>async (dispatch) => {
try {
await axios.get('/auth/logout');
dispatch(logoutAction());
dispatch(clearChatStore()); // Clear chat store when user logs out
localStorage.removeItem('user');
return { success: true };
} catch (error) {
console.error("Logout failed", error);
dispatch(logoutAction());
dispatch(clearChatStore()); // Clear chat store even if logout request fails
localStorage.removeItem('user');
return { success: false, error };
}
Expand Down
11 changes: 11 additions & 0 deletions frontend/src/redux/reducers/chatSlice.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ const chatSlice = createSlice({
setCharacter: (state, action) => {
state.character = action.payload;
},
// Clean up chat store when user logs out
clearChatStore: (state) => {
state.chats = [];
state.allMessages = [];
state.activeChatId = null;
state.loading = false;
state.error = null;
state.isModelTyping = {};
state.character = "atomic";
},
},
});

Expand All @@ -58,6 +68,7 @@ export const {
setActiveChatId,
setModelTyping,
setCharacter,
clearChatStore,
} = chatSlice.actions;

export default chatSlice.reducer;