Sincronización de perfil

Hay dos tipos de perfiles. El de la cuenta corriente y el de los contactos. Como esta tarjeta contiene información, como el avatar y el nombre de la pantalla, debe ser sincronizada lo antes posible. Pero, debe enviarse solo cuando sea necesario, para evitar transmisiones de datos innecesarias. El formato utilizado para almacenar los perfiles es un [vCard] (https://en.wikipedia.org/wiki/VCard) (https://datatracker.ietf.org/doc/html/rfc6350)

¿Dónde se almacenan los perfiles?

El mismo

Está en ${idPath_}/profile.vcf por ejemplo: .local/share/jami/xxxxxx/profile.vcf en GNU/Linux.

Contactos

Debido a que esta lógica todavía se gestiona por cliente, depende del cliente. Sin embargo, en Desktop, esto se unifica y se almacena en: ${idPath_}/profiles/${base64(uri)}.vcf

Cuando se envía un perfil

Llamadas

Al comienzo de una llamada, generalmente el cliente envía el vCard. Sin embargo, este método debe ser eliminado en favor del otro ubicado en el daemon.

Enviar a los dispositivos de contacto

Cuando se conecta a un nuevo dispositivo, se realiza un canal de sincronización o SIP. Cuando este canal está listo, comprobamos si necesitamos enviar el perfil. Para ello, se compara el hash del perfil con el de la caché (${cacheDir}/${accId}/vcard/sha3 como ~/.cache/jami/xxxxx/vcard/sha3en GNU/Linux), y se comprueba el archivo ${cacheDir}/${accId}/vcard/deviceId.

Dispositivos múltiples

Si se envía el perfil y el dispositivo es de la misma cuenta, se comprueban las conversaciones y se envían perfiles de todos los miembros. El nombre del canal será «${conversationId}/profile/${memberUri}.vcf». El comportamiento probado en daemon/test/unitTest/syncHistory/syncHistory.cpp