diff --git a/backend/routes/account.py b/backend/routes/account.py index 02fd8d3..eb90569 100644 --- a/backend/routes/account.py +++ b/backend/routes/account.py @@ -53,7 +53,7 @@ def convert_user(user: User) -> dict: "verified": user.verified, "suspended": user.suspended or False, "suspension_reason": user.suspension_reason, - "deleted": user.deleted or False + "deleted": (user.deleted or user.suspended) or False # Treat suspended as deleted } @router.get("/check_auth") diff --git a/backend/routes/messaging.py b/backend/routes/messaging.py index 2af4a9a..7f321f2 100644 --- a/backend/routes/messaging.py +++ b/backend/routes/messaging.py @@ -164,8 +164,8 @@ def convert_message(msg: Message) -> dict: "username": reaction.user.display_name }) - # Handle deleted users - if msg.author.deleted: + # Handle deleted or suspended users + if msg.author.deleted or msg.author.suspended: username = f"Deleted User #{msg.author.id}" profile_picture = None verified = False @@ -222,8 +222,8 @@ def convert_dm_envelope(envelope: DMEnvelope) -> dict: db = next(get_db()) sender = db.query(User).filter(User.id == envelope.sender_id).first() - # Handle deleted users - if sender and sender.deleted: + # Handle deleted or suspended users + if sender and (sender.deleted or sender.suspended): sender_verified = False else: sender_verified = sender.verified if sender else False diff --git a/backend/routes/profile.py b/backend/routes/profile.py index 6e1cb52..04a38ea 100644 --- a/backend/routes/profile.py +++ b/backend/routes/profile.py @@ -131,7 +131,7 @@ async def get_user_profile( verified=current_user.verified, suspended=current_user.suspended or False, suspension_reason=current_user.suspension_reason, - deleted=current_user.deleted or False, + deleted=(current_user.deleted or current_user.suspended) or False, # Treat suspended as deleted ) @@ -160,7 +160,7 @@ async def list_users( verified=user.verified, suspended=user.suspended or False, suspension_reason=user.suspension_reason, - deleted=user.deleted or False, + deleted=(user.deleted or user.suspended) or False, # Treat suspended as deleted ).model_dump() for user in users ] @@ -282,6 +282,23 @@ async def get_user_by_username( _ensure_owner_unsuspended(user, db) + # Handle deleted or suspended users + if user.deleted or user.suspended: + return UserProfileResponse( + id=user.id, + username="deleted", + display_name="Deleted User", + profile_picture=None, + bio=None, + online=False, + last_seen=None, # Clear last seen timestamp + created_at=None, # Clear member since timestamp + verified=False, + suspended=False, + suspension_reason=None, + deleted=True + ) + return UserProfileResponse( id=user.id, username=user.username, @@ -294,7 +311,7 @@ async def get_user_by_username( verified=user.verified, suspended=user.suspended or False, suspension_reason=user.suspension_reason, - deleted=user.deleted or False, + deleted=(user.deleted or user.suspended) or False, # Treat suspended as deleted ) @router.get("/user/id/{user_id}") @@ -312,8 +329,8 @@ async def get_user_by_id( _ensure_owner_unsuspended(user, db) - # Handle deleted users - if user.deleted: + # Handle deleted or suspended users + if user.deleted or user.suspended: return UserProfileResponse( id=user.id, username="deleted",