From 442b6b44c1c942c0b3b7b4d55938689a2f042178 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk Date: Wed, 29 Jan 2020 17:29:14 -0500 Subject: [PATCH] accounts: emit signal when an avatar is received in JAMS response - adds signal for with base64 - handles incoming avatar during account authorization response in on success callback by emitting Change-Id: I8b6b9685691e1335b895a12c35ea14b53ec6260c --- bin/dbus/cx.ring.Ring.ConfigurationManager.xml | 10 ++++++++++ bin/dbus/dbusclient.cpp | 1 + bin/jni/configurationmanager.i | 2 ++ bin/jni/jni_interface.i | 3 ++- bin/nodejs/configurationmanager.i | 2 ++ configure.ac | 2 +- src/client/ring_signal.cpp | 2 +- src/dring/configurationmanager_interface.h | 4 ++++ src/jamidht/account_manager.h | 2 +- src/jamidht/jamiaccount.cpp | 3 ++- src/jamidht/server_account_manager.cpp | 3 +++ 11 files changed, 29 insertions(+), 5 deletions(-) diff --git a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml index b9e36ee0a..1952e59c5 100644 --- a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml +++ b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml @@ -249,6 +249,16 @@ + + + Notify clients when a newly created account's avatar image is available for storage. + + + + + + + Notify clients when a new device linked to this account is found. diff --git a/bin/dbus/dbusclient.cpp b/bin/dbus/dbusclient.cpp index 54ad7b1d0..183fde330 100644 --- a/bin/dbus/dbusclient.cpp +++ b/bin/dbus/dbusclient.cpp @@ -186,6 +186,7 @@ DBusClient::initLibrary(int flags) exportable_callback(bind(&DBusConfigurationManager::nameRegistrationEnded, confM, _1, _2, _3 )), exportable_callback(bind(&DBusConfigurationManager::registeredNameFound, confM, _1, _2, _3, _4 )), exportable_callback(bind(&DBusConfigurationManager::deviceRevocationEnded, confM, _1, _2, _3)), + exportable_callback(bind(&DBusConfigurationManager::accountAvatarReceived, confM, _1, _2)), exportable_callback(bind(&DBusConfigurationManager::certificatePinned, confM, _1 )), exportable_callback(bind(&DBusConfigurationManager::certificatePathPinned, confM, _1, _2 )), exportable_callback(bind(&DBusConfigurationManager::certificateExpired, confM, _1 )), diff --git a/bin/jni/configurationmanager.i b/bin/jni/configurationmanager.i index ecf7ca290..69428550a 100644 --- a/bin/jni/configurationmanager.i +++ b/bin/jni/configurationmanager.i @@ -58,6 +58,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + virtual void accountAvatarReceived(const std::string& /*accountId*/, const std::string& /*photo*/){} virtual void hardwareDecodingChanged(bool /*state*/){} virtual void hardwareEncodingChanged(bool /*state*/){} @@ -267,6 +268,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + virtual void accountAvatarReceived(const std::string& /*accountId*/, const std::string& /*photo*/){} virtual void hardwareDecodingChanged(bool /*state*/){} virtual void hardwareEncodingChanged(bool /*state*/){} diff --git a/bin/jni/jni_interface.i b/bin/jni/jni_interface.i index 002e05a0b..a497c0bb8 100644 --- a/bin/jni/jni_interface.i +++ b/bin/jni/jni_interface.i @@ -277,7 +277,8 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM exportable_callback(bind(&ConfigurationCallback::registeredNameFound, confM, _1, _2, _3, _4 )), exportable_callback(bind(&ConfigurationCallback::nameRegistrationEnded, confM, _1, _2, _3 )), exportable_callback(bind(&ConfigurationCallback::migrationEnded, confM, _1, _2)), - exportable_callback(bind(&ConfigurationCallback::deviceRevocationEnded, confM, _1, _2, _3)) + exportable_callback(bind(&ConfigurationCallback::deviceRevocationEnded, confM, _1, _2, _3)), + exportable_callback(bind(&ConfigurationCallback::accountAvatarReceived, confM, _1, _2)) }; // Presence event handlers diff --git a/bin/nodejs/configurationmanager.i b/bin/nodejs/configurationmanager.i index cfd32f28e..a9e7892e9 100644 --- a/bin/nodejs/configurationmanager.i +++ b/bin/nodejs/configurationmanager.i @@ -53,6 +53,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + virtual void accountAvatarReceived(const std::string& /*accountId*/, const std::string& /*photo*/){} virtual void hardwareDecodingChanged(bool /*state*/){} virtual void hardwareEncodingChanged(bool /*state*/){} @@ -249,6 +250,7 @@ public: virtual void migrationEnded(const std::string& /*accountId*/, const std::string& /*state*/){} virtual void deviceRevocationEnded(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/){} + virtual void accountAvatarReceived(const std::string& /*accountId*/, const std::string& /*photo*/){} virtual void hardwareDecodingChanged(bool /*state*/){} virtual void hardwareEncodingChanged(bool /*state*/){} diff --git a/configure.ac b/configure.ac index c3c188834..5eb5f87c5 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Jami - configure.ac for automake 1.9 and autoconf 2.59 dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([Jami Daemon],[9.0.0],[ring@gnu.org],[jami]) +AC_INIT([Jami Daemon],[9.1.0],[ring@gnu.org],[jami]) AC_COPYRIGHT([[Copyright (c) Savoir-faire Linux 2004-2019]]) AC_REVISION([$Revision$]) diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp index 0e8932287..94a85cbea 100644 --- a/src/client/ring_signal.cpp +++ b/src/client/ring_signal.cpp @@ -73,6 +73,7 @@ getSignalHandlers() exported_callback(), exported_callback(), exported_callback(), + exported_callback(), exported_callback(), #if defined(__ANDROID__) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS) exported_callback(), @@ -153,5 +154,4 @@ unregisterSignalHandlers() } } - } diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 4b659a6ad..87eea31f3 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -350,6 +350,10 @@ struct DRING_PUBLIC ConfigurationSignal { constexpr static const char* name = "DeviceRevocationEnded"; using cb_type = void(const std::string& /*accountId*/, const std::string& /*device*/, int /*status*/); }; + struct DRING_PUBLIC AccountAvatarReceived { + constexpr static const char* name = "AccountAvatarReceived"; + using cb_type = void(const std::string& /*accountId*/, const std::string& /*userPhoto*/); + }; /** * These are special getters for Android and UWP, so the daemon can retrieve * information only accessible through their respective platform APIs diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h index 24b021689..4a0b94428 100644 --- a/src/jamidht/account_manager.h +++ b/src/jamidht/account_manager.h @@ -49,6 +49,7 @@ struct AccountInfo { std::shared_ptr announce; std::string ethAccount; std::string username; + std::string photo; }; template @@ -177,7 +178,6 @@ public: */ static bool foundPeerDevice(const std::shared_ptr& crt, dht::InfoHash& account_id); - // Contact requests std::vector> getTrustRequests() const; diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index fafecd0ac..7b7a62b6e 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -1118,6 +1118,8 @@ JamiAccount::loadAccount(const std::string& archive_password, const std::string& fileutils::check_dir(idPath_.c_str(), 0700); + emitSignal(getAccountID(), info.photo); + // save the chain including CA auto id = info.identity; id.first = std::move(fDeviceKey.get()); @@ -3248,5 +3250,4 @@ JamiAccount::cacheSIPConnection(std::shared_ptr&& socket, const s messageEngine_.onPeerOnline(peerId); } - } // namespace jami diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp index a7c286e54..f4bb81703 100644 --- a/src/jamidht/server_account_manager.cpp +++ b/src/jamidht/server_account_manager.cpp @@ -177,6 +177,9 @@ ServerAccountManager::initAuthentication( if (json.isMember("displayName")) { config.emplace(DRing::Account::ConfProperties::DISPLAYNAME, json["displayName"].asString()); } + if (json.isMember("userPhoto")) { + this_.info_->photo = json["userPhoto"].asString(); + } ctx->onSuccess(*this_.info_, std::move(config), std::move(receipt), std::move(receiptSignature)); this_.syncDevices();