Skip to content
Snippets Groups Projects
Commit d21d8bbf authored by Sébastien Blin's avatar Sébastien Blin
Browse files

misc: swarm: add loadConversationUntil

useful to load until a specific commit

Change-Id: I1a780e2048be8bcaddeee0b9846b2bd2e3ac979e
parent dca84be4
Branches
No related tags found
No related merge requests found
......@@ -1774,6 +1774,18 @@
<arg type="u" name="id" direction="out"/>
</method>
<method name="loadConversationUntil" tp:name-for-bindings="loadConversationUntil">
<tp:added version="10.0.0"/>
<tp:docstring>
Load messages from a conversation
</tp:docstring>
<arg type="s" name="accountId" direction="in"/>
<arg type="s" name="conversationId" direction="in"/>
<arg type="s" name="fromMessage" direction="in"/>
<arg type="s" name="to" direction="in"/>
<arg type="u" name="id" direction="out"/>
</method>
<method name="countInteractions" tp:name-for-bindings="countInteractions">
<tp:added version="10.0.0"/>
<tp:docstring>
......
......@@ -920,6 +920,15 @@ DBusConfigurationManager::loadConversationMessages(const std::string& accountId,
return DRing::loadConversationMessages(accountId, conversationId, fromMessage, n);
}
uint32_t
DBusConfigurationManager::loadConversationUntil(const std::string& accountId,
const std::string& conversationId,
const std::string& fromMessage,
const std::string& to)
{
return DRing::loadConversationUntil(accountId, conversationId, fromMessage, to);
}
uint32_t
DBusConfigurationManager::countInteractions(const std::string& accountId,
const std::string& conversationId,
......
......@@ -281,6 +281,10 @@ public:
const std::string& conversationId,
const std::string& fromMessage,
const uint32_t& n);
uint32_t loadConversationUntil(const std::string& accountId,
const std::string& conversationId,
const std::string& fromMessage,
const std::string& to);
uint32_t countInteractions(const std::string& accountId,
const std::string& conversationId,
const std::string& toId,
......
......@@ -59,6 +59,7 @@ namespace DRing {
// Message send/load
void sendMessage(const std::string& accountId, const std::string& conversationId, const std::string& message, const std::string& replyTo);
uint32_t loadConversationMessages(const std::string& accountId, const std::string& conversationId, const std::string& fromMessage, size_t n);
uint32_t loadConversationUntil(const std::string& accountId, const std::string& conversationId, const std::string& fromMessage, const std::string& toMessage);
uint32_t countInteractions(const std::string& accountId, const std::string& conversationId, const std::string& toId, const std::string& fromId, const std::string& authorUri);
}
......
......@@ -59,6 +59,7 @@ namespace DRing {
// Message send/load
void sendMessage(const std::string& accountId, const std::string& conversationId, const std::string& message, const std::string& replyTo);
uint32_t loadConversationMessages(const std::string& accountId, const std::string& conversationId, const std::string& fromMessage, size_t n);
uint32_t loadConversationUntil(const std::string& accountId, const std::string& conversationId, const std::string& fromMessage, const std::string& toMessage);
uint32_t countInteractions(const std::string& accountId, const std::string& conversationId, const std::string& toId, const std::string& fromId, const std::string& authorUri);
}
......
......@@ -160,6 +160,18 @@ loadConversationMessages(const std::string& accountId,
return 0;
}
uint32_t
loadConversationUntil(const std::string& accountId,
const std::string& conversationId,
const std::string& fromMessage,
const std::string& toMessage)
{
if (auto acc = jami::Manager::instance().getAccount<jami::JamiAccount>(accountId))
if (auto convModule = acc->convModule())
return convModule->loadConversationUntil(conversationId, fromMessage, toMessage);
return 0;
}
uint32_t
countInteractions(const std::string& accountId,
const std::string& conversationId,
......
......@@ -69,6 +69,10 @@ DRING_PUBLIC uint32_t loadConversationMessages(const std::string& accountId,
const std::string& conversationId,
const std::string& fromMessage,
size_t n);
DRING_PUBLIC uint32_t loadConversationUntil(const std::string& accountId,
const std::string& conversationId,
const std::string& fromMessage,
const std::string& toMessage);
DRING_PUBLIC uint32_t countInteractions(const std::string& accountId,
const std::string& conversationId,
const std::string& toId,
......
......@@ -1261,6 +1261,30 @@ ConversationModule::loadConversationMessages(const std::string& conversationId,
return 0;
}
uint32_t
ConversationModule::loadConversationUntil(const std::string& conversationId,
const std::string& fromMessage,
const std::string& toMessage)
{
std::lock_guard<std::mutex> lk(pimpl_->conversationsMtx_);
auto acc = pimpl_->account_.lock();
auto conversation = pimpl_->conversations_.find(conversationId);
if (acc && conversation != pimpl_->conversations_.end() && conversation->second) {
const uint32_t id = std::uniform_int_distribution<uint32_t> {}(acc->rand);
conversation->second->loadMessages(
[accountId = pimpl_->accountId_, conversationId, id](auto&& messages) {
emitSignal<DRing::ConversationSignal::ConversationLoaded>(id,
accountId,
conversationId,
messages);
},
fromMessage,
toMessage);
return id;
}
return 0;
}
std::shared_ptr<TransferManager>
ConversationModule::dataTransfer(const std::string& id) const
{
......
......@@ -171,6 +171,9 @@ public:
uint32_t loadConversationMessages(const std::string& conversationId,
const std::string& fromMessage = "",
size_t n = 0);
uint32_t loadConversationUntil(const std::string& conversationId,
const std::string& fromMessage,
const std::string& to);
// File transfer
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment