mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
conversation: remove reactions on a message deletion
GitLab: #945 Change-Id: I23e32f33f405c7c6534b0d4667d3d27d8a045e77
This commit is contained in:
@ -1019,6 +1019,9 @@ Conversation::Impl::handleEdition(History& history,
|
||||
// Normal message
|
||||
it->second->editions.emplace(it->second->editions.begin(), it->second->body);
|
||||
it->second->body["body"] = sharedCommit->body["body"];
|
||||
// Remove reactions
|
||||
if (sharedCommit->body.at("body").empty())
|
||||
it->second->reactions.clear();
|
||||
emitSignal<libjami::ConversationSignal::SwarmMessageUpdated>(accountId_,
|
||||
repository_->id(),
|
||||
*it->second);
|
||||
|
@ -157,6 +157,7 @@ private:
|
||||
void testRemoveOneToOneNotInDetails();
|
||||
void testMessageEdition();
|
||||
void testMessageReaction();
|
||||
void testMessageEditionWithReaction();
|
||||
void testLoadPartiallyRemovedConversation();
|
||||
void testReactionsOnEditedMessage();
|
||||
void testUpdateProfileMultiDevice();
|
||||
@ -212,6 +213,7 @@ private:
|
||||
CPPUNIT_TEST(testRemoveOneToOneNotInDetails);
|
||||
CPPUNIT_TEST(testMessageEdition);
|
||||
CPPUNIT_TEST(testMessageReaction);
|
||||
CPPUNIT_TEST(testMessageEditionWithReaction);
|
||||
CPPUNIT_TEST(testLoadPartiallyRemovedConversation);
|
||||
CPPUNIT_TEST(testReactionsOnEditedMessage);
|
||||
CPPUNIT_TEST(testUpdateProfileMultiDevice);
|
||||
@ -2433,6 +2435,35 @@ ConversationTest::testMessageReaction()
|
||||
CPPUNIT_ASSERT(emojiId == aliceData.reactionRemoved[0]);
|
||||
}
|
||||
|
||||
void
|
||||
ConversationTest::testMessageEditionWithReaction()
|
||||
{
|
||||
std::cout << "\nRunning test: " << __func__ << std::endl;
|
||||
connectSignals();
|
||||
auto convId = libjami::startConversation(aliceId);
|
||||
CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !aliceData.conversationId.empty(); }));
|
||||
auto msgSize = aliceData.messages.size();
|
||||
libjami::sendMessage(aliceId, convId, "hi"s, "");
|
||||
CPPUNIT_ASSERT(
|
||||
cv.wait_for(lk, 30s, [&]() { return aliceData.messages.size() == msgSize + 1; }));
|
||||
msgSize = aliceData.messages.size();
|
||||
|
||||
// Add reaction
|
||||
auto reactId = aliceData.messages.rbegin()->id;
|
||||
libjami::sendMessage(aliceId, convId, "👋"s, reactId, 2);
|
||||
CPPUNIT_ASSERT(
|
||||
cv.wait_for(lk, 10s, [&]() { return aliceData.reactions.size() == 1; }));
|
||||
CPPUNIT_ASSERT(aliceData.reactions.rbegin()->at("react-to") == reactId);
|
||||
CPPUNIT_ASSERT(aliceData.reactions.rbegin()->at("body") == "👋");
|
||||
auto emojiId = aliceData.reactions.rbegin()->at("id");
|
||||
|
||||
// Remove base message should remove reaction
|
||||
libjami::sendMessage(aliceId, convId, ""s, reactId, 1);
|
||||
CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return aliceData.messagesUpdated.size() == 1; }));
|
||||
// Reaction is deleted
|
||||
CPPUNIT_ASSERT(aliceData.messagesUpdated[0].reactions.empty());
|
||||
}
|
||||
|
||||
void
|
||||
ConversationTest::testLoadPartiallyRemovedConversation()
|
||||
{
|
||||
|
Reference in New Issue
Block a user