Identifiants Jami
Il y a beaucoup d’identifiants dans Jami. Nous devons unifier le nom de ces identifiants entre toutes les implémentations. Cette page fait référence à différents types d’identifiants utilisés dans Jami avec des exemples pertinents.
Jami Infohash ou Jami Key Public Fingerprint: une empreinte digitale à clé publique telle que
3d1112ab2bb089370c0744a44bb0786418d40b
Nom enregistré: un nom d’utilisateur associé à un Jami Infohash sur la blockchain tel que
jeandupont
URI: un URI Jami ou SIP tel que
jami:3d1112ab2bb089370c0744a44bb0786418d40b
oujami:jeandupont
ou<sip:nnnnn@host:5060>
. Il doit être conforme à [rfc3986]https://tools.ietf.org/html/rfc3986). S’il s’agit d’un URI SIP, il doit être conforme à rfc3261#19.1.URI canonique:
jami:3d1112ab2bb089370c0744a44bb0786418d40b
ousip:nnnnn@host:5060
. La forme la plus simplifiée de l’URI. Le nom enregistré doit être résolu, ne comprend pas de parenthèses ou de nom d’affichage. Préfixé avec le schéma (jami:
ousip:
ousips:
).Identification utilisateur: nom enregistré (privé) ou empreinte digitale de clé publique. Identificateur d’utilisateur d’une clé publique de compte.
Nom d’affichage ou Nom de profil: un nom de profil éditable défini par l’utilisateur tel que
Jean Dupont
.
Lors de l’affichage d’un contact:
_____
|photo| Display name or User ID
|_____| User ID
Si le nom de l’affichage est vide, l’identifiant d’utilisateur est affiché à la place
Si les deux lignes ont le même contenu, seule la première ligne est affichée
Si aucune photo n’est disponible et qu’un nom enregistré (anneau) ou un nom d’affichage (sip) est disponible, la première lettre de ce nom peut être utilisée pour générer un placeholder.
Si aucune photo n’est disponible, un placeholder avec une couleur de fond spécifique à l’URI canonique peut être utilisé:
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];
}
Les valeurs de couleur sont tirées de la palette de matériaux: https://material.io/tools/color