From e8b6d03ff0afc6210a2a27aafca56af74e817cc2 Mon Sep 17 00:00:00 2001
From: ubermanu <e.vodor@gmail.com>
Date: Mon, 22 Mar 2021 14:46:53 +0100
Subject: [PATCH 1/2] bugfix: send displayed marker for the latest message when
 scrolled down

---
 src/plugins/converse-rai.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js
index 408feb2..c9dceb5 100644
--- a/src/plugins/converse-rai.js
+++ b/src/plugins/converse-rai.js
@@ -146,6 +146,16 @@ converse.plugins.add('converse-rai', {
       },
     });
 
+    /**
+     * Send a displayed marker once the chatroom is scrolled down.
+     * FIXME: This is sending two requests (for the same message)
+     */
+    api.listen.on('chatBoxScrolledDown', data => {
+      if (data.chatbox.get('type') === _converse.CHATROOMS_TYPE && api.settings.get('muc_subscribe_to_rai')) {
+        data.chatbox.sendMarkerForLastMessage('displayed', true);
+      }
+    });
+
     /**
      * Triggers an event if a jid has activity.
      *
-- 
GitLab


From 2866ac6ff1f4e0228df1d64f33f3b4cc81083143 Mon Sep 17 00:00:00 2001
From: ubermanu <e.vodor@gmail.com>
Date: Mon, 22 Mar 2021 16:35:20 +0100
Subject: [PATCH 2/2] bugfix: the markers should contain the stanza_id of the
 msg

---
 src/plugins/converse-rai.js | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js
index c9dceb5..15db44f 100644
--- a/src/plugins/converse-rai.js
+++ b/src/plugins/converse-rai.js
@@ -96,10 +96,17 @@ converse.plugins.add('converse-rai', {
        *  message, even if it didn't include a `markable` element.
        */
       sendMarkerForMessage(msg, type = 'displayed', force = false) {
+        const _converse = this.__super__._converse;
         const { Strophe } = converse.env;
-        if (msg && (msg?.get('is_markable') || force)) {
+
+        // Markers should be sent for message with a stanza_id
+        const is_groupchat = this.get('type') === _converse.CHATROOMS_TYPE;
+        const by_jid = is_groupchat ? this.get('jid') : _converse.bare_jid;
+        const stanza_id = msg.get('stanza_id '.concat(by_jid));
+
+        if (msg && (msg?.get('is_markable') || force) && stanza_id) {
           const from_jid = Strophe.getBareJidFromJid(msg.get('from'));
-          this.sendMarker(from_jid, msg.get('msgid'), type, msg.get('type'));
+          this.sendMarker(from_jid, stanza_id, type, msg.get('type'));
         }
       },
     },
-- 
GitLab