File size: 1,666 Bytes
883d885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# app.py
import streamlit as st
from db import init_connection
from ui_pages import login_page, create_account_page, main_page
from chat import load_user_sessions   # import it here

from dotenv import load_dotenv
load_dotenv()

def app():
    # Initialize session state
    default_keys = {
        'logged_in': False,
        'username': "",
        'show_create_account': False,
        'messages': [],
        'current_chat_session': None,
        'chat_sessions': [],
        'last_session_id': None
    }
    for key, val in default_keys.items():
        if key not in st.session_state:
            st.session_state[key] = val

    # Initialize database connection (returns dict of collections)
    db_conn = init_connection()
    if db_conn is None:
        return

    # Route to appropriate page
    if st.session_state.logged_in:
        # load_user_sessions returns (sessions, current_session, messages_stub)
        sessions, current, messages = load_user_sessions(
            st.session_state.username,
            db_conn["sessions"],
            st.session_state.get("last_session_id")
        )
        st.session_state.chat_sessions = sessions
        st.session_state.current_chat_session = current
        # load chat messages if we have a current session
        if current:
            from chat import load_chat_history
            st.session_state.messages = load_chat_history(str(current["_id"]), db_conn["messages"])
        else:
            st.session_state.messages = []
        main_page()
    elif st.session_state.show_create_account:
        create_account_page()
    else:
        login_page()

if __name__ == "__main__":
    app()