Identificadores Jami
Existem muitos identificadores no Jami. Precisamos de unificar a nomenclatura destes identificadores entre todas as implementações. Esta página faz referência a vários tipos de identificadores usados no Jami com exemplos relevantes.
Jami Infohash ou Jami public key fingerprint : uma impressão digital de chave pública, como
3d1112ab2bb089370c0744a44bbbb0786418d40b
Nome registado: um nome de utilizador associado a um Jami Infohash na blockchain, tal como
jeandupont
URI: um URI Jami ou SIP tal como
jami:3d1112ab2bb089370c0744a44bbbb0786418d40b
oujami:jeandupont
ou<sip:nnnnn@host:5060>
. Deve estar em conformidade com rfc3986. Se for um URI SIP, deve estar em conformidade com rfc3261#19.1.URI canónico:
jami:3d1112ab2bb089370c0744a44bbbb0786418d40b
orsip:nnnnn@host:5060
. A forma mais simplificada do URI. O nome registado deve ser resolvido, não inclui <> parênteses 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 apresentação ou Nome de perfil: um nome de perfil editável definido pelo utilizador, como
Jean Dupont
.
Ao mostrar um contacto:
_____
|photo| Display name or User ID
|_____| User ID
Se o nome de apresentação estiver vazio, é apresentado o ID de utilizador
Se ambas as linhas tiverem o mesmo conteúdo, apenas a primeira linha é mostrada
Se não estiver disponível nenhuma fotografia e estiver disponível um nome de registo (jami) ou um nome de apresentação (sip), a primeira letra desse nome pode ser utilizada para gerar um marcador de posição. Caso contrário, é utilizado um marcador de posição genérico.
Se não estiver disponível nenhuma fotografia, pode ser utilizado um marcador de posição com uma cor de fundo específica do URI canónico:
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 das cores são da paleta de materiais: https://material.io/tools/color