Sincronización de perfil
Hay dos tipos de perfiles. El de la cuenta corriente y los de contactos. Como esta vCard contiene datos, como el avatar (la imagen de perfil) y el nombre para mostrar, debe sincronizarse lo antes posible. Pero solo debe enviarse cuando sea necesario para evitar transmisiones de datos innecesarias. El formato utilizado para almacenar los perfiles es un vCard (https://datatracker.ietf.org/doc/html/rfc6350).
¿Dónde se almacenan los perfiles?
El mismo
Está en el archivo ${idPath_}/profile.vcf
e.g.: .local/share/jami/xxxxxx/profile.vcf
en GNU/Linux.
Contactos
Debido a que esta lógica aún se administra por cliente, depende del cliente. Sin embargo, en el escritorio, esto se unifica y almacena en: ${idPath_}/profiles/${base64(uri)}.vcf
Cuando se envía un perfil
Llamadas
Al comienzo de una llamada, generalmente el cliente envía la vCard. Sin embargo, este método debería eliminarse en favor del otro ubicado en el demonio.
Enviar a los dispositivos de contacto
Al conectarse a nuevos dispositivos, se abre un canal SIP o sync. Cuando este canal esté listo, verificamos si necesitamos enviar el perfil. Para ello, el hash del perfil se compara con el de la caché (${cacheDir}/${accId}/vcard/sha3
like ~/.cache/jami/xxxxx/vcard/sha3
en GNU/Linux, y el archivo ${cacheDir}/${accId}/vcard/deviceId
está marcado). cf. JamiAccount::needToSendProfile()
. Si no está presente, se envía el perfil de la cuenta. Normalmente, el nombre del canal será “vcard://xxx”, donde el emisor es el que envía el perfil.
Múltiples dispositivos
Si se envía el perfil y el dispositivo es de la misma cuenta, se verifican las conversaciones y enviamos perfiles de todos los miembros. El nombre del canal será ${conversationId}/profile/${memberUri}.vcf
. Comportamiento probado en daemon/test/unitTest/syncHistory/syncHistory.cpp