Identificadores Jami
Há muitos identificadores em Jami. Precisamos unificar o nomeamento desses identificadores entre todas as implementações. Esta página refere-se a vários tipos de identificadores utilizados em Jami com exemplos relevantes.
Jami Infohash ou Jami Key Public Fingerprint: uma impressão digital de chave pública, como
3d1112ab2bb089370c0744a44bb0786418d40b
Nome registrado: um nome de usuário associado a um Jami Infohash na blockchain, como
jeandupont
URI: um URI Jami ou SIP, como
jami:3d1112ab2bb089370c0744a44bbbb0786418d40b
oujami:jeandupont
ou<sip:nnnnn@host:5060>
. Deve estar em conformidade com [rfc3986] (https://tools.ietf.org/html/rfc3986). Se for um URI SIP, deve estar em conformidade com rfc3261#19.1.URI canônico:
jami:3d1112ab2bb089370c0744a44bbbb0786418d40b
ousip:nnnnn@host:5060
. A forma mais simplificada do URI. O nome registrado deve ser resolvido, não inclui <> colchetes ou nome de exibição. Prefixado com o esquema (jami:
ousip:
ousips:
).ID do utilizador: nome registado (preferencial) ou impressão digital da chave pública. Identificador voltado para o utilizador para uma chave pública de conta.
Nome de exibição ou Nome de perfil: um nome de perfil definido por utilizador que pode ser editado, como
Jean Dupont
.
Ao exibir um contato:
_____
|photo| Display name or User ID
|_____| User ID
Se o nome do Display estiver vazio, o ID do usuário será exibido em vez disso
Se ambas as linhas tiverem o mesmo conteúdo, apenas a primeira linha é exibida
Se nenhuma foto estiver disponível e um nome registrado (jami) ou nome de exibição (sip) estiver disponível, a primeira letra desse nome poderá ser usada para gerar um espaço reservado. Caso contrário, será usado um espaço reservado genérico.
Se não estiver disponível nenhuma foto, pode ser utilizado um marcador de espaço com uma cor de fundo específica do URI Canonical:
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];
}
Os valores de cor são da paleta de materiais: https://material.io/tools/color