[#16156] Fix top bar flashing
This commit is contained in:
parent
8fdfeb5e45
commit
b58a9beef2
|
@ -256,8 +256,8 @@
|
||||||
current-y (oops/oget event "nativeEvent.contentOffset.y")]
|
current-y (oops/oget event "nativeEvent.contentOffset.y")]
|
||||||
(reanimated/set-shared-value scroll-y (- content-size-y current-y))))
|
(reanimated/set-shared-value scroll-y (- content-size-y current-y))))
|
||||||
|
|
||||||
(defn messages-list-content
|
(defn f-messages-list-content
|
||||||
[{:keys [chat insets scroll-y cover-bg-color keyboard-shown?]}]
|
[{:keys [chat insets scroll-y cover-bg-color keyboard-shown? shared-all-loaded?]}]
|
||||||
(let [shell-animation-complete? (rf/sub [:shell/animation-complete? (:chat-type chat)])
|
(let [shell-animation-complete? (rf/sub [:shell/animation-complete? (:chat-type chat)])
|
||||||
context (when shell-animation-complete?
|
context (when shell-animation-complete?
|
||||||
(rf/sub [:chats/current-chat-message-list-view-context]))
|
(rf/sub [:chats/current-chat-message-list-view-context]))
|
||||||
|
@ -267,6 +267,11 @@
|
||||||
(rf/sub [:chats/recording?]))
|
(rf/sub [:chats/recording?]))
|
||||||
all-loaded? (when shell-animation-complete?
|
all-loaded? (when shell-animation-complete?
|
||||||
(rf/sub [:chats/all-loaded? (:chat-id chat)]))]
|
(rf/sub [:chats/all-loaded? (:chat-id chat)]))]
|
||||||
|
;; NOTE(rasom): Top bar needs to react on `all-loaded?` only after messages
|
||||||
|
;; rendering, otherwise animation flickers
|
||||||
|
(rn/use-effect (fn []
|
||||||
|
(reset! shared-all-loaded? all-loaded?))
|
||||||
|
[all-loaded?])
|
||||||
[rn/view {:style {:flex 1}}
|
[rn/view {:style {:flex 1}}
|
||||||
[rn/flat-list
|
[rn/flat-list
|
||||||
{:key-fn list-key-fn
|
{:key-fn list-key-fn
|
||||||
|
@ -319,6 +324,7 @@
|
||||||
[{:keys [chat cover-bg-color header-comp footer-comp]}]
|
[{:keys [chat cover-bg-color header-comp footer-comp]}]
|
||||||
(let [insets (safe-area/get-insets)
|
(let [insets (safe-area/get-insets)
|
||||||
scroll-y (reanimated/use-shared-value 0)
|
scroll-y (reanimated/use-shared-value 0)
|
||||||
|
all-loaded? (reagent/atom false)
|
||||||
{:keys [keyboard-height keyboard-shown]} (hooks/use-keyboard)]
|
{:keys [keyboard-height keyboard-shown]} (hooks/use-keyboard)]
|
||||||
(rn/use-effect
|
(rn/use-effect
|
||||||
(fn []
|
(fn []
|
||||||
|
@ -332,14 +338,18 @@
|
||||||
:keyboard-vertical-offset (- (:bottom insets))}
|
:keyboard-vertical-offset (- (:bottom insets))}
|
||||||
|
|
||||||
(when header-comp
|
(when header-comp
|
||||||
[header-comp {:scroll-y scroll-y}])
|
[header-comp
|
||||||
|
{:scroll-y scroll-y
|
||||||
|
:shared-all-loaded? all-loaded?}])
|
||||||
|
|
||||||
[messages-list-content
|
[:f>
|
||||||
|
f-messages-list-content
|
||||||
{:chat chat
|
{:chat chat
|
||||||
:insets insets
|
:insets insets
|
||||||
:scroll-y scroll-y
|
:scroll-y scroll-y
|
||||||
:cover-bg-color cover-bg-color
|
:cover-bg-color cover-bg-color
|
||||||
:keyboard-shown? keyboard-shown}]
|
:keyboard-shown? keyboard-shown
|
||||||
|
:shared-all-loaded? all-loaded?}]
|
||||||
|
|
||||||
(when footer-comp
|
(when footer-comp
|
||||||
[footer-comp {:insets insets}])]))
|
[footer-comp {:insets insets}])]))
|
||||||
|
|
|
@ -14,11 +14,11 @@
|
||||||
[status-im2.common.home.actions.view :as actions]))
|
[status-im2.common.home.actions.view :as actions]))
|
||||||
|
|
||||||
(defn f-navigation-view
|
(defn f-navigation-view
|
||||||
[{:keys [scroll-y]}]
|
[{:keys [scroll-y shared-all-loaded?]}]
|
||||||
(let [{:keys [group-chat chat-id chat-name emoji
|
(let [{:keys [group-chat chat-id chat-name emoji
|
||||||
chat-type]
|
chat-type]
|
||||||
:as chat} (rf/sub [:chats/current-chat-chat-view])
|
:as chat} (rf/sub [:chats/current-chat-chat-view])
|
||||||
all-loaded? (rf/sub [:chats/all-loaded? chat-id])
|
all-loaded? @shared-all-loaded?
|
||||||
display-name (if (= chat-type constants/one-to-one-chat-type)
|
display-name (if (= chat-type constants/one-to-one-chat-type)
|
||||||
(first (rf/sub [:contacts/contact-two-names-by-identity chat-id]))
|
(first (rf/sub [:contacts/contact-two-names-by-identity chat-id]))
|
||||||
(str emoji " " chat-name))
|
(str emoji " " chat-name))
|
||||||
|
|
|
@ -25,8 +25,10 @@
|
||||||
[messages.list/messages-list
|
[messages.list/messages-list
|
||||||
{:cover-bg-color (colors/custom-color :turquoise 50 20)
|
{:cover-bg-color (colors/custom-color :turquoise 50 20)
|
||||||
:chat chat
|
:chat chat
|
||||||
:header-comp (fn [{:keys [scroll-y]}]
|
:header-comp (fn [{:keys [scroll-y shared-all-loaded?]}]
|
||||||
[messages.navigation/navigation-view {:scroll-y scroll-y}])
|
[messages.navigation/navigation-view
|
||||||
|
{:scroll-y scroll-y
|
||||||
|
:shared-all-loaded? shared-all-loaded?}])
|
||||||
:footer-comp (fn [{:keys [insets]}]
|
:footer-comp (fn [{:keys [insets]}]
|
||||||
(if-not able-to-send-message?
|
(if-not able-to-send-message?
|
||||||
[contact-requests.bottom-drawer/view chat-id contact-request-state
|
[contact-requests.bottom-drawer/view chat-id contact-request-state
|
||||||
|
|
Loading…
Reference in New Issue