Sincronização do perfil

Existem dois tipos de perfis. O da conta atual e o dos contactos. Como este vCard contém informações, como o avatar e o nome de apresentação, deve ser sincronizado o mais rapidamente possível. No entanto, deve ser enviado apenas quando necessário, para evitar transmissões de dados desnecessárias. O formato utilizado para armazenar os perfis é um vCard (https://datatracker.ietf.org/doc/html/rfc6350)

Onde estão armazenados os perfis?

Do próprio

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

Contactos

Uma vez que esta lógica continua a ser gerida por cliente, depende do cliente. No entanto, no Desktop, isto é unificado e armazenado em: ${idPath_}/profiles/${base64(uri)}.vcf

Quando um perfil é enviado

Chamadas

No início de uma chamada, geralmente o cliente envia o vCard. No entanto, este método deve ser removido em favor de outro localizado no daemon.

Enviar para os dispositivos do contacto

Quando se conecta a um novo dispositivo, é criado um canal SIP ou um canal de sincronização. Quando este canal está pronto, verificamos se é necessário enviar o perfil. Para isso, o hash do perfil é comparado com o que está na cache (${cacheDir}/${accId}/vcard/sha3 como ~/.cache/jami/xxxxx/vcard/sha3 no GNU/Linux), e o ficheiro ${cacheDir}/${accId}/vcard/deviceId é verificado). cf. JamiAccount::needToSendProfile(). Se não estiver presente, o perfil da conta é enviado. Normalmente, o nome do canal será «vcard://xxx» onde o emissor é quem envia o perfil.

Vários dispositivos

Se o perfil for enviado e o dispositivo for da mesma conta, as conversas são verificadas e enviamos perfis de todos os membros. O nome do canal será «\({conversationId}/profile/\){memberUri}.vcf». Comportamento testado em daemon/test/unitTest/syncHistory/syncHistory.cpp