From 0bd9df44a9532fd74e07a7ed0eedbbca1e07c06c Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Pasquier <contact@jbpasquier.eu>
Date: Thu, 15 Oct 2020 16:16:27 +0200
Subject: [PATCH] fix: firefox fix bottom bar

---
 src/scripts/firefox-scroll.js | 50 ++++++++++++++++++++++++++++-------
 1 file changed, 41 insertions(+), 9 deletions(-)

diff --git a/src/scripts/firefox-scroll.js b/src/scripts/firefox-scroll.js
index dd7862b0..5f624687 100644
--- a/src/scripts/firefox-scroll.js
+++ b/src/scripts/firefox-scroll.js
@@ -1,23 +1,55 @@
 document.addEventListener("DOMContentLoaded", () => {
-  window.scrollTo(0, 1);
-  let scrollTop = 1;
-  let fromTop = () => {
-    return window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0;
+  const resizeChat = () => {
+    let chatBox = Array.from(document.querySelectorAll("solid-xmpp-chat"))
+      .map((el) => el.shadowRoot ? el.shadowRoot.getElementById("conversejs") : false)
+      .filter((el) => el)
+      .pop();
+    if (chatBox) {
+      let chatTextArea = chatBox.querySelector(".message-form-container");
+      let ischatTextArea = setInterval(() => {
+        chatTextArea = chatBox.querySelector(".message-form-container");
+        if (chatTextArea) {
+          clearInterval(ischatTextArea);
+          if (
+            chatBox.getBoundingClientRect().height -
+            chatTextArea.getBoundingClientRect().height !=
+            chatTextArea.offsetTop
+          ) {
+            let viewportChat = Array.from(
+              document.querySelectorAll("#viewport .chat-view")
+            );
+            viewportChat.forEach(
+              (c) => (c.style.height = "calc(100vh - 106px - 57px - 4px)")
+            );
+          }
+        }
+      }, 15);
+    }
   };
+  resizeChat();
 
   let isbody = setInterval(() => {
     if (document.body) {
       clearInterval(isbody);
-      scrollTop = fromTop();
-      window.scrollTo(0, scrollTop === 1 ? 0 : 1);
+      resizeChat();
     }
   }, 15);
 
   window.addEventListener("load", () => {
     setTimeout(() => {
-      if (fromTop() < 20) {
-        window.scrollTo(0, scrollTop === 1 ? 0 : 1);
-      }
+      resizeChat();
+    }, 0);
+  });
+
+  window.addEventListener("resize", () => {
+    setTimeout(() => {
+      resizeChat();
+    }, 0);
+  });
+
+  document.addEventListener("navigate", () => {
+    setTimeout(() => {
+      resizeChat();
     }, 0);
   });
 });
\ No newline at end of file
-- 
GitLab