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 0000000000000000000000000000000000000000..11652ab4283e4a5b4d9d1723b1ed2e33b7cda9b3 --- /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 613139fe497d987439a7b9bed513f6dad6621ff0..498940875417460666b78b9ab535f9171dfe3c04 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', ], });