@@ -76,7 +76,6 @@ async def _broadcast_balance(chat_id: str, balance: int) -> None:
7676async def _broadcast_claim (chat_id : str , claimed_by_id : str | None , claimed_by_name : str | None ) -> None :
7777 payload = {
7878 "type" : "claim" ,
79- "claimed_by_id" : claimed_by_id ,
8079 "claimed_by_name" : claimed_by_name ,
8180 }
8281 await _broadcast_chat (chat_id , payload )
@@ -197,7 +196,7 @@ async def get_public_chat(categories_id: str, chat_id: str) -> ChatSession:
197196 chat = await get_chat_for_category (categories_id , chat_id )
198197 if not chat :
199198 raise ValueError ("Chat not found." )
200- return chat
199+ return _sanitize_public_chat ( chat )
201200
202201
203202def _ensure_participant (chat : ChatSession , sender_id : str , sender_name : str , sender_role : str ) -> None :
@@ -213,6 +212,20 @@ def _ensure_participant(chat: ChatSession, sender_id: str, sender_name: str, sen
213212 chat .participants .append (_serialize_participant (ChatParticipant (id = sender_id , name = sender_name , role = sender_role )))
214213
215214
215+ def _sanitize_public_chat (chat : ChatSession ) -> ChatSession :
216+ sanitized = chat .copy (deep = True )
217+ sanitized .claimed_by_id = None
218+ for participant in sanitized .participants :
219+ if participant .get ("role" ) == "admin" :
220+ name = participant .get ("name" ) or "admin"
221+ participant ["id" ] = f"admin-{ name } "
222+ for message in sanitized .messages :
223+ if message .get ("sender_role" ) == "admin" :
224+ name = message .get ("sender_name" ) or "admin"
225+ message ["sender_id" ] = f"admin-{ name } "
226+ return sanitized
227+
228+
216229async def _append_message (chat : ChatSession , message : ChatMessage , unread : bool ) -> ChatSession :
217230 payload = _serialize_message (message )
218231 chat .messages .append (payload )
0 commit comments