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 o jami: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 o sip: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: o sip: o sips:).

  • 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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡