feat: Add light/dark mode support with backend persistence
This commit is contained in:
@@ -70,6 +70,16 @@ class HistoryManager:
|
||||
except VerifyMismatchError:
|
||||
return None
|
||||
|
||||
def update_user_theme(self, user_id: str, theme: str) -> Optional[User]:
|
||||
"""Update the user's theme preference."""
|
||||
with self.get_session() as session:
|
||||
user = session.get(User, user_id)
|
||||
if user:
|
||||
user.theme_preference = theme
|
||||
session.commit()
|
||||
session.refresh(user)
|
||||
return user
|
||||
|
||||
def sync_user_from_oidc(self, email: str, display_name: Optional[str] = None) -> User:
|
||||
"""
|
||||
Synchronize a user from an OIDC provider.
|
||||
|
||||
@@ -14,6 +14,7 @@ class User(Base):
|
||||
username: Mapped[str] = mapped_column(String, unique=True, index=True)
|
||||
password_hash: Mapped[Optional[str]] = mapped_column(String, nullable=True)
|
||||
display_name: Mapped[Optional[str]] = mapped_column(String, nullable=True)
|
||||
theme_preference: Mapped[str] = mapped_column(String, default="light")
|
||||
|
||||
conversations: Mapped[List["Conversation"]] = relationship(back_populates="user", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user