From e40f5facdbf1f0b23e0fa5956c3faf2b09c78d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= Date: Tue, 3 Mar 2020 20:51:15 -0500 Subject: [PATCH] dring: add message id in IncomingAccountMessage Change-Id: I5622a466d0baccf906e6934b748719b2aa3ec37b --- bin/dbus/cx.ring.Ring.ConfigurationManager.xml | 9 ++++++--- bin/dbus/dbusclient.cpp | 2 +- bin/jni/configurationmanager.i | 4 ++-- bin/jni/jni_interface.i | 2 +- bin/nodejs/nodejs_interface.i | 2 +- configure.ac | 2 +- src/dring/configurationmanager_interface.h | 2 +- src/jamidht/jamiaccount.cpp | 6 +++--- src/jamidht/jamiaccount.h | 2 +- src/sip/sipaccountbase.cpp | 4 ++-- src/sip/sipaccountbase.h | 2 +- src/sip/sipvoiplink.cpp | 2 +- 12 files changed, 21 insertions(+), 18 deletions(-) diff --git a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml index a54d9b27b..b9e36ee0a 100644 --- a/bin/dbus/cx.ring.Ring.ConfigurationManager.xml +++ b/bin/dbus/cx.ring.Ring.ConfigurationManager.xml @@ -11,6 +11,7 @@ + @@ -99,6 +100,7 @@ + @@ -563,8 +565,8 @@ - + Get Discovered Peer Map @@ -592,9 +594,10 @@ Notify clients that a new text message has been received at the account level. + - - + + diff --git a/bin/dbus/dbusclient.cpp b/bin/dbus/dbusclient.cpp index a56f97494..54ad7b1d0 100644 --- a/bin/dbus/dbusclient.cpp +++ b/bin/dbus/dbusclient.cpp @@ -175,7 +175,7 @@ DBusClient::initLibrary(int flags) exportable_callback(bind(&DBusConfigurationManager::registrationStateChanged, confM, _1, _2, _3, _4)), exportable_callback(bind(&DBusConfigurationManager::volatileAccountDetailsChanged, confM, _1, _2)), exportable_callback(bind(&DBusConfigurationManager::errorAlert, confM, _1)), - exportable_callback(bind(&DBusConfigurationManager::incomingAccountMessage, confM, _1, _2, _3 )), + exportable_callback(bind(&DBusConfigurationManager::incomingAccountMessage, confM, _1, _2, _3, _4 )), exportable_callback(bind(&DBusConfigurationManager::accountMessageStatusChanged, confM, _1, _2, _3, _4 )), exportable_callback(bind(&DBusConfigurationManager::composingStatusChanged, confM, _1, _2, _3 )), exportable_callback(bind(&DBusConfigurationManager::incomingTrustRequest, confM, _1, _2, _3, _4 )), diff --git a/bin/jni/configurationmanager.i b/bin/jni/configurationmanager.i index 2c61adb02..ecf7ca290 100644 --- a/bin/jni/configurationmanager.i +++ b/bin/jni/configurationmanager.i @@ -33,7 +33,7 @@ public: virtual void accountDetailsChanged(const std::string& account_id, const std::map& details){} 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& details){} - virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::map& /*payload*/){} + virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*message_id*/, const std::string& /*from*/, const std::map& /*payload*/){} virtual void accountMessageStatusChanged(const std::string& /*account_id*/, uint64_t /*message_id*/, const std::string& /*to*/, int /*state*/){} 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& /*devices*/){} @@ -242,7 +242,7 @@ public: virtual void accountDetailsChanged(const std::string& account_id, const std::map& details){} 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& details){} - virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::map& /*payload*/){} + virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*message_id*/, const std::string& /*from*/, const std::map& /*payload*/){} virtual void accountMessageStatusChanged(const std::string& /*account_id*/, uint64_t /*message_id*/, const std::string& /*to*/, int /*state*/){} 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& /*devices*/){} diff --git a/bin/jni/jni_interface.i b/bin/jni/jni_interface.i index 304e208f1..002e05a0b 100644 --- a/bin/jni/jni_interface.i +++ b/bin/jni/jni_interface.i @@ -261,7 +261,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM exportable_callback(bind(&ConfigurationCallback::knownDevicesChanged, confM, _1, _2)), exportable_callback(bind(&ConfigurationCallback::exportOnRingEnded, confM, _1, _2, _3)), exportable_callback(bind(&ConfigurationCallback::errorAlert, confM, _1)), - exportable_callback(bind(&ConfigurationCallback::incomingAccountMessage, confM, _1, _2, _3 )), + exportable_callback(bind(&ConfigurationCallback::incomingAccountMessage, confM, _1, _2, _3, _4 )), exportable_callback(bind(&ConfigurationCallback::accountMessageStatusChanged, confM, _1, _2, _3, _4 )), exportable_callback(bind(&ConfigurationCallback::composingStatusChanged, confM, _1, _2, _3 )), exportable_callback(bind(&ConfigurationCallback::incomingTrustRequest, confM, _1, _2, _3, _4 )), diff --git a/bin/nodejs/nodejs_interface.i b/bin/nodejs/nodejs_interface.i index c2e06ea20..ebe3a934c 100644 --- a/bin/nodejs/nodejs_interface.i +++ b/bin/nodejs/nodejs_interface.i @@ -148,7 +148,7 @@ void init(const v8::Handle &funcMap){ exportable_callback(bind(®isteredNameFound, _1, _2, _3, _4 )), exportable_callback(bind(&volatileDetailsChanged, _1, _2)), exportable_callback(bind(&knownDevicesChanged, _1, _2 )), - exportable_callback(bind(&incomingAccountMessage, _1, _2, _3 )), + exportable_callback(bind(&incomingAccountMessage, _1, _2, _3, _4 )), exportable_callback(bind(&accountMessageStatusChanged, _1, _2, _3, _4 )), exportable_callback(bind(&incomingTrustRequest, _1, _2, _3, _4 )), }; diff --git a/configure.ac b/configure.ac index d79ec0af3..c3c188834 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],[8.0.0],[ring@gnu.org],[jami]) +AC_INIT([Jami Daemon],[9.0.0],[ring@gnu.org],[jami]) AC_COPYRIGHT([[Copyright (c) Savoir-faire Linux 2004-2019]]) AC_REVISION([$Revision$]) diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 6169cd0f9..4b659a6ad 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -284,7 +284,7 @@ struct DRING_PUBLIC ConfigurationSignal { }; struct DRING_PUBLIC IncomingAccountMessage { constexpr static const char* name = "IncomingAccountMessage"; - using cb_type = void(const std::string& /*account_id*/, const std::string& /*from*/, const std::map& /*payloads*/); + using cb_type = void(const std::string& /*account_id*/, const std::string& /*message_id*/, const std::string& /*from*/, const std::map& /*payloads*/); }; struct DRING_PUBLIC AccountMessageStatusChanged { constexpr static const char* name = "AccountMessageStatusChanged"; diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 81fb11e13..bd95b4c7c 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -1992,7 +1992,7 @@ JamiAccount::doRegister_() } std::map payloads = {{datatype, utf8_make_valid(v.msg)}}; - onTextMessage(peer_account.toString(), payloads); + onTextMessage(std::to_string(v.id), peer_account.toString(), payloads); JAMI_DBG() << "Sending message confirmation " << v.id; dht_->putEncrypted(inboxDeviceKey, v.from, @@ -2019,12 +2019,12 @@ JamiAccount::doRegister_() } void -JamiAccount::onTextMessage(const std::string& from, +JamiAccount::onTextMessage(const std::string& id, const std::string& from, const std::map& payloads) { try { const std::string fromUri = parseJamiUri(from); - SIPAccountBase::onTextMessage(fromUri, payloads); + SIPAccountBase::onTextMessage(id, fromUri, payloads); } catch (...) { } } diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h index 4e033f344..9956bddc9 100644 --- a/src/jamidht/jamiaccount.h +++ b/src/jamidht/jamiaccount.h @@ -271,7 +271,7 @@ public: std::shared_ptr newIncomingCall(const std::string& from, const std::map& details = {}, const std::shared_ptr& sipTr = nullptr) override; - void onTextMessage(const std::string& from, const std::map& payloads) override; + void onTextMessage(const std::string& id, const std::string& from, const std::map& payloads) override; virtual bool isTlsEnabled() const override { return true; diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp index e848211e1..59176463d 100644 --- a/src/sip/sipaccountbase.cpp +++ b/src/sip/sipaccountbase.cpp @@ -454,7 +454,7 @@ SIPAccountBase::getIceOptions() const noexcept } void -SIPAccountBase::onTextMessage(const std::string& from, +SIPAccountBase::onTextMessage(const std::string& id, const std::string& from, const std::map& payloads) { JAMI_DBG("Text message received from %s, %zu part(s)", from.c_str(), payloads.size()); @@ -482,7 +482,7 @@ SIPAccountBase::onTextMessage(const std::string& from, } } } - emitSignal(accountID_, from, payloads); + emitSignal(accountID_, id, from, payloads); DRing::Message message; message.from = from; message.payloads = payloads; diff --git a/src/sip/sipaccountbase.h b/src/sip/sipaccountbase.h index 79421c2ee..f1a4add2e 100644 --- a/src/sip/sipaccountbase.h +++ b/src/sip/sipaccountbase.h @@ -279,7 +279,7 @@ public: return messageEngine_.cancel(id); } - virtual void onTextMessage(const std::string& from, const std::map& payloads); + virtual void onTextMessage(const std::string& id, const std::string& from, const std::map& payloads); /* Returns true if the username and/or hostname match this account */ virtual MatchRank matches(const std::string &username, const std::string &hostname) const = 0; diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp index 00e9b9528..c6f6d0bac 100644 --- a/src/sip/sipvoiplink.cpp +++ b/src/sip/sipvoiplink.cpp @@ -249,7 +249,7 @@ transaction_request_cb(pjsip_rx_data *rdata) // Process message content in case of multi-part body auto payloads = im::parseSipMessage(rdata->msg_info.msg); if (payloads.size() > 0) - account->onTextMessage(peerNumber, payloads); + account->onTextMessage({}, peerNumber, payloads); return PJ_FALSE; }