Identificadores de Jami
Hay muchos identificadores en Jami. Necesitamos unificar el nombramiento de estos identificadores entre todas las implementaciones. Esta página hace referencia a varios tipos de identificadores utilizados en Jami con ejemplos relevantes.
Jami Infohash o Jami Key Fingerprint: una huella de la clave pública como
3d1112ab2bb089370c0744a44bb0786418d40b
Nombre registrado: un nombre de usuario asociado a un Jami Infohash en la cadena de bloques como
jeandupont
URI: un Jami o SIP URI como
jami:3d1112ab2bb089370c0744a44bb0786418d40b
ojami:jeandupont
o<sip:nnnnn@host:5060>
. Debe cumplir con [rfc3986]https://tools.ietf.org/html/rfc3986). Si es un SIP URI, debe cumplir con rfc3261#19.1.URI canónico:
jami:3d1112ab2bb089370c0744a44bb0786418d40b
osip:nnnnn@host:5060
. La forma más simplificada del URI. El nombre registrado debe resolverse, no incluye <> paréntesis ni nombre de visualización. Prefijado con el esquema (jami:
osip:
osips:
).Identificación de usuario: nombre registrado (preferido) o huella digital de la clave pública. Identificador orientado al usuario de una clave pública de la cuenta.
Nombre de pantalla o Nombre de perfil: un nombre de perfil definido por el usuario editable como
Jean Dupont
.
Cuando se muestre un contacto:
_____
|photo| Display name or User ID
|_____| User ID
Si el nombre de la pantalla está vacío, se muestra el ID de usuario en su lugar
Si ambas líneas tienen el mismo contenido, sólo se muestra la primera línea
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.
Si no hay fotografía disponible, se puede utilizar un marcador de lugar con un color de fondo específico de 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];
}
Los valores de color son de la paleta de materiales: https://material.io/tools/color
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡