mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +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
 |