refactor: walk chat message history by map key (#28034)
`get_message_list` moves through `messages_map` by key but tracked each message's own `id` field, which the message body does not have to carry. Track the key instead.
This commit is contained in:
1 parent
80d2f4154a
commit
5c79ccc9e5
1 file changed
+6
-11
@@ -148,18 +148,13 @@ def get_message_list(messages_map, message_id):
|
|||||||
message_list = []
|
message_list = []
|
||||||
visited_message_ids = set()
|
visited_message_ids = set()
|
||||||
|
|
||||||
while current_message:
|
# Track the map keys, not the messages' own 'id' field: a message may omit it
|
||||||
message_id = current_message.get('id')
|
while current_message and message_id not in visited_message_ids:
|
||||||
if message_id in visited_message_ids:
|
visited_message_ids.add(message_id)
|
||||||
# Cycle detected, break to prevent infinite loop
|
|
||||||
break
|
|
||||||
|
|
||||||
if message_id is not None:
|
|
||||||
visited_message_ids.add(message_id)
|
|
||||||
|
|
||||||
message_list.append(current_message)
|
message_list.append(current_message)
|
||||||
parent_id = current_message.get('parentId') # Use .get() for safety
|
|
||||||
current_message = messages_map.get(parent_id) if parent_id else None
|
message_id = current_message.get('parentId')
|
||||||
|
current_message = messages_map.get(message_id) if message_id else None
|
||||||
|
|
||||||
message_list.reverse()
|
message_list.reverse()
|
||||||
return message_list
|
return message_list
|
||||||
|
|||||||
Reference in new issue
Block a user