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/sha3
en 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