fixed timeline load more, fixed message confirmation status
fixed group chat invitation Signed-off-by: andrey <motor4ik@gmail.com>
This commit is contained in:
parent
c7cc9e27a9
commit
503028cb4e
|
@ -160,6 +160,7 @@
|
||||||
{:db (assoc-in db [:chat/memberships current-chat-id] nil)
|
{:db (assoc-in db [:chat/memberships current-chat-id] nil)
|
||||||
::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRequest")
|
::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRequest")
|
||||||
:params [nil current-chat-id invitation-admin message]
|
:params [nil current-chat-id invitation-admin message]
|
||||||
|
:js-response true
|
||||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]}))
|
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]}))
|
||||||
|
|
||||||
(fx/defn send-group-chat-membership-rejection
|
(fx/defn send-group-chat-membership-rejection
|
||||||
|
@ -168,6 +169,7 @@
|
||||||
[cofx invitation-id]
|
[cofx invitation-id]
|
||||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRejection")
|
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRejection")
|
||||||
:params [nil invitation-id]
|
:params [nil invitation-id]
|
||||||
|
:js-response true
|
||||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]})
|
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]})
|
||||||
|
|
||||||
(fx/defn handle-invitations
|
(fx/defn handle-invitations
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
"subscriptions.data" (ethereum.subscriptions/handle-signal cofx (js->clj event-js :keywordize-keys true))
|
"subscriptions.data" (ethereum.subscriptions/handle-signal cofx (js->clj event-js :keywordize-keys true))
|
||||||
"subscriptions.error" (ethereum.subscriptions/handle-error cofx (js->clj event-js :keywordize-keys true))
|
"subscriptions.error" (ethereum.subscriptions/handle-error cofx (js->clj event-js :keywordize-keys true))
|
||||||
"whisper.filter.added" (transport.filters/handle-negotiated-filter cofx (js->clj event-js :keywordize-keys true))
|
"whisper.filter.added" (transport.filters/handle-negotiated-filter cofx (js->clj event-js :keywordize-keys true))
|
||||||
"messages.new" (transport.message/sanitize-messages-and-process-response cofx event-js)
|
"messages.new" (transport.message/sanitize-messages-and-process-response cofx event-js true)
|
||||||
"wallet" (ethereum.subscriptions/new-wallet-event cofx (js->clj event-js :keywordize-keys true))
|
"wallet" (ethereum.subscriptions/new-wallet-event cofx (js->clj event-js :keywordize-keys true))
|
||||||
"local-notifications" (local-notifications/process cofx (js->clj event-js :keywordize-keys true))
|
"local-notifications" (local-notifications/process cofx (js->clj event-js :keywordize-keys true))
|
||||||
(log/debug "Event " type " not handled"))))
|
(log/debug "Event " type " not handled"))))
|
||||||
|
|
|
@ -18,9 +18,15 @@
|
||||||
[status-im.multiaccounts.model :as multiaccounts.model]
|
[status-im.multiaccounts.model :as multiaccounts.model]
|
||||||
[clojure.string :as string]))
|
[clojure.string :as string]))
|
||||||
|
|
||||||
|
(fx/defn process-next
|
||||||
|
[cofx ^js response-js sync-handler]
|
||||||
|
(if sync-handler
|
||||||
|
(sync-handler cofx response-js true)
|
||||||
|
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}))
|
||||||
|
|
||||||
(fx/defn process-response
|
(fx/defn process-response
|
||||||
{:events [:process-response]}
|
{:events [:process-response]}
|
||||||
[cofx ^js response-js]
|
[cofx ^js response-js process-async]
|
||||||
(let [^js communities (.-communities response-js)
|
(let [^js communities (.-communities response-js)
|
||||||
^js requests-to-join-community (.-requestsToJoinCommunity response-js)
|
^js requests-to-join-community (.-requestsToJoinCommunity response-js)
|
||||||
^js chats (.-chats response-js)
|
^js chats (.-chats response-js)
|
||||||
|
@ -31,7 +37,8 @@
|
||||||
^js filters (.-filters response-js)
|
^js filters (.-filters response-js)
|
||||||
^js removed-filters (.-removedFilters response-js)
|
^js removed-filters (.-removedFilters response-js)
|
||||||
^js invitations (.-invitations response-js)
|
^js invitations (.-invitations response-js)
|
||||||
^js removed-chats (.-removedChats response-js)]
|
^js removed-chats (.-removedChats response-js)
|
||||||
|
sync-handler (when-not process-async process-response)]
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
|
|
||||||
|
@ -39,7 +46,7 @@
|
||||||
(do
|
(do
|
||||||
(js-delete response-js "chats")
|
(js-delete response-js "chats")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.chat/ensure-chats (map #(-> %
|
(models.chat/ensure-chats (map #(-> %
|
||||||
(data-store.chats/<-rpc)
|
(data-store.chats/<-rpc)
|
||||||
;;TODO why here?
|
;;TODO why here?
|
||||||
|
@ -53,61 +60,61 @@
|
||||||
(let [installations-clj (types/js->clj installations)]
|
(let [installations-clj (types/js->clj installations)]
|
||||||
(js-delete response-js "installations")
|
(js-delete response-js "installations")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.pairing/handle-installations installations-clj)))
|
(models.pairing/handle-installations installations-clj)))
|
||||||
|
|
||||||
(seq contacts)
|
(seq contacts)
|
||||||
(let [contacts-clj (types/js->clj contacts)]
|
(let [contacts-clj (types/js->clj contacts)]
|
||||||
(js-delete response-js "contacts")
|
(js-delete response-js "contacts")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.contact/ensure-contacts (map data-store.contacts/<-rpc contacts-clj))))
|
(models.contact/ensure-contacts (map data-store.contacts/<-rpc contacts-clj))))
|
||||||
|
|
||||||
(seq communities)
|
(seq communities)
|
||||||
(let [communities-clj (types/js->clj communities)]
|
(let [communities-clj (types/js->clj communities)]
|
||||||
(js-delete response-js "communities")
|
(js-delete response-js "communities")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.communities/handle-communities (types/js->clj communities-clj))))
|
(models.communities/handle-communities (types/js->clj communities-clj))))
|
||||||
|
|
||||||
(seq removed-chats)
|
(seq removed-chats)
|
||||||
(let [removed-chats-clj (types/js->clj removed-chats)]
|
(let [removed-chats-clj (types/js->clj removed-chats)]
|
||||||
(js-delete response-js "removedChats")
|
(js-delete response-js "removedChats")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.communities/handle-removed-chats (types/js->clj removed-chats-clj))))
|
(models.communities/handle-removed-chats (types/js->clj removed-chats-clj))))
|
||||||
|
|
||||||
(seq requests-to-join-community)
|
(seq requests-to-join-community)
|
||||||
(let [request (.pop requests-to-join-community)]
|
(let [request (.pop requests-to-join-community)]
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [::process response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.communities/handle-request-to-join (types/js->clj request))))
|
(models.communities/handle-request-to-join (types/js->clj request))))
|
||||||
|
|
||||||
(seq emoji-reactions)
|
(seq emoji-reactions)
|
||||||
(let [reactions (types/js->clj emoji-reactions)]
|
(let [reactions (types/js->clj emoji-reactions)]
|
||||||
(js-delete response-js "emojiReactions")
|
(js-delete response-js "emojiReactions")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.reactions/receive-signal (map data-store.reactions/<-rpc reactions))))
|
(models.reactions/receive-signal (map data-store.reactions/<-rpc reactions))))
|
||||||
|
|
||||||
(seq invitations)
|
(seq invitations)
|
||||||
(let [invitations (types/js->clj invitations)]
|
(let [invitations (types/js->clj invitations)]
|
||||||
(js-delete response-js "invitations")
|
(js-delete response-js "invitations")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.group/handle-invitations (map data-store.invitations/<-rpc invitations))))
|
(models.group/handle-invitations (map data-store.invitations/<-rpc invitations))))
|
||||||
(seq filters)
|
(seq filters)
|
||||||
(let [filters (types/js->clj filters)]
|
(let [filters (types/js->clj filters)]
|
||||||
(js-delete response-js "filters")
|
(js-delete response-js "filters")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.filters/handle-filters filters)))
|
(models.filters/handle-filters filters)))
|
||||||
|
|
||||||
(seq removed-filters)
|
(seq removed-filters)
|
||||||
(let [removed-filters (types/js->clj removed-filters)]
|
(let [removed-filters (types/js->clj removed-filters)]
|
||||||
(js-delete response-js "removedFilters")
|
(js-delete response-js "removedFilters")
|
||||||
(fx/merge cofx
|
(fx/merge cofx
|
||||||
{:utils/dispatch-later [{:ms 20 :dispatch [:process-response response-js]}]}
|
(process-next response-js sync-handler)
|
||||||
(models.filters/handle-filters-removed filters))))))
|
(models.filters/handle-filters-removed filters))))))
|
||||||
|
|
||||||
(defn group-by-and-update-unviewed-counts
|
(defn group-by-and-update-unviewed-counts
|
||||||
|
@ -155,7 +162,7 @@
|
||||||
(fx/defn sanitize-messages-and-process-response
|
(fx/defn sanitize-messages-and-process-response
|
||||||
"before processing we want to filter and sort messages, so we can process first only messages which will be showed"
|
"before processing we want to filter and sort messages, so we can process first only messages which will be showed"
|
||||||
{:events [:sanitize-messages-and-process-response]}
|
{:events [:sanitize-messages-and-process-response]}
|
||||||
[{:keys [db] :as cofx} ^js response-js]
|
[{:keys [db] :as cofx} ^js response-js process-async]
|
||||||
(let [current-chat-id (:current-chat-id db)
|
(let [current-chat-id (:current-chat-id db)
|
||||||
{:keys [db messages transactions chats statuses]}
|
{:keys [db messages transactions chats statuses]}
|
||||||
(reduce group-by-and-update-unviewed-counts
|
(reduce group-by-and-update-unviewed-counts
|
||||||
|
@ -173,7 +180,7 @@
|
||||||
{:ms 100 :dispatch [:watch-tx transaction-hash]}))
|
{:ms 100 :dispatch [:watch-tx transaction-hash]}))
|
||||||
(when (seq chats)
|
(when (seq chats)
|
||||||
[{:ms 100 :dispatch [:chat/join-times-messages-checked chats]}]))}
|
[{:ms 100 :dispatch [:chat/join-times-messages-checked chats]}]))}
|
||||||
(process-response response-js))))
|
(process-response response-js process-async))))
|
||||||
|
|
||||||
(fx/defn remove-hash
|
(fx/defn remove-hash
|
||||||
[{:keys [db]} envelope-hash]
|
[{:keys [db]} envelope-hash]
|
||||||
|
@ -242,4 +249,4 @@
|
||||||
(types/js->clj (.-messages response-js)))]
|
(types/js->clj (.-messages response-js)))]
|
||||||
(apply fx/merge cofx
|
(apply fx/merge cofx
|
||||||
(conj set-hash-fxs
|
(conj set-hash-fxs
|
||||||
#(sanitize-messages-and-process-response % response-js)))))
|
#(sanitize-messages-and-process-response % response-js false)))))
|
||||||
|
|
|
@ -114,7 +114,7 @@
|
||||||
:content-type constants/content-type-text}]
|
:content-type constants/content-type-text}]
|
||||||
[react/view {:margin-bottom 8 :margin-right 16}
|
[react/view {:margin-bottom 8 :margin-right 16}
|
||||||
[react/view {:padding-left 72}
|
[react/view {:padding-left 72}
|
||||||
(chat.utils/format-author (multiaccounts/displayed-name contact))]
|
(chat.utils/format-author contact)]
|
||||||
[react/view {:flex-direction :row :align-items :flex-end}
|
[react/view {:flex-direction :row :align-items :flex-end}
|
||||||
[react/view {:padding-left 16 :padding-top 4}
|
[react/view {:padding-left 16 :padding-top 4}
|
||||||
[photos/photo (multiaccounts/displayed-photo contact) {:size 36}]]
|
[photos/photo (multiaccounts/displayed-photo contact) {:size 36}]]
|
||||||
|
|
|
@ -187,7 +187,7 @@
|
||||||
[react/view {:flex 1}
|
[react/view {:flex 1}
|
||||||
[react/view {:height 1
|
[react/view {:height 1
|
||||||
:background-color colors/gray-lighter}]
|
:background-color colors/gray-lighter}]
|
||||||
(if loading-messages?
|
(if (and no-messages? loading-messages?)
|
||||||
[react/view {:flex 1 :align-items :center :justify-content :center}
|
[react/view {:flex 1 :align-items :center :justify-content :center}
|
||||||
[react/activity-indicator {:animating true}]]
|
[react/activity-indicator {:animating true}]]
|
||||||
(if no-messages?
|
(if no-messages?
|
||||||
|
|
Loading…
Reference in New Issue