diff --git a/src/status_im/chat/models.cljs b/src/status_im/chat/models.cljs index c93131d296..2f8a054aa1 100644 --- a/src/status_im/chat/models.cljs +++ b/src/status_im/chat/models.cljs @@ -274,7 +274,8 @@ [{db :db :as cofx} chat-id] (fx/merge cofx (close-chat) - #(assoc-in % [:db :current-chat-id] chat-id) + (fn [{:keys [db]}] + {:db (assoc db :current-chat-id chat-id)}) (preload-chat-data chat-id) (navigation/navigate-to-cofx :chat-stack {:screen :chat}))) diff --git a/src/status_im/subs.cljs b/src/status_im/subs.cljs index 3b79b62c88..60df8cb900 100644 --- a/src/status_im/subs.cljs +++ b/src/status_im/subs.cljs @@ -966,13 +966,12 @@ :chats/chat-messages-stream (fn [[_ chat-id] _] [(re-frame/subscribe [:chats/raw-chat-messages-stream chat-id]) + (re-frame/subscribe [:chats/chat-no-messages? chat-id]) (re-frame/subscribe [:view-id])]) - (fn [[messages view-id]] - (if (or (= view-id :chat) (empty? messages)) - (do - (reset! memo-chat-messages-stream messages) - messages) - @memo-chat-messages-stream))) + (fn [[messages empty view-id]] + (when (or (= view-id :chat) empty) + (reset! memo-chat-messages-stream messages)) + @memo-chat-messages-stream)) (def memo-profile-messages-stream (atom nil)) @@ -980,13 +979,12 @@ :chats/profile-messages-stream (fn [[_ chat-id] _] [(re-frame/subscribe [:chats/raw-chat-messages-stream chat-id]) + (re-frame/subscribe [:chats/chat-no-messages? chat-id]) (re-frame/subscribe [:view-id])]) - (fn [[messages view-id]] - (if (or (= view-id :profile) (empty? messages)) - (do - (reset! memo-profile-messages-stream messages) - messages) - @memo-profile-messages-stream))) + (fn [[messages empty view-id]] + (when (or (= view-id :profile) empty) + (reset! memo-profile-messages-stream messages)) + @memo-profile-messages-stream)) (def memo-timeline-messages-stream (atom nil)) diff --git a/src/status_im/ui/screens/home/views.cljs b/src/status_im/ui/screens/home/views.cljs index c8f23ded62..c4e8c1ce99 100644 --- a/src/status_im/ui/screens/home/views.cljs +++ b/src/status_im/ui/screens/home/views.cljs @@ -164,6 +164,9 @@ (defn chat-list-key-fn [item] (or (:chat-id item) (:id item))) +(defn get-item-layout [_ index] + #js {:length 64 :offset (* 64 index) :index index}) + (views/defview communities-and-chats [] (views/letsubs [{:keys [items search-filter]} [:home-items] hide-home-tooltip? [:hide-home-tooltip?]] @@ -174,6 +177,7 @@ [welcome-blank-page] [list/flat-list {:key-fn chat-list-key-fn + :getItemLayout get-item-layout :initialNumToRender 5 :keyboard-should-persist-taps :always :data items diff --git a/src/status_im/ui/screens/home/views/inner_item.cljs b/src/status_im/ui/screens/home/views/inner_item.cljs index 7b84a80462..6c06e9651d 100644 --- a/src/status_im/ui/screens/home/views/inner_item.cljs +++ b/src/status_im/ui/screens/home/views/inner_item.cljs @@ -13,8 +13,7 @@ [status-im.utils.contenthash :as contenthash] [status-im.utils.core :as utils] [status-im.utils.datetime :as time] - [status-im.ui.components.chat-icon.styles :as chat-icon.styles] - [status-im.ui.screens.chat.sheets :as sheets])) + [status-im.ui.components.chat-icon.styles :as chat-icon.styles])) (defn mention-element [from] @(re-frame/subscribe [:contacts/contact-name-by-identity from])) @@ -124,21 +123,6 @@ :accessibility-label :unviewed-messages-public}] [badge/message-counter unviewed-messages-count])])) -(def memo-on-long-press - (memoize - (fn [chat-id] - (fn [] - (re-frame/dispatch [:bottom-sheet/show-sheet - {:content (fn [] [sheets/chat-actions chat-id])}]))))) - -(def memo-on-press - (memoize - (fn [chat-id] - (fn [] - (re-frame/dispatch [:dismiss-keyboard]) - (re-frame/dispatch [:chat.ui/navigate-to-chat chat-id]) - (re-frame/dispatch [:search/home-filter-changed nil]))))) - (defn icon-style [] {:color colors/black :width 15