mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
STREAM_ASSIGNMENT_COLORS = [
|
|
"#76ce90",
|
|
"#fae589",
|
|
"#a6c7e5",
|
|
"#e79ab5",
|
|
"#bfd56f",
|
|
"#f4ae55",
|
|
"#b0a5fd",
|
|
"#addfe5",
|
|
"#f5ce6e",
|
|
"#c2726a",
|
|
"#94c849",
|
|
"#bd86e5",
|
|
"#ee7e4a",
|
|
"#a6dcbf",
|
|
"#95a5fd",
|
|
"#53a063",
|
|
"#9987e1",
|
|
"#e4523d",
|
|
"#c2c2c2",
|
|
"#4f8de4",
|
|
"#c6a8ad",
|
|
"#e7cc4d",
|
|
"#c8bebf",
|
|
"#a47462",
|
|
]
|
|
|
|
|
|
def pick_colors(
|
|
used_colors: set[str], color_map: dict[int, str], recipient_ids: list[int]
|
|
) -> dict[int, str]:
|
|
used_colors = set(used_colors)
|
|
recipient_ids = sorted(recipient_ids)
|
|
result = {}
|
|
|
|
other_recipient_ids = []
|
|
for recipient_id in recipient_ids:
|
|
if recipient_id in color_map:
|
|
color = color_map[recipient_id]
|
|
result[recipient_id] = color
|
|
used_colors.add(color)
|
|
else:
|
|
other_recipient_ids.append(recipient_id)
|
|
|
|
available_colors = [s for s in STREAM_ASSIGNMENT_COLORS if s not in used_colors]
|
|
|
|
for i, recipient_id in enumerate(other_recipient_ids):
|
|
if i < len(available_colors):
|
|
color = available_colors[i]
|
|
else:
|
|
# We have to start reusing old colors, and we use recipient_id
|
|
# to choose the color.
|
|
color = STREAM_ASSIGNMENT_COLORS[recipient_id % len(STREAM_ASSIGNMENT_COLORS)]
|
|
result[recipient_id] = color
|
|
|
|
return result
|