Идентификаторы 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

références_couleurs_jami