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;
}