From bd02663282bc6f5606208f352ab32d4dc057fa9f Mon Sep 17 00:00:00 2001
From: ubermanu <e.vodor@gmail.com>
Date: Wed, 10 Mar 2021 18:48:56 +0100
Subject: [PATCH] bugfix: scroll down the current chat view when tab is focused
 again

---
 src/plugins/sib-scroll-down-on-focus.js | 17 +++++++++++++++++
 src/solid-xmpp-chat.js                  |  2 ++
 2 files changed, 19 insertions(+)
 create mode 100644 src/plugins/sib-scroll-down-on-focus.js

diff --git a/src/plugins/sib-scroll-down-on-focus.js b/src/plugins/sib-scroll-down-on-focus.js
new file mode 100644
index 0000000..11652ab
--- /dev/null
+++ b/src/plugins/sib-scroll-down-on-focus.js
@@ -0,0 +1,17 @@
+/**
+ * Forces the active chat to scroll down when the tab is focused again.
+ */
+converse.plugins.add('sib-scroll-down-on-focus', {
+  initialize() {
+    const _converse = this._converse;
+    const { api } = _converse;
+
+    api.listen.on('windowStateChanged', async data => {
+      if (data.state === 'visible' && api.connection.connected()) {
+        const chatBox = _converse.chatboxes.findWhere({ hidden: false });
+        const chatView = _converse.chatboxviews.get(chatBox?.get('jid'));
+        chatView?.scrollDown();
+      }
+    });
+  },
+});
diff --git a/src/solid-xmpp-chat.js b/src/solid-xmpp-chat.js
index 613139f..4989408 100644
--- a/src/solid-xmpp-chat.js
+++ b/src/solid-xmpp-chat.js
@@ -11,6 +11,7 @@ import './plugins/sib-custom-hats.js';
 import './plugins/sib-disconnected.js';
 import './plugins/sib-mam-history.js';
 import './plugins/sib-remove-notifications.js';
+import './plugins/sib-scroll-down-on-focus.js';
 import './plugins/sib-subscribe-to-rai.js';
 
 export const SolidXMPPChat = {
@@ -225,6 +226,7 @@ export const SolidXMPPChat = {
           'sib-disconnected',
           'sib-mam-history',
           'sib-remove-notifications',
+          'sib-scroll-down-on-focus',
           'sib-subscribe-to-rai',
         ],
       });
-- 
GitLab