Synchronisation de profil

Il existe deux types de profils. Celui pour le compte courant et celui des contacts. Comme cette carte v contient des informations, telles que l’avatar et le nom de l’affichage, elle doit être synchronisée dès que possible. Mais, elle doit être envoyée uniquement lorsque nécessaire, pour éviter les transmissions de données inutiles. Le format utilisé pour stocker les profils est une [vCard] (https://en.wikipedia.org/wiki/VCard) (https://datatracker.ietf.org/doc/html/rfc6350)

Où sont stockés les profils?

Autonomie

Il est dans ${idPath_}/profil.vcf par exemple: .local/share/jami/xxxxxx/profil.vcf sur GNU/Linux.

Contacts

Cette logique est toujours gérée par client, elle dépend du client. Cependant, sur Desktop, elle est unifiée et stockée dans: ${idPath_}/profiles/${base64(uri)}.vcf

Lorsqu’un profil est envoyé

Appels

Au début d’un appel, le client envoie généralement la vCard. Cependant, cette méthode doit être supprimée en faveur de l’autre situé dans le daemon.

Envoyer aux appareils de contact

Lors de la connexion à un nouveau périphérique, un canal de synchronisation ou un canal de synchronisation est effectué. Lorsque ce canal est prêt, nous vérifions si nous devons envoyer le profil. Pour ce faire, le hachage du profil est comparé à celui du cache (${cacheDir}/${accId}/vcard/sha3 comme ~/.cache/jami/xxxxx/vcard/sha3on GNU/Linux), et le fichier ${cacheDir}/${accId}/vcard/deviceId est vérifié.

Les appareils à multiples

Si le profil est envoyé et que l’appareil provient du même compte, les conversations sont vérifiées et nous envoyons les profils de tous les membres. Le nom du canal sera « ${conversationId}/profil/${memberUri}.vcf ». Le comportement testé dans daemon/test/unitTest/syncHistory/syncHistory.cpp