12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/graph_agent/reducers.rb', line 12
def add_messages(existing, new_messages)
existing = Array(existing)
new_messages = Array(new_messages)
existing_by_id = {}
existing.each_with_index do |msg, idx|
if msg.is_a?(Hash) && msg[:id]
existing_by_id[msg[:id]] = idx
end
end
result = existing.dup
new_messages.each do |msg|
if msg.is_a?(Hash) && msg[:id] && existing_by_id.key?(msg[:id])
result[existing_by_id[msg[:id]]] = msg
else
result << msg
end
end
result
end
|