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
Si no hay una foto disponible y hay disponible un nombre registrado (jami) o un nombre para mostrar (sip), se puede usar la primera letra de este nombre para generar un marcador de posición. De lo contrario, se utiliza un marcador de posición genérico.
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
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡