2016-10-04 11:49:59 +00:00
|
|
|
(ns status-im.data-store.messages
|
2023-01-05 13:54:32 +00:00
|
|
|
(:require [clojure.set :as set]
|
2022-12-26 15:00:17 +00:00
|
|
|
[utils.re-frame :as rf]
|
2020-05-05 14:18:23 +00:00
|
|
|
[taoensso.timbre :as log]))
|
2018-04-02 16:17:15 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn ->rpc
|
|
|
|
[{:keys [content] :as message}]
|
2019-11-26 13:15:19 +00:00
|
|
|
(cond-> message
|
2017-12-05 13:03:25 +00:00
|
|
|
content
|
2022-12-20 14:45:37 +00:00
|
|
|
(assoc :text (:text content)
|
2019-11-26 13:15:19 +00:00
|
|
|
:sticker (:sticker content))
|
|
|
|
:always
|
2023-01-05 13:54:32 +00:00
|
|
|
(set/rename-keys {:chat-id :chat_id
|
|
|
|
:whisper-timestamp :whisperTimestamp
|
|
|
|
:community-id :communityId
|
|
|
|
:clock-value :clock})))
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn <-rpc
|
|
|
|
[message]
|
2019-11-26 13:15:19 +00:00
|
|
|
(-> message
|
2023-02-17 12:10:00 +00:00
|
|
|
(set/rename-keys
|
|
|
|
{:id :message-id
|
|
|
|
:whisperTimestamp :whisper-timestamp
|
|
|
|
:compressedKey :compressed-key
|
|
|
|
:editedAt :edited-at
|
|
|
|
:contactVerificationState :contact-verification-state
|
|
|
|
:contactRequestState :contact-request-state
|
|
|
|
:commandParameters :command-parameters
|
|
|
|
:gapParameters :gap-parameters
|
|
|
|
:messageType :message-type
|
|
|
|
:localChatId :chat-id
|
|
|
|
:communityId :community-id
|
|
|
|
:contentType :content-type
|
|
|
|
:clock :clock-value
|
|
|
|
:quotedMessage :quoted-message
|
|
|
|
:outgoingStatus :outgoing-status
|
|
|
|
:audioDurationMs :audio-duration-ms
|
|
|
|
:deleted :deleted?
|
|
|
|
:deletedForMe :deleted-for-me?
|
|
|
|
:deletedBy :deleted-by
|
|
|
|
:albumId :album-id
|
|
|
|
:imageWidth :image-width
|
|
|
|
:imageHeight :image-height
|
2023-04-07 15:49:56 +00:00
|
|
|
:new :new?
|
|
|
|
:albumImagesCount :album-images-count})
|
2019-11-26 13:15:19 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(update :quoted-message
|
2023-01-05 13:54:32 +00:00
|
|
|
set/rename-keys
|
2022-12-20 14:45:37 +00:00
|
|
|
{:parsedText :parsed-text :communityId :community-id})
|
2019-11-26 13:15:19 +00:00
|
|
|
(update :outgoing-status keyword)
|
2022-12-20 14:45:37 +00:00
|
|
|
(update :command-parameters
|
2023-01-05 13:54:32 +00:00
|
|
|
set/rename-keys
|
2022-12-20 14:45:37 +00:00
|
|
|
{:transactionHash :transaction-hash
|
|
|
|
:commandState :command-state})
|
|
|
|
(assoc :content {:chat-id (:chatId message)
|
|
|
|
:text (:text message)
|
|
|
|
:image (:image message)
|
|
|
|
:sticker (:sticker message)
|
|
|
|
:ens-name (:ensName message)
|
|
|
|
:line-count (:lineCount message)
|
|
|
|
:parsed-text (:parsedText message)
|
|
|
|
:links (:links message)
|
|
|
|
:rtl? (:rtl message)
|
|
|
|
:response-to (:responseTo message)}
|
2019-11-26 13:15:19 +00:00
|
|
|
:outgoing (boolean (:outgoingStatus message)))
|
2020-11-02 13:05:33 +00:00
|
|
|
(dissoc :ensName :chatId :text :rtl :responseTo :image :sticker :lineCount :parsedText :links)))
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn messages-by-chat-id-rpc
|
|
|
|
[chat-id
|
|
|
|
cursor
|
|
|
|
limit
|
|
|
|
on-success
|
|
|
|
on-error]
|
2022-12-22 06:03:55 +00:00
|
|
|
{:json-rpc/call [{:method "wakuext_chatMessages"
|
|
|
|
:params [chat-id cursor limit]
|
|
|
|
:on-success (fn [result]
|
|
|
|
(on-success (update result :messages #(map <-rpc %))))
|
|
|
|
:on-error on-error}]})
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn mark-seen-rpc
|
|
|
|
[chat-id ids on-success]
|
2022-12-22 06:03:55 +00:00
|
|
|
{:json-rpc/call [{:method "wakuext_markMessagesSeen"
|
|
|
|
:params [chat-id ids]
|
|
|
|
:on-success #(do
|
|
|
|
(log/debug "successfully marked as seen" %)
|
|
|
|
(when on-success (on-success chat-id ids %)))
|
|
|
|
:on-error #(log/error "failed to get messages" %)}]})
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn delete-message-rpc
|
|
|
|
[id]
|
2022-12-22 06:03:55 +00:00
|
|
|
{:json-rpc/call [{:method "wakuext_deleteMessage"
|
|
|
|
:params [id]
|
|
|
|
:on-success #(log/debug "successfully deleted message" id)
|
|
|
|
:on-error #(log/error "failed to delete message" % id)}]})
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn delete-messages-from-rpc
|
|
|
|
[author]
|
2022-12-22 06:03:55 +00:00
|
|
|
{:json-rpc/call [{:method "wakuext_deleteMessagesFrom"
|
|
|
|
:params [author]
|
|
|
|
:on-success #(log/debug "successfully deleted messages from" author)
|
|
|
|
:on-error #(log/error "failed to delete messages from" % author)}]})
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-20 14:45:37 +00:00
|
|
|
(defn delete-messages-by-chat-id-rpc
|
|
|
|
[chat-id]
|
2022-12-22 06:03:55 +00:00
|
|
|
{:json-rpc/call [{:method "wakuext_deleteMessagesByChatID"
|
|
|
|
:params [chat-id]
|
|
|
|
:on-success #(log/debug "successfully deleted messages by chat-id" chat-id)
|
|
|
|
:on-error #(log/error "failed to delete messages by chat-id" % chat-id)}]})
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-26 15:00:17 +00:00
|
|
|
(rf/defn delete-message
|
2022-12-20 14:45:37 +00:00
|
|
|
[cofx id]
|
2020-09-14 12:36:14 +00:00
|
|
|
(delete-message-rpc id))
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-26 15:00:17 +00:00
|
|
|
(rf/defn delete-messages-from
|
2022-12-20 14:45:37 +00:00
|
|
|
[cofx author]
|
2020-09-14 12:36:14 +00:00
|
|
|
(delete-messages-from-rpc author))
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-26 15:00:17 +00:00
|
|
|
(rf/defn mark-messages-seen
|
2022-12-20 14:45:37 +00:00
|
|
|
[cofx chat-id ids on-success]
|
2020-09-14 12:36:14 +00:00
|
|
|
(mark-seen-rpc chat-id ids on-success))
|
2019-08-05 06:17:55 +00:00
|
|
|
|
2022-12-26 15:00:17 +00:00
|
|
|
(rf/defn delete-messages-by-chat-id
|
2022-12-20 14:45:37 +00:00
|
|
|
[cofx chat-id]
|
2020-09-14 12:36:14 +00:00
|
|
|
(delete-messages-by-chat-id-rpc chat-id))
|