Идентификаторы Jami
В Jami есть много идентификаторов. Нам нужно объединить название этих идентификаторов между всеми реализациями.
Jami Infohash или Jami Public Key Fingerprint: отпечаток пальцев с публичным ключом, например
3d1112ab2bb089370c0744a44bb0786418d40b
Зарегистрированное имя: имя пользователя, связанное с Jami Infohash на блокчейне, например
jeandupont
URI: Jami или SIP URI, например
jami:3d1112ab2bb089370c0744a44bb0786418d40b
илиjami:jeandupont
или<sip:nnnnn@host:5060>
. Должен соответствовать [rfc3986]https://tools.ietf.org/html/rfc3986). Если это SIP URI, он должен соответствовать rfc3261#19.1.Канонический УРИ:
jami:3d1112ab2bb089370c0744a44bb0786418d40b
илиsip:nnnnn@host:5060
. Наиболее упрощенная форма УРИ. Регистрированное имя должно быть решено, не включает <> скобки или название дисплея.Идентификатор пользователя: зарегистрированное имя (предпочитаемое) или отпечаток пальца с открытым ключом.
Название дисплея или Название профиля: редактируемое пользовательское определение имени профиля, например
Jean Dupont
.
При отображении контакта:
_____
|photo| Display name or User ID
|_____| User ID
Если имя Display пусто, вместо него отображается идентификатор пользователя
Если обе строки имеют одинаковый содержание, отображается только первая строка
If no photo is available and a registered name (jami) or display name (sip) is available, the first letter of this name can be used to generate a placeholder. Otherwise a generic placeholder is used.
Если нет фотографии, можно использовать закладку с цветом фона, специфичным для Canonical URI:
final int[] contactColors = {
color.red_500, color.pink_500,
color.purple_500, color.deep_purple_500,
color.indigo_500, color.blue_500,
color.cyan_500, color.teal_500,
color.green_500, color.light_green_500,
color.grey_500, color.lime_500,
color.amber_500, color.deep_orange_500,
color.brown_500, color.blue_grey_500
};
int generateAvatarColor(String canonicalUri) {
if (isEmpty(canonicalUri))
return R.color.grey_500;
String h = md5(canonicalUri);
if (h == null)
return R.color.grey_500;
int colorIndex = Integer.parseInt(h.charAt(0) + "", 16);
return contactColors[colorIndex % contactColors.length];
}
Цветные значения из палитра материалов: https://material.io/tools/color