diff --git a/task_template/app/main.py b/task_template/app/main.py index e0eb6cd..41e7ee1 100644 --- a/task_template/app/main.py +++ b/task_template/app/main.py @@ -28,7 +28,7 @@ app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) -app.add_middleware(SessionMiddleware, secret_key=secrets.token_hex(32), max_age=None) +app.add_middleware(SessionMiddleware, secret_key=secrets.token_hex(32), max_age=3600) logger.info("Session middleware added") app.include_router(task_router) app.include_router(session_router) diff --git a/task_template/app/routers/session.py b/task_template/app/routers/session.py index 5f1dfe5..a759abd 100644 --- a/task_template/app/routers/session.py +++ b/task_template/app/routers/session.py @@ -1,5 +1,6 @@ from fastapi import Depends, Request, APIRouter from routers.router_models import SessionData +from grpc_server.queue_handler import queue_handler from typing import Dict import time import hashlib @@ -33,6 +34,7 @@ def get_session(request: Request) -> SessionData: ).hexdigest() request.session["key"] = session_id sessions[session_id] = SessionData(history=[], id=session_id) + logger.info("Session id here") logger.info(sessions[session_id]) return sessions[session_id] @@ -44,3 +46,16 @@ def clear_session(request: Request): else: sessions.pop(session_id) return True + +@router.get("/onLoad") +async def on_page_load( + request: Request, + session: SessionData = Depends(get_session), +): + sessionID = session.id + if sessionID in sessions: + queue_handler.clear_session(sessionID) + clear_session(request) + logger.info("Session already exists. Deleting and getting a new one") + else: + logger.info("New session created") \ No newline at end of file diff --git a/task_template/frontend_poetry/src/App.jsx b/task_template/frontend_poetry/src/App.jsx index ba54b43..5ba2535 100644 --- a/task_template/frontend_poetry/src/App.jsx +++ b/task_template/frontend_poetry/src/App.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import ConversationDisplay from "./components/ConversationDisplay"; import Dialogue from "./components/Dialogue"; import TaskDescription from "./components/TaskDescription"; @@ -8,6 +8,7 @@ import FeedbackForm from "./components/FeedbackForm"; import TutorialPopUp from './components/TutorialPopUp'; import ThemeForm from './components/ThemeForm'; import SurveyButton from './components/SurveyButton' +import axios from 'axios' import "./index.css"; const App = () => { @@ -18,6 +19,18 @@ const App = () => { const [theme, setTheme] = useState(""); const [isLoading, setIsLoading] = useState(false); + useEffect(() => { + const onPageLoad = async() => { + try { + await axios.get('/api/v1/session/onLoad'); + console.log("check session") + } catch (error) { + console.log(error) + } + } + onPageLoad(); + }, []) + const addMessage = (message) => { setMessages(prevMessages => prevMessages.concat(message)); };