Browse Source

fix: scroll down wrong detection

Tienson Qin 3 years ago
parent
commit
906bd0234e

+ 5 - 2
src/main/frontend/components/block.cljs

@@ -2930,13 +2930,16 @@
                                    blocks->vec-tree)
         bottom-reached (fn []
                          (reset! *last-idx idx)
-                         (reset! ignore-scroll? false))]
+                         (reset! ignore-scroll? false))
+        has-more? (>= (count flat-blocks) (inc idx))]
     [:div#lazy-blocks
      (ui/infinite-list
       "main-content-container"
       (block-list config segment)
       {:on-load bottom-reached
-       :threhold 1000})]))
+       :threhold 1000
+       :has-more has-more?
+       :more-text "More"})]))
 
 (rum/defcs blocks-container <
   {:init (fn [state]

+ 1 - 0
src/main/frontend/components/journal.cljs

@@ -97,6 +97,7 @@
                        [:div.journal-item.content {:key journal-name}
                         (journal-cp [journal-name format])])
                      {:has-more (page-handler/has-more-journals?)
+                      :more-text-class "text-4xl"
                       :on-top-reached page-handler/create-today-journal!
                       :on-load (fn []
                                  (page-handler/load-more-journals!))})])

+ 21 - 16
src/main/frontend/ui.cljs

@@ -28,7 +28,8 @@
             [rum.core :as rum]
             [clojure.string :as str]
             [frontend.db-mixins :as db-mixins]
-            [frontend.mobile.util :as mobile-util]))
+            [frontend.mobile.util :as mobile-util]
+            [goog.functions :refer [debounce]]))
 
 (defonce transition-group (r/adapt-class TransitionGroup))
 (defonce css-transition (r/adapt-class CSSTransition))
@@ -308,12 +309,13 @@
           on-viewport-changed
           (fn []
             (let [update-vw-state
-                  (util/debounce 20
-                                 (fn []
-                                   (state/set-visual-viewport-state {:height     (.-height vp)
-                                                                     :page-top   (.-pageTop vp)
-                                                                     :offset-top (.-offsetTop vp)})
-                                   (state/set-state! :ui/visual-viewport-pending? false)))]
+                  (debounce
+                   (fn []
+                     (state/set-visual-viewport-state {:height     (.-height vp)
+                                                       :page-top   (.-pageTop vp)
+                                                       :offset-top (.-offsetTop vp)})
+                     (state/set-state! :ui/visual-viewport-pending? false))
+                   20)]
               (when-not @raf-pending?
                 (let [f (fn []
                           (set-raf-pending! false)
@@ -368,10 +370,10 @@
 
 (defn scroll-down?
   []
-  (let [scroll-top (get-scroll-top)]
-    (let [down? (> scroll-top @last-scroll-top)]
-      (reset! last-scroll-top scroll-top)
-      down?)))
+  (let [scroll-top (get-scroll-top)
+        down? (>= scroll-top @last-scroll-top)]
+    (reset! last-scroll-top scroll-top)
+    down?))
 
 (defn on-scroll
   [node {:keys [on-load on-top-reached threhold]
@@ -393,20 +395,23 @@
   (let [list-element-id (first (:rum/args state))
         opts (-> state :rum/args (nth 2))
         node (js/document.getElementById list-element-id)
-        debounced-on-scroll (util/debounce 500 #(on-scroll node opts))]
+        debounced-on-scroll (debounce #(on-scroll node opts) 500)]
     (mixins/listen state node :scroll debounced-on-scroll)))
 
 (rum/defcs infinite-list <
   (mixins/event-mixin attach-listeners)
   "Render an infinite list."
-  [state list-element-id body {:keys [on-load has-more on-top-reached threhold]}]
+  [state list-element-id body {:keys [on-load on-top-reached threhold
+                                      has-more more-text more-text-class]
+                               :or {more-text-class "text-sm"}}]
   (rum/with-context [[t] i18n/*tongue-context*]
     [:div
      body
      (when has-more
-       [:a.fade-link.text-link.font-bold.text-4xl
-        {:on-click on-load}
-        (t :page/earlier)])]))
+       [:a.fade-link.text-link.font-bold
+        {:on-click on-load
+         :class more-text-class}
+        (or more-text (t :page/earlier))])]))
 
 (rum/defcs auto-complete <
   (rum/local 0 ::current-idx)