Решение по TD-STYLE-ANALYZERS: LF — инструменты проекта (Python/Node) пишут LF, CRLF-.sh не работают на Linux CI (sh scripts/ci.sh), большинство файлов уже были LF. Добавлен .gitattributes (* text=auto eol=lf, бинарные исключения), .editorconfig переведён на lf, 1029 файлов конвертированы, git add --renormalize. Из индекса убраны закравшиеся archive/**/__pycache__/*.pyc.
39 lines
1.0 KiB
C#
39 lines
1.0 KiB
C#
using System.Text;
|
|
|
|
namespace Deal.Telegram.Dialogs;
|
|
|
|
/// <summary>
|
|
/// Детерминированный цвет диалога из палитры DIALOG_HUES.
|
|
/// </summary>
|
|
public static class DialogHue
|
|
{
|
|
private static readonly string[] Palette =
|
|
[
|
|
"#3b82f6",
|
|
"#38bdf8",
|
|
"#f472b6",
|
|
"#f59e0b",
|
|
"#a78bfa",
|
|
"#34d399",
|
|
"#fb7185",
|
|
"#22c55e",
|
|
];
|
|
|
|
/// <summary>
|
|
/// Цвет источника по id диалога и имени
|
|
/// </summary>
|
|
/// <param name="dialogId">Подписанный id диалога.</param>
|
|
/// <param name="name">Отображаемое имя (title/first_name); пустое — как в.</param>
|
|
/// <returns>Цвет палитры, hex "#rrggbb".</returns>
|
|
public static string Compute(string dialogId, string name)
|
|
{
|
|
int hash = 0;
|
|
foreach (Rune rune in (dialogId + name).EnumerateRunes())
|
|
{
|
|
hash = (hash * 31 + rune.Value) % Palette.Length;
|
|
}
|
|
|
|
return Palette[hash];
|
|
}
|
|
}
|