jamiaccount: improve vCard synchronization

Because of the ConnectionManager, the daemon is now able to send
direct messages such as typing indications and read status. This
can be also used to move current features and improve it.

This patch is a first step to improve vCard syncing. The idea is
to send the vCard directly when a peer is connected. To avoid to
send the vCard everytime, a state is written in the cache directory.

In the future, a method to update the vCard as soon as the client
updates its profile will be possible.

Change-Id: I3801cbe04b3441f67ea6685aa2047e5a545958e5
This commit is contained in:
Sébastien Blin
2020-05-26 14:17:05 -04:00
parent 60926a6630
commit 6541f8bb60
19 changed files with 422 additions and 191 deletions

View File

@ -35,6 +35,7 @@ public:
virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*message_id*/, const std::string& /*from*/, const std::map<std::string, std::string>& /*payload*/){}
virtual void accountMessageStatusChanged(const std::string& /*account_id*/, uint64_t /*message_id*/, const std::string& /*to*/, int /*state*/){}
virtual void profileReceived(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*vCard*/){}
virtual void composingStatusChanged(const std::string& /*account_id*/, const std::string& /*from*/, int /*state*/){}
virtual void knownDevicesChanged(const std::string& /*account_id*/, const std::map<std::string, std::string>& /*devices*/){}
virtual void exportOnRingEnded(const std::string& /*account_id*/, int /*state*/, const std::string& /*pin*/){}
@ -243,6 +244,7 @@ public:
virtual void historyChanged(void){}
virtual void stunStatusFailure(const std::string& account_id){}
virtual void accountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
virtual void profileReceived(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*vCard*/) {}
virtual void registrationStateChanged(const std::string& account_id, const std::string& state, int code, const std::string& detail_str){}
virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*message_id*/, const std::string& /*from*/, const std::map<std::string, std::string>& /*payload*/){}

View File

@ -264,6 +264,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM
exportable_callback<ConfigurationSignal::Error>(bind(&ConfigurationCallback::errorAlert, confM, _1)),
exportable_callback<ConfigurationSignal::IncomingAccountMessage>(bind(&ConfigurationCallback::incomingAccountMessage, confM, _1, _2, _3, _4 )),
exportable_callback<ConfigurationSignal::AccountMessageStatusChanged>(bind(&ConfigurationCallback::accountMessageStatusChanged, confM, _1, _2, _3, _4 )),
exportable_callback<ConfigurationSignal::ProfileReceived>(bind(&ConfigurationCallback::profileReceived, confM, _1, _2, _3 )),
exportable_callback<ConfigurationSignal::ComposingStatusChanged>(bind(&ConfigurationCallback::composingStatusChanged, confM, _1, _2, _3 )),
exportable_callback<ConfigurationSignal::IncomingTrustRequest>(bind(&ConfigurationCallback::incomingTrustRequest, confM, _1, _2, _3, _4 )),
exportable_callback<ConfigurationSignal::ContactAdded>(bind(&ConfigurationCallback::contactAdded, confM, _1, _2, _3 )),