diff --git a/src/mocks/js_dependencies.cljs b/src/mocks/js_dependencies.cljs index 9de2676312..4df82b2447 100644 --- a/src/mocks/js_dependencies.cljs +++ b/src/mocks/js_dependencies.cljs @@ -368,17 +368,6 @@ :LineChart #js {} :LineChartBicolor #js {}}) -(def wallet-connect-client - #js - {:default #js {} - :CLIENT_EVENTS #js - {:session #js - {:request nil - :created nil - :deleted nil - :proposal nil - :updated nil}}}) - (def worklet-factory #js {:applyAnimationsToStyle (fn [])}) @@ -447,7 +436,6 @@ "../src/js/worklets/parallax.js" #js {} "../src/js/worklets/identifiers_highlighting.js" #js {} "./fleets.js" default-fleets - "@walletconnect/client" wallet-connect-client "../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json")) "../translations/de.json" (js/JSON.parse (slurp "./translations/de.json")) "../translations/en.json" (js/JSON.parse (slurp "./translations/en.json")) diff --git a/src/react_native/blob.cljs b/src/react_native/blob.cljs new file mode 100644 index 0000000000..e4846d4823 --- /dev/null +++ b/src/react_native/blob.cljs @@ -0,0 +1,10 @@ +(ns react-native.blob + (:require ["react-native-blob-util" :default ReactNativeBlobUtil] + [taoensso.timbre :as log])) + +(defn fetch + [base64-uri config on-success] + (-> (.config ReactNativeBlobUtil (clj->js config)) + (.fetch "GET" base64-uri) + (.then #(on-success (.path %))) + (.catch #(log/error "could not download uri" {:error %})))) diff --git a/src/status_im/chat/models/gaps.cljs b/src/status_im/chat/models/gaps.cljs deleted file mode 100644 index 38e924eb26..0000000000 --- a/src/status_im/chat/models/gaps.cljs +++ /dev/null @@ -1,64 +0,0 @@ -(ns status-im.chat.models.gaps - (:require - [status-im.mailserver.core :as mailserver] - [status-im2.contexts.chat.messages.list.events :as message-list] - [taoensso.timbre :as log] - [utils.re-frame :as rf])) - -(rf/defn gaps-filled - {:events [:gaps/filled]} - [{:keys [db] :as cofx} chat-id message-ids] - (rf/merge - cofx - {:db (-> db - (update-in [:messages chat-id] (fn [messages] (apply dissoc messages message-ids))) - (dissoc :mailserver/fetching-gaps-in-progress))} - (message-list/rebuild-message-list chat-id))) - -(rf/defn gaps-failed - {:events [:gaps/failed]} - [{:keys [db]} chat-id gap-ids error] - (log/error "failed to fetch gaps" chat-id gap-ids error) - {:db (dissoc db :mailserver/fetching-gaps-in-progress)}) - -(rf/defn sync-chat-from-sync-from-failed - {:events [::sync-chat-from-sync-from-failed]} - [{:keys [db]} chat-id error] - (log/error "failed to sync chat" chat-id error) - {:db (dissoc db :mailserver/fetching-gaps-in-progress)}) - -(rf/defn sync-chat-from-sync-from-success - {:events [::sync-chat-from-sync-from-success]} - [{:keys [db] :as cofx} chat-id synced-from] - (log/debug "synced success" chat-id synced-from) - {:db - (-> db - (assoc-in [:chats chat-id :synced-from] synced-from) - (dissoc :mailserver/fetching-gaps-in-progress))}) - -(rf/defn fill-gaps - [_ chat-id gap-ids] - {:json-rpc/call [{:method "wakuext_fillGaps" - :params [chat-id gap-ids] - :on-success #(rf/dispatch [:gaps/filled chat-id gap-ids %]) - :on-error #(rf/dispatch [:gaps/failed chat-id gap-ids %])}]}) - -(rf/defn sync-chat-from-sync-from - [_ chat-id] - (log/debug "syncing chat from sync from") - {:json-rpc/call [{:method "wakuext_syncChatFromSyncedFrom" - :params [chat-id] - :on-success #(rf/dispatch [::sync-chat-from-sync-from-success chat-id %]) - :on-error #(rf/dispatch [::sync-chat-from-sync-from-failed chat-id %])}]}) - -(rf/defn chat-ui-fill-gaps - {:events [:chat.ui/fill-gaps]} - [{:keys [db] :as cofx} chat-id gap-ids] - (let [use-status-nodes? (mailserver/fetch-use-mailservers? {:db db})] - (log/info "filling gaps if use-status-nodes = true" chat-id gap-ids) - (when use-status-nodes? - (rf/merge cofx - {:db (assoc db :mailserver/fetching-gaps-in-progress gap-ids)} - (if (= gap-ids #{:first-gap}) - (sync-chat-from-sync-from chat-id) - (fill-gaps chat-id gap-ids)))))) diff --git a/src/status_im/chat/models/images.cljs b/src/status_im/chat/models/images.cljs deleted file mode 100644 index 7aa0691044..0000000000 --- a/src/status_im/chat/models/images.cljs +++ /dev/null @@ -1,73 +0,0 @@ -(ns status-im.chat.models.images - (:require - ["react-native-blob-util" :default ReactNativeBlobUtil] - [re-frame.core :as re-frame] - [react-native.cameraroll :as cameraroll] - [react-native.fs :as fs] - [react-native.platform :as platform] - [react-native.share :as share] - [status-im.ui.components.react :as react] - [status-im2.constants :as constants] - [taoensso.timbre :as log] - [utils.re-frame :as rf])) - -(def temp-image-url (str (fs/cache-dir) "/StatusIm_Image.jpeg")) - -(defn download-image-http - [base64-uri on-success] - (-> (.config ReactNativeBlobUtil - (clj->js {:trusty platform/ios? - :path temp-image-url})) - (.fetch "GET" base64-uri) - (.then #(on-success (.path %))) - (.catch #(log/error "could not download image" {:error %})))) - -(defn share-image - [uri] - (download-image-http uri - (fn [downloaded-url] - (share/open {:url (str (when platform/android? "file://") downloaded-url) - :isNewTask true} - #(fs/unlink downloaded-url) - #(fs/unlink downloaded-url))))) - -(defn save-image-to-gallery - [base64-uri on-success] - (-> (download-image-http base64-uri cameraroll/save-image) - (.then on-success) - (.catch #(log/error (str "could not save image to gallery" %))))) - -(re-frame/reg-fx - ::chat-open-image-picker-camera - (fn [current-chat-id] - (react/show-image-picker-camera - #(re-frame/dispatch [:chat.ui/image-captured current-chat-id (.-path %)]) - {}))) - -(rf/defn image-captured - {:events [:chat.ui/image-captured]} - [{:keys [db]} chat-id uri] - (let [current-chat-id (or chat-id (:current-chat-id db)) - images (get-in db [:chat/inputs current-chat-id :metadata :sending-image])] - (when (and (< (count images) constants/max-album-photos) - (not (get images uri))) - {::image-selected [uri current-chat-id]}))) - -(rf/defn clear-sending-images - {:events [:chat.ui/clear-sending-images]} - [{:keys [db]}] - {:db (update-in db [:chat/inputs (:current-chat-id db) :metadata] assoc :sending-image {})}) - -(rf/defn image-unselected - {:events [:chat.ui/image-unselected]} - [{:keys [db]} original] - (let [current-chat-id (:current-chat-id db)] - {:db (update-in db [:chat/inputs current-chat-id :metadata :sending-image] dissoc (:uri original))})) - -(rf/defn chat-show-image-picker-camera - {:events [:chat.ui/show-image-picker-camera]} - [{:keys [db]} chat-id] - (let [current-chat-id (or chat-id (:current-chat-id db)) - images (get-in db [:chat/inputs current-chat-id :metadata :sending-image])] - (when (< (count images) constants/max-album-photos) - {::chat-open-image-picker-camera current-chat-id}))) diff --git a/src/status_im/chat/models/input.cljs b/src/status_im/chat/models/input.cljs index ccfeca0dd6..cea8ebb682 100644 --- a/src/status_im/chat/models/input.cljs +++ b/src/status_im/chat/models/input.cljs @@ -5,7 +5,6 @@ [goog.object :as object] [re-frame.core :as re-frame] [status-im.chat.models.mentions :as mentions] - [status-im.chat.models.message-content :as message-content] [status-im.data-store.messages :as data-store-messages] [status-im2.constants :as constants] [status-im2.contexts.chat.composer.link-preview.events :as link-preview] @@ -139,14 +138,21 @@ (let [current-chat-id (:current-chat-id db)] {:db (assoc-in db [:chat/inputs current-chat-id :metadata :responding-to-message] nil)})) +(defn emoji-only-content? + "Determines if text is just an emoji" + [{:keys [text response-to]}] + (and (not response-to) + (string? text) + (re-matches constants/regx-emoji text))) + (defn build-text-message [{:keys [db]} input-text current-chat-id] (when-not (string/blank? input-text) (let [{:keys [message-id]} (get-in db [:chat/inputs current-chat-id :metadata :responding-to-message]) preferred-name (get-in db [:profile/profile :preferred-name]) - emoji? (message-content/emoji-only-content? {:text input-text - :response-to message-id})] + emoji? (emoji-only-content? {:text input-text + :response-to message-id})] {:chat-id current-chat-id :content-type (if emoji? constants/content-type-emoji @@ -243,7 +249,7 @@ {:json-rpc/call [{:method "wakuext_editMessage" :params [{:id message-id :text text - :content-type (if (message-content/emoji-only-content? + :content-type (if (emoji-only-content? {:text text :response-to quoted-message}) constants/content-type-emoji diff --git a/src/status_im/chat/models/message.cljs b/src/status_im/chat/models/message.cljs index df1ca7a124..2e61a3815c 100644 --- a/src/status_im/chat/models/message.cljs +++ b/src/status_im/chat/models/message.cljs @@ -9,7 +9,6 @@ [status-im2.contexts.chat.messages.delete-message.events :as delete-message] [status-im2.contexts.chat.messages.list.events :as message-list] [status-im2.contexts.chat.messages.list.state :as view.state] - [taoensso.timbre :as log] [utils.re-frame :as rf])) (defn- message-loaded? @@ -116,30 +115,12 @@ (when (and (:current-chat-id db) (= "active" (:app-state db))) [{:ms 100 :dispatch [:chat/mark-all-as-read (:current-chat-id db)]}]))})) -(rf/defn update-db-message-status - [{:keys [db] :as cofx} chat-id message-id status] - (when (get-in db [:messages chat-id message-id]) - (rf/merge cofx - {:db (assoc-in db - [:messages chat-id message-id :outgoing-status] - status)}))) - (rf/defn update-message-status - [{:keys [db] :as cofx} chat-id message-id status] - (rf/merge cofx - (update-db-message-status chat-id message-id status))) - -(rf/defn resend-message - [{:keys [db] :as cofx} chat-id message-id] - (rf/merge cofx - {:json-rpc/call [{:method "wakuext_reSendChatMessage" - :params [message-id] - :on-success #(log/debug "re-sent message successfully") - :on-error #(log/error "failed to re-send message" %)}]} - (update-message-status chat-id message-id :sending))) + [{:keys [db]} chat-id message-id status] + (when (get-in db [:messages chat-id message-id]) + {:db (assoc-in db [:messages chat-id message-id :outgoing-status] status)})) (rf/defn handle-removed-messages - {:events [::handle-removed-messages]} [{:keys [db] :as cofx} removed-messages] (let [mark-as-deleted-fx (->> removed-messages (map #(assoc % @@ -166,14 +147,6 @@ (concat mark-as-seen-fx) (conj remove-messages-fx))))) -(comment - (handle-removed-messages - {:db {:messages {:c1 {:m1 {:chat-id :c1 :message-id :m1} - :m2 {:chat-id :c1 :message-id :m2}} - :c2 {:m3 {:chat-id :c2 :message-id :m3} - :m4 {:chat-id :c2 :message-id :m4}}}}} - [:m1 :m3])) - (defn remove-cleared-message [messages cleared-at] (into {} @@ -182,7 +155,6 @@ messages))) (rf/defn handle-cleared-histories-messages - {:events [::handle-cleared-hisotories-messages]} [{:keys [db]} cleared-histories] {:db (reduce (fn [acc current] (update-in acc diff --git a/src/status_im/chat/models/message_content.cljs b/src/status_im/chat/models/message_content.cljs deleted file mode 100644 index 514cff79d8..0000000000 --- a/src/status_im/chat/models/message_content.cljs +++ /dev/null @@ -1,10 +0,0 @@ -(ns status-im.chat.models.message-content - (:require - [status-im2.constants :as constants])) - -(defn emoji-only-content? - "Determines if text is just an emoji" - [{:keys [text response-to]}] - (and (not response-to) - (string? text) - (re-matches constants/regx-emoji text))) diff --git a/src/status_im/events.cljs b/src/status_im/events.cljs index c8ccb8536a..89c095dd9c 100644 --- a/src/status_im/events.cljs +++ b/src/status_im/events.cljs @@ -10,8 +10,6 @@ status-im.bootnodes.core status-im.browser.core status-im.browser.permissions - status-im.chat.models.gaps - status-im.chat.models.images status-im.chat.models.input status-im.chat.models.loading status-im.contact.block diff --git a/src/status_im/qr_scanner/core.cljs b/src/status_im/qr_scanner/core.cljs index 2aa447bfa2..a19ec9641b 100644 --- a/src/status_im/qr_scanner/core.cljs +++ b/src/status_im/qr_scanner/core.cljs @@ -96,8 +96,6 @@ :contact (handle-view-profile cofx data) :browser (handle-browse cofx data) :eip681 (handle-eip681 cofx data) - ;; Re-enable with https://github.com/status-im/status-mobile/issues/13429 - ;;:wallet-connect (handle-wallet-connect cofx data) :localpairing (handle-local-pairing cofx data) (do (log/info "Unable to find matcher for scanned value" diff --git a/src/status_im/subs/root.cljs b/src/status_im/subs/root.cljs index ad066d6172..2e36ef93cf 100644 --- a/src/status_im/subs/root.cljs +++ b/src/status_im/subs/root.cljs @@ -121,14 +121,6 @@ (reg-root-key-sub :signing/tx :signing/tx) (reg-root-key-sub :signing/edit-fee :signing/edit-fee) -;; wallet connect -(reg-root-key-sub :wallet-connect/proposal-metadata :wallet-connect/proposal-metadata) -(reg-root-key-sub :wallet-connect/enabled? :wallet-connect/enabled?) -(reg-root-key-sub :wallet-connect/session-connected :wallet-connect/session-connected) -(reg-root-key-sub :wallet-connect/showing-app-management-sheet? - :wallet-connect/showing-app-management-sheet?) -(reg-root-key-sub :wallet-connect/sessions :wallet-connect/sessions) -(reg-root-key-sub :wallet-connect/session-managed :wallet-connect/session-managed) (reg-root-key-sub :contact-requests/pending :contact-requests/pending) (reg-root-key-sub :bug-report/description-error :bug-report/description-error) diff --git a/src/status_im/ui/components/chat_icon/screen.cljs b/src/status_im/ui/components/chat_icon/screen.cljs index ec807a51da..22894669a1 100644 --- a/src/status_im/ui/components/chat_icon/screen.cljs +++ b/src/status_im/ui/components/chat_icon/screen.cljs @@ -98,17 +98,6 @@ {:public-key chat-id :photo-container (:default-chat-icon styles)}])]) -(defn chat-icon-view-toolbar - [chat-id group-chat name color emoji size] - [emoji-chat-icon-view chat-id group-chat name emoji - {:container (styles/container-chat-toolbar size) - :size size - :chat-icon (styles/chat-icon-chat-toolbar size) - :default-chat-icon (styles/default-chat-icon-chat-toolbar color size) - :default-chat-icon-text (if (string/blank? emoji) - (styles/default-chat-icon-text size) - (styles/emoji-chat-icon-text size))}]) - (defn chat-icon-view-chat-list [chat-id group-chat name color] [chat-icon-view chat-id group-chat name @@ -118,19 +107,6 @@ :default-chat-icon (styles/default-chat-icon-chat-list color) :default-chat-icon-text (styles/default-chat-icon-text 40)}]) -(defn chat-icon-view-chat-list-redesign - [chat-id group-chat name color size] - [chat-icon-view chat-id group-chat name - {:container (if (= size 20) - (styles/token-icon-container-chat-list size) - (styles/community-icon-container-chat-list size)) - :size size - :chat-icon (if (= size 20) - (styles/community-icon-chat-list-redesign size) - (styles/community-icon-chat-list size)) - :default-chat-icon (styles/default-list-chat-icon-redesign color size) - :default-chat-icon-text (styles/default-chat-icon-text size)}]) - (defn chat-icon-view-chat-sheet [chat-id group-chat name color] [chat-icon-view chat-id group-chat name @@ -140,17 +116,6 @@ :default-chat-icon (styles/default-chat-icon-chat-list color) :default-chat-icon-text (styles/default-chat-icon-text 40)}]) -(defn emoji-chat-icon-view-chat-sheet - [chat-id group-chat name color emoji] - [emoji-chat-icon-view chat-id group-chat name emoji - {:container styles/container-chat-list - :size 40 - :chat-icon styles/chat-icon-chat-list - :default-chat-icon (styles/default-chat-icon-chat-list color) - :default-chat-icon-text (if (string/blank? emoji) - (styles/default-chat-icon-text 40) - (styles/emoji-chat-icon-text 40))}]) - (defn custom-icon-view-list [name color & [size]] [rn/view (styles/container-list-size (or size 40)) @@ -181,24 +146,6 @@ :default-chat-icon (styles/default-chat-icon-profile colors/default-chat-color size) :default-chat-icon-text (styles/default-chat-icon-text size)}]) -(defn chat-intro-icon-view - [icon-text chat-id group-chat styles] - (if group-chat - [default-chat-icon icon-text styles] - (let [photo-path @(re-frame.core/subscribe [:chats/photo-path chat-id])] - (when-not (string/blank? photo-path) - [photos/photo photo-path styles])))) - -(defn emoji-chat-intro-icon-view - [icon-text chat-id group-chat emoji styles] - (if group-chat - (if (string/blank? emoji) - [default-chat-icon icon-text styles] - [emoji-chat-icon emoji styles]) - (let [photo-path @(re-frame.core/subscribe [:chats/photo-path chat-id])] - (when-not (string/blank? photo-path) - [photos/photo photo-path styles])))) - (defn profile-icon-view [photo-path name color emoji edit? size override-styles public-key community?] (let [styles (merge {:container {:width size :height size} diff --git a/src/status_im/ui/screens/chat/group.cljs b/src/status_im/ui/screens/chat/group.cljs index 08f50ad857..b8a2a4a4ce 100644 --- a/src/status_im/ui/screens/chat/group.cljs +++ b/src/status_im/ui/screens/chat/group.cljs @@ -6,19 +6,9 @@ [status-im.ui.components.core :as quo] [status-im.ui.components.react :as react] [status-im2.constants :as constants] - [utils.debounce :as debounce] [utils.i18n :as i18n]) (:require-macros [status-im.utils.views :refer [defview letsubs]])) -(defn decline-chat - [chat-id] - [quo/button - {:type :secondary - :accessibility-label :decline-chat-button - :on-press #(debounce/dispatch-and-chill [:group-chats.ui/leave-chat-confirmed chat-id] - 2000)} - (i18n/label :t/group-chat-decline-invitation)]) - (def message-max-length 100) (defn request-membership diff --git a/src/status_im/ui/screens/chat/message/gap.cljs b/src/status_im/ui/screens/chat/message/gap.cljs deleted file mode 100644 index 53bbcfda5f..0000000000 --- a/src/status_im/ui/screens/chat/message/gap.cljs +++ /dev/null @@ -1,42 +0,0 @@ -(ns status-im.ui.screens.chat.message.gap - (:require-macros [status-im.utils.views :as views]) - (:require - [quo.core :as quo] - [re-frame.core :as re-frame] - [status-im.ui.components.react :as react] - [status-im.ui.screens.chat.styles.input.gap :as style] - [utils.datetime :as datetime] - [utils.i18n :as i18n])) - -(views/defview gap - [{:keys [gap-ids chat-id gap-parameters public? community?]}] - (views/letsubs [in-progress? [:chats/fetching-gap-in-progress? - gap-ids - chat-id] - connected? [:mailserver/connected?] - use-status-nodes? [:mailserver/use-status-nodes?] - first-gap? (= gap-ids #{:first-gap}) - window-height [:dimensions/window-height]] - (when (or (not first-gap?) public? community?) - [react/view {:style (when-not in-progress? style/gap-container)} - [react/touchable-highlight - {:on-press (when (and (not in-progress?) use-status-nodes? connected?) - (re-frame/dispatch [:chat.ui/fill-gaps chat-id gap-ids])) - :style {:height (if in-progress? window-height 48)}} - [react/view {:style style/label-container} - (if in-progress? - [quo/skeleton-list - {:parent-height window-height - :animated true - :content :messages}] - [react/nested-text - {:style (style/gap-text (and connected? use-status-nodes?))} - (i18n/label (if first-gap? :t/load-more-messages :t/fetch-messages)) - (when first-gap? - [{:style style/date} - (let [date (datetime/timestamp->long-date - (* 1000 (:from gap-parameters)))] - (str - "\n" - (i18n/label :t/load-messages-before - {:date date})))])])]]]))) diff --git a/src/status_im/ui/screens/chat/styles/message/message.cljs b/src/status_im/ui/screens/chat/message/legacy_style.cljs similarity index 60% rename from src/status_im/ui/screens/chat/styles/message/message.cljs rename to src/status_im/ui/screens/chat/message/legacy_style.cljs index bbd3eb8d6c..d7c05c99ee 100644 --- a/src/status_im/ui/screens/chat/styles/message/message.cljs +++ b/src/status_im/ui/screens/chat/message/legacy_style.cljs @@ -1,4 +1,4 @@ -(ns status-im.ui.screens.chat.styles.message.message +(ns status-im.ui.screens.chat.message.legacy-style (:require [quo.foundations.colors :as quo.colors] [quo.foundations.typography :as typography] @@ -10,50 +10,6 @@ [] {:color colors/text}) -(defn system-message-body - [_] - {:margin-top 4 - :margin-left 8 - :margin-right 8 - :align-self :center - :align-items :center}) - -(defn message-body - [] - (let [align :flex-start - direction :row] - {:flex-direction direction - :margin-top 4 - :align-self align - :align-items align})) - -(def message-timestamp - {:font-size 10}) - -(defn message-status-placeholder - [] - (merge message-timestamp {:opacity 0 :color "rgba(0,0,0,0)"})) - -(defn message-timestamp-text - [] - (merge message-timestamp - {:color colors/gray - :text-align :center})) - -(defn message-status-text - [] - {:font-size 10 - :line-height 10 - :border-color :red - :border-width 1 - :color :red}) - -(defn audio-message-timestamp-text - [] - (merge message-timestamp - {:line-height 10 - :color colors/gray})) - (defn message-wrapper [{:keys [in-popover?]}] (if (not in-popover?) @@ -61,67 +17,6 @@ :padding-right 5} {:margin-right 10})) -(defn message-author-wrapper - [] - {:flex-direction :column - :flex-shrink 1 - :align-items :flex-start - :margin-left 4}) - -(defn pin-indicator - [] - (merge {:flex-direction :row})) - -(defn pin-indicator-container - [] - {:margin-top 4 - :margin-left 54 - :top 4 - :justify-content :center - :align-self :flex-start - :align-items :flex-start}) - -(defn pinned-by-text-icon-container - [] - {:flex-direction :row - :align-items :flex-start - :top 5 - :left 8 - :position :absolute}) - -(defn pin-icon-container - [] - {:flex-direction :row - :margin-top 1}) - -(defn pinned-by-text - [] - {:margin-left 5}) - -(def message-author-touchable - {:margin-left 0 - :flex-direction :row}) - -(def delivery-text - {:color colors/gray - :margin-top 2 - :font-size 12}) - -(def not-sent-view - {:flex-direction :row - :margin-bottom 2 - :padding-top 2}) - -(def not-sent-text - (assoc delivery-text - :color colors/red - :text-align :right - :padding-top 4)) - -(def not-sent-icon - {:padding-top 3 - :padding-left 3}) - (defn emoji-message [{:keys [incoming-group]}] {:font-size 28 @@ -129,10 +24,6 @@ :margin-right 0 ;; Margin to display outgoing message status :margin-top (if incoming-group 4 0)}) -(def message-view-wrapper - {:align-self :flex-end - :flex-direction :row-reverse}) - (defn message-view [{:keys [content-type]}] (merge @@ -154,40 +45,6 @@ :font-size 14 :color colors/gray}) -(defn message-author-name - [chosen?] - {:font-size (if chosen? 13 12) - :font-weight (if chosen? "500" "400") - :padding-top 6 - :padding-left 12 - :text-align-vertical :center}) - -(defn quoted-message-container - [] - {:margin-bottom 6 - :margin-top 5 - :padding-horizontal 15}) - -(def quoted-message-author-container - {:flex-direction :row - :align-items :center - :justify-content :flex-start}) - -(defn quoted-message-author - [chosen?] - (assoc (message-author-name chosen?) - :padding-bottom 6 - :padding-top 0 - :padding-left 0 - :line-height 18 - :font-weight "500" - :color colors/gray)) - -(defn quoted-message-text - [] - {:font-size 14 - :color colors/gray}) - (defn message-default-style [] {:font-family "Inter-Regular" @@ -197,19 +54,11 @@ :letter-spacing -0.135}) ;; Markdown styles - (defn default-text-style [] {:max-font-size-multiplier react/max-font-size-multiplier :style (message-default-style)}) -(defn outgoing-text-style - [] - (update (default-text-style) - :style - assoc - :color colors/white-persist)) - (defn system-text-style [] (update (default-text-style) @@ -284,21 +133,11 @@ :line-height 18.2 :letter-spacing (typography/tracking 13)))) -(def code-block-background "#2E386B") - -(defn inline-code-style - [] - {:color colors/white-persist - :background-color code-block-background}) - (def codeblock-style {:padding 10 - :background-color code-block-background + :background-color "#2E386B" :border-radius 4}) -(def codeblock-text-style - {:color colors/white-persist}) - (defn default-blockquote-style [] {:style {:border-left-width 2 @@ -330,24 +169,6 @@ (outgoing-blockquote-text-style) (default-blockquote-text-style)) -(defn image-message - [{:keys [width height]}] - {:overflow :hidden - :border-radius 8 - :width width - :height height}) - -(defn image-message-border - [opts] - (merge (image-message opts) - {:opacity (:opacity opts) - :border-width 1 - :top 0 - :left 0 - :position :absolute - :background-color :transparent - :border-color colors/black-transparent})) - (defn community-verified [] {:border-right-width 1 diff --git a/src/status_im/ui/screens/chat/message/legacy_view.cljs b/src/status_im/ui/screens/chat/message/legacy_view.cljs index c3ab648f62..b2ae68264f 100644 --- a/src/status_im/ui/screens/chat/message/legacy_view.cljs +++ b/src/status_im/ui/screens/chat/message/legacy_view.cljs @@ -7,9 +7,7 @@ [status-im.react-native.resources :as resources] [status-im.ui.components.colors :as quo.colors] [status-im.ui.components.fast-image :as fast-image] - [status-im.ui.screens.chat.message.gap :as message.gap] - [status-im.ui.screens.chat.styles.message.message :as style] - [status-im.ui.screens.chat.utils :as chat.utils] + [status-im.ui.screens.chat.message.legacy-style :as style] [status-im2.constants :as constants] [status-im2.contexts.chat.messages.delete-message-for-me.events] [status-im2.contexts.chat.messages.delete-message.events] @@ -131,16 +129,11 @@ [:<>] (:parsed-text content)))) -(defview message-author-name - [from opts max-length] - (letsubs [contact-with-names [:contacts/contact-by-identity from]] - (chat.utils/format-author contact-with-names opts max-length))) - (defmulti ->message :content-type) (defmethod ->message constants/content-type-gap - [message] - [message.gap/gap message]) + [_] + [rn/view]) ;; STATUS ? whats that ? (defmethod ->message constants/content-type-status diff --git a/src/status_im/ui/screens/chat/photos.cljs b/src/status_im/ui/screens/chat/photos.cljs index ddb45d47f9..d15cff69c3 100644 --- a/src/status_im/ui/screens/chat/photos.cljs +++ b/src/status_im/ui/screens/chat/photos.cljs @@ -2,18 +2,41 @@ (:require [status-im.ui.components.colors :as colors] [status-im.ui.components.fast-image :as fast-image] - [status-im.ui.components.react :as react] - [status-im.ui.screens.chat.styles.photos :as style])) + [status-im.ui.components.react :as react])) + +(defn radius [size] (/ size 2)) + +(defn photo-container + [size] + {:position :relative + :border-radius (radius size)}) + +(defn photo-border + ([size] (photo-border size :absolute)) + ([size position] + {:position position + :width size + :height size + :border-color colors/black-transparent + :border-width 1 + :border-radius (radius size)})) + +(defn photo-style + [size] + {:border-radius (radius size) + :width size + :height size + :background-color colors/white}) (def memo-photo-rend (memoize (fn [photo-path size accessibility-label _] - [react/view {:style (style/photo-container size)} + [react/view {:style (photo-container size)} [fast-image/fast-image {:source photo-path - :style (style/photo size) + :style (photo-style size) :accessibility-label (or accessibility-label :chat-icon)}] - [react/view {:style (style/photo-border size)}]]))) + [react/view {:style (photo-border size)}]]))) ;; "(colors/dark?)" is passed to memoized function to avoid previous themes cache ;; TODO: it's only used for old code, `quo/user-avatar` should be used instead for all the new one diff --git a/src/status_im/ui/screens/chat/sheets.cljs b/src/status_im/ui/screens/chat/sheets.cljs deleted file mode 100644 index c2a773baec..0000000000 --- a/src/status_im/ui/screens/chat/sheets.cljs +++ /dev/null @@ -1,125 +0,0 @@ -(ns status-im.ui.screens.chat.sheets - (:require - [re-frame.core :as re-frame] - [status-im.ui.components.chat-icon.screen :as chat-icon] - [status-im.ui.components.list.item :as list.item] - [status-im.ui.components.react :as react] - [status-im2.constants :as constants] - [utils.i18n :as i18n])) - -(defn hide-sheet-and-dispatch - [event] - (re-frame/dispatch [:bottom-sheet/hide-old]) - (re-frame/dispatch event)) - -(defn one-to-one-chat-accents - [chat-id] - (let [{:keys [primary-name] :as contact} @(re-frame/subscribe [:contacts/contact-by-identity chat-id])] - [react/view - [list.item/list-item - {:theme :accent - :icon [chat-icon/contact-icon-contacts-tab contact] - :title primary-name - :subtitle (i18n/label :t/view-profile) - :accessibility-label :view-chat-details-button - :chevron true - :on-press #(do - (hide-sheet-and-dispatch [:chat.ui/show-profile chat-id]) - (re-frame/dispatch [:pin-message/load-pin-messages chat-id]))}] - [list.item/list-item - {:theme :accent - :title (i18n/label :t/mark-all-read) - :accessibility-label :mark-all-read-button - :icon :main-icons/check - :on-press #(hide-sheet-and-dispatch [:chat.ui/mark-all-read-pressed chat-id])}] - [list.item/list-item - {:theme :negative - :title (i18n/label :t/delete-chat) - :accessibility-label :delete-chat-button - :icon :main-icons/delete - :on-press #(re-frame/dispatch [:chat.ui/show-remove-confirmation chat-id])}]])) - -(defn community-chat-accents - [] - (fn [{:keys [chat-id group-chat chat-name color emoji]}] - [react/view - [list.item/list-item - {:theme :accent - :title chat-name - :icon [chat-icon/emoji-chat-icon-view-chat-sheet - chat-id group-chat chat-name color emoji] - :subtitle (i18n/label :t/view-details) - :chevron true - :accessibility-label :view-community-channel-details - :on-press #(do - (hide-sheet-and-dispatch [:navigate-to :community-channel-details - {:chat-id chat-id}]) - (re-frame/dispatch [:pin-message/load-pin-messages chat-id]))}] - [list.item/list-item - {:theme :accent - :title (i18n/label :t/mark-all-read) - :accessibility-label :mark-all-read-button - :icon :main-icons/check - :on-press #(hide-sheet-and-dispatch [:chat.ui/mark-all-read-pressed chat-id])}]])) - -(defn group-chat-accents - [] - (fn [{:keys [chat-id group-chat chat-name color invitation-admin]}] - (let [{:keys [member?]} @(re-frame/subscribe [:group-chat/inviter-info chat-id]) - removed? @(re-frame/subscribe [:group-chat/removed-from-current-chat?])] - (if invitation-admin - [list.item/list-item - {:theme :accent - :title (i18n/label :t/remove) - :accessibility-label :remove-group-chat - :icon :main-icons/delete - :on-press #(hide-sheet-and-dispatch [:group-chats.ui/remove-chat-confirmed - chat-id])}] - [react/view - [list.item/list-item - {:theme :accent - :title chat-name - :subtitle (i18n/label :t/group-info) - :icon [chat-icon/chat-icon-view-chat-sheet - chat-id group-chat chat-name color] - :chevron true - :on-press #(do - (hide-sheet-and-dispatch [:show-group-chat-profile chat-id]) - (re-frame/dispatch [:pin-message/load-pin-messages chat-id]))}] - [list.item/list-item - {:theme :accent - :title (i18n/label :t/mark-all-read) - :accessibility-label :mark-all-read-button - :icon :main-icons/check - :on-press #(hide-sheet-and-dispatch [:chat.ui/mark-all-read-pressed chat-id])}] - (when member? - [list.item/list-item - {:theme :negative - :title (i18n/label :t/leave-chat) - :accessibility-label :leave-chat-button - :icon :main-icons/arrow-left - :on-press #(re-frame/dispatch [:group-chats.ui/leave-chat-pressed chat-id])}]) - (when removed? - [list.item/list-item - {:theme :accent - :title (i18n/label :t/remove) - :accessibility-label :remove-group-chat - :icon :main-icons/delete - :on-press #(hide-sheet-and-dispatch [:group-chats.ui/remove-chat-confirmed - chat-id])}])])))) - -(defn actions - [{:keys [chat-type chat-id] - :as current-chat}] - (cond - - (= chat-type constants/community-chat-type) - [community-chat-accents current-chat] - - (= chat-type constants/private-group-chat-type) - [group-chat-accents current-chat] - - :else [one-to-one-chat-accents chat-id])) - - - diff --git a/src/status_im/ui/screens/chat/stickers/styles.cljs b/src/status_im/ui/screens/chat/stickers/styles.cljs deleted file mode 100644 index beff895e40..0000000000 --- a/src/status_im/ui/screens/chat/stickers/styles.cljs +++ /dev/null @@ -1,15 +0,0 @@ -(ns status-im.ui.screens.chat.stickers.styles) - -(def stickers-panel - {:flex 1 :margin 5 :flex-direction :row :justify-content :space-between :flex-wrap :wrap}) - -(defn pack-icon - [background-color icon-size icon-horizontal-margin] - {:background-color background-color - :margin-vertical 5 - :margin-horizontal icon-horizontal-margin - :height icon-size - :width icon-size - :border-radius (/ icon-size 2) - :align-items :center - :justify-content :center}) diff --git a/src/status_im/ui/screens/chat/stickers/views.cljs b/src/status_im/ui/screens/chat/stickers/views.cljs deleted file mode 100644 index a00fbd248d..0000000000 --- a/src/status_im/ui/screens/chat/stickers/views.cljs +++ /dev/null @@ -1,169 +0,0 @@ -(ns status-im.ui.screens.chat.stickers.views - (:require-macros [status-im.utils.views :refer [defview letsubs]]) - (:require - [re-frame.core :as re-frame] - [reagent.core :as reagent] - [status-im.ui.components.colors :as colors] - [status-im.ui.components.core :as quo] - [status-im.ui.components.fast-image :as fast-image] - [status-im.ui.components.icons.icons :as icons] - [status-im.ui.components.react :as react] - [status-im.ui.screens.chat.stickers.styles :as styles] - [utils.debounce :as debounce] - [utils.i18n :as i18n])) - -(def icon-size 28) -(def icon-horizontal-margin 8) -(def indicator-width 16) -(def dx (- (+ icon-horizontal-margin (/ icon-size 2)) (/ indicator-width 2))) -(def icon-container (+ (* icon-horizontal-margin 2) icon-size)) -(def scroll-x (reagent/atom 0)) - -(defn- no-stickers-yet-panel - [] - [react/view {:style {:flex 1 :align-items :center :justify-content :center}} - [icons/icon :stickers-icons/stickers-big - {:color colors/gray - :width 64 - :height 64}] - [react/text {:style {:margin-vertical 8 :font-size 17}} (i18n/label :t/you-dont-have-stickers)] - [quo/button - {:type :secondary - :on-press #(re-frame/dispatch [:navigate-to :stickers])} - (i18n/label :t/get-stickers)]]) - -(defn- stickers-panel - [stickers window-width] - [react/view {:width window-width :flex 1} - [react/scroll-view - [react/view {:style styles/stickers-panel} - (for [{:keys [url] :as sticker} stickers] - ^{:key (str url)} - [react/touchable-highlight - {:style {:height 75 :width 75 :margin 5} - :on-press #(debounce/dispatch-and-chill [:chat/send-sticker sticker] 1000)} - [fast-image/fast-image - {:style {:width "100%" :height "100%"} - :accessibility-label :sticker-icon - :source {:uri (str url "&download=true")}}]])]]]) - -(defview recent-stickers-panel - [window-width] - (letsubs [stickers [:stickers/recent-stickers]] - (if (seq stickers) - [stickers-panel stickers window-width] - [react/view - {:style {:flex 1 - :align-items :center - :justify-content :center - :width window-width}} - [icons/icon :stickers-icons/sticker-history - {:width 64 - :height 64 - :color colors/gray}] - [react/text - {:style {:margin-top 12 - :font-size 17}} - (i18n/label :t/recently-used-stickers)]]))) - -(defn update-scroll-position - [^js ref installed-packs selected-pack window-width animated?] - (when ref - ;; bug on Android https://github.com/facebook/react-native/issues/24531 - (js/setTimeout - (fn [] - (let [x (if (= selected-pack :recent) - 0 - (* (inc (some #(when (= selected-pack (:id (second %))) (first %)) - (map-indexed vector installed-packs))) - window-width))] - (.scrollTo ref #js {:x x :animated animated?}))) - 1))) - -(defn on-scroll - [^js e installed-packs window-width] - (let [num (/ (.-nativeEvent.contentOffset.x e) window-width) - pack-id (if (zero? num) - :recent - (get-in (vec installed-packs) [(dec num) :id]))] - (when pack-id - (re-frame/dispatch [:stickers/select-pack pack-id])))) - -(defview stickers-paging-panel - [installed-packs selected-pack] - (letsubs [ref (atom nil) - width [:dimensions/window-width]] - {:UNSAFE_componentWillUpdate - (fn [_ [_ installed-packs selected-pack]] - (update-scroll-position @ref installed-packs selected-pack width true)) - :component-did-mount #(update-scroll-position @ref installed-packs selected-pack width false)} - [react/scroll-view - {:style {:flex 1} - :horizontal true - :paging-enabled true - :ref #(reset! ref %) - :shows-horizontal-scroll-indicator false - :on-momentum-scroll-end #(on-scroll % installed-packs width) - :scroll-event-throttle 8 - :scroll-to-overflow-enabled true - :on-scroll #(reset! scroll-x (.-nativeEvent.contentOffset.x ^js %))} - ^{:key "recent"} - [recent-stickers-panel width] - (for [{:keys [stickers id]} installed-packs] - ^{:key (str "sticker" id)} - [stickers-panel (map #(assoc % :pack id) stickers) width])])) - -(defn pack-icon - [{:keys [id on-press background-color] - :or {on-press #(re-frame/dispatch [:stickers/select-pack id])}} - icon] - [react/touchable-highlight {:on-press on-press} - [react/view {:style {:align-items :center}} - [react/view {:style (styles/pack-icon background-color icon-size icon-horizontal-margin)} - icon]]]) - -(defview scroll-indicator - [] - (letsubs [window-width [:dimensions/window-width]] - [react/view - {:style {:height 2 - :width indicator-width - :border-radius 1 - :margin-left (+ dx (* icon-container (/ @scroll-x window-width))) - :background-color colors/blue}}])) - -(defview stickers-view - [] - (letsubs [selected-pack [:stickers/selected-pack] - installed-packs [:stickers/installed-packs]] - [react/view - {:style {:background-color colors/white - :flex 1}} - (cond - (= selected-pack :recent) [stickers-paging-panel installed-packs selected-pack] - (not (seq installed-packs)) [no-stickers-yet-panel] - :else [stickers-paging-panel installed-packs selected-pack]) - [react/view {:style {:flex-direction :row :padding-horizontal 4}} - [pack-icon - {:on-press #(re-frame/dispatch [:navigate-to :stickers]) - :selected? false - :background-color colors/blue} - [icons/icon :main-icons/add {:width 20 :height 20 :color colors/white-persist}]] - [react/view {:width 2}] - [react/scroll-view {:horizontal true :style {:padding-left 2}} - [react/view - [react/view {:style {:flex-direction :row}} - [pack-icon {:id :recent :background-color colors/white} - [icons/icon :stickers-icons/recent - {:color colors/gray - :width 44 - :height 44}]] - (for [{:keys [id thumbnail]} installed-packs] - ^{:key (str "pack-icon" id)} - [pack-icon - {:id id - :background-color colors/white} - [fast-image/fast-image - {:style {:width icon-size :height icon-size :border-radius (/ icon-size 2)} - :source {:uri (str thumbnail "&download=true")}}]])] - [scroll-indicator]]]]])) diff --git a/src/status_im/ui/screens/chat/styles/input/gap.cljs b/src/status_im/ui/screens/chat/styles/input/gap.cljs deleted file mode 100644 index 54edc77e77..0000000000 --- a/src/status_im/ui/screens/chat/styles/input/gap.cljs +++ /dev/null @@ -1,35 +0,0 @@ -(ns status-im.ui.screens.chat.styles.input.gap - (:require - [status-im.ui.components.colors :as colors])) - -(defn gap-container - [] - {:align-self :stretch - :margin-top 24 - :margin-bottom 24 - :height 48 - :align-items :center - :justify-content :center - :border-color colors/gray-lighter - :border-top-width 1 - :border-bottom-width 1}) - -(def label-container - {:flex 1 - :align-items :center - :justify-content :center - :text-align :center}) - -(defn gap-text - [connected?] - {:text-align :center - :color (if connected? - colors/blue - colors/gray)}) - -(def touchable - {:height 48}) - -(def date - {:typography :caption - :color colors/gray}) diff --git a/src/status_im/ui/screens/chat/styles/main.cljs b/src/status_im/ui/screens/chat/styles/main.cljs deleted file mode 100644 index 303fd2ae46..0000000000 --- a/src/status_im/ui/screens/chat/styles/main.cljs +++ /dev/null @@ -1,59 +0,0 @@ -(ns status-im.ui.screens.chat.styles.main - (:require - [status-im.ui.components.colors :as colors])) - -(def toolbar-container - {:flex 1 - :align-items :center - :flex-direction :row}) - -(def chat-name-view - {:flex 1 - :justify-content :center}) - -(def chat-name-text - {:typography :main-medium - :font-size 15 - :line-height 22}) - -(def toolbar-subtitle - {:typography :caption - :line-height 16 - :color colors/text-gray}) - -;; this map looks a bit strange -;; but this way of setting elevation seems to be the only way to set z-index (in RN 0.30) -(defn add-contact - [] - {:flex-direction :row - :align-items :center - :justify-content :center - :padding-vertical 6 - :border-bottom-width 1 - :border-color colors/gray-lighter}) - -(def add-contact-text - {:margin-left 4 - :color colors/blue}) - -(def empty-chat-container - {:flex 1 - :justify-content :center - :align-items :center - :padding-vertical 50 - :margin-right 6}) - -(def loading-text - {:color colors/gray - :font-size 15 - :line-height 22 - :letter-spacing -0.2 - :margin-right 4 - :text-align :center}) - -(def contact-request - {:width "100%" - :justify-content :center - :align-items :center - :border-top-width 1 - :border-color colors/gray-transparent-10}) diff --git a/src/status_im/ui/screens/chat/styles/message/sheets.cljs b/src/status_im/ui/screens/chat/styles/message/sheets.cljs deleted file mode 100644 index beede62699..0000000000 --- a/src/status_im/ui/screens/chat/styles/message/sheets.cljs +++ /dev/null @@ -1,9 +0,0 @@ -(ns status-im.ui.screens.chat.styles.message.sheets - (:require - [status-im.ui.components.colors :as colors])) - -(def sheet-text - {:color colors/gray - :padding 24 - :line-height 22 - :font-size 15}) diff --git a/src/status_im/ui/screens/chat/styles/photos.cljs b/src/status_im/ui/screens/chat/styles/photos.cljs deleted file mode 100644 index 28904001dc..0000000000 --- a/src/status_im/ui/screens/chat/styles/photos.cljs +++ /dev/null @@ -1,29 +0,0 @@ -(ns status-im.ui.screens.chat.styles.photos - (:require - [status-im.ui.components.colors :as colors])) - -(def default-size 36) - -(defn radius [size] (/ size 2)) - -(defn photo-container - [size] - {:position :relative - :border-radius (radius size)}) - -(defn photo-border - ([size] (photo-border size :absolute)) - ([size position] - {:position position - :width size - :height size - :border-color colors/black-transparent - :border-width 1 - :border-radius (radius size)})) - -(defn photo - [size] - {:border-radius (radius size) - :width size - :height size - :background-color colors/white}) diff --git a/src/status_im/ui/screens/chat/utils.cljs b/src/status_im/ui/screens/chat/utils.cljs index 1c986b6839..0579ecbcf5 100644 --- a/src/status_im/ui/screens/chat/utils.cljs +++ b/src/status_im/ui/screens/chat/utils.cljs @@ -28,32 +28,3 @@ :line-height (if profile? 22 18) :font-weight "400"}} primary-name]))) - -(defn format-author - ([contact] (format-author contact nil nil)) - ([contact {:keys [modal profile? you?]} max-length] - (let [{:keys [primary-name secondary-name]} contact] - (if secondary-name - [react/nested-text - {:number-of-lines 2 - :style {:color (if modal colors/white-persist colors/black) - :font-size (if profile? 15 13) - :line-height (if profile? 22 18) - :letter-spacing -0.2 - :font-weight "600"}} - (subs primary-name 0 81) - (when you? - [{:style {:color colors/black-light :font-weight "500" :font-size 13}} - (str " " (i18n/label :t/You))]) - [{:style {:color colors/black-light :font-weight "500"}} - (str " " (subs secondary-name 0 81))]] - [react/text - {:style {:color (if modal colors/white-persist colors/black) - :font-size (if profile? 15 13) - :line-height (if profile? 22 18) - :font-weight "600" - :letter-spacing -0.2} - :number-of-lines 1} - (if (and max-length (> (count primary-name) max-length)) - (str (subs primary-name 0 max-length) "...") - primary-name)])))) diff --git a/src/status_im/ui/screens/profile/group_chat/views.cljs b/src/status_im/ui/screens/profile/group_chat/views.cljs index bcee485404..6ed419b820 100644 --- a/src/status_im/ui/screens/profile/group_chat/views.cljs +++ b/src/status_im/ui/screens/profile/group_chat/views.cljs @@ -11,7 +11,6 @@ [status-im.ui.components.react :as react] [status-im.ui.components.topbar :as topbar] [status-im.ui.screens.chat.photos :as photos] - [status-im.ui.screens.chat.sheets :as chat.sheets] [status-im.ui.screens.chat.utils :as chat.utils] [status-im.ui.screens.profile.components.styles :as profile.components.styles] [status-im2.constants :as constants] @@ -20,6 +19,11 @@ [utils.i18n :as i18n]) (:require-macros [status-im.utils.views :refer [defview letsubs]])) +(defn hide-sheet-and-dispatch + [event] + (re-frame/dispatch [:bottom-sheet/hide-old]) + (re-frame/dispatch event)) + (defn member-sheet [chat-id member us-admin?] [react/view @@ -30,7 +34,7 @@ :subtitle (i18n/label :t/view-profile) :accessibility-label :view-chat-details-button :chevron true - :on-press #(chat.sheets/hide-sheet-and-dispatch + :on-press #(hide-sheet-and-dispatch [:chat.ui/show-profile (:public-key member)])}] (when (and us-admin? (not (:admin? member))) @@ -39,15 +43,15 @@ :title (i18n/label :t/make-admin) :accessibility-label :make-admin :icon :main-icons/make-admin - :on-press #(chat.sheets/hide-sheet-and-dispatch [:group-chats.ui/make-admin-pressed - chat-id (:public-key member)])}]) + :on-press #(hide-sheet-and-dispatch [:group-chats.ui/make-admin-pressed + chat-id (:public-key member)])}]) (when-not (:admin? member) [list.item/list-item {:theme :accent :title (i18n/label :t/remove-from-chat) :accessibility-label :remove-from-chat :icon :main-icons/remove-contact - :on-press #(chat.sheets/hide-sheet-and-dispatch + :on-press #(hide-sheet-and-dispatch [:group-chats.ui/remove-member-pressed chat-id (:public-key member)])}])]) @@ -102,7 +106,7 @@ :on-press #(re-frame/dispatch [:open-modal :add-participants-toggle-list])}]) [chat-group-members-view chat-id admin? current-pk]]) -(defn hide-sheet-and-dispatch +(defn hide-sheet-and-dispatch-old [event] (re-frame/dispatch [:bottom-sheet/hide-old]) (debounce/dispatch-and-chill event 2000)) @@ -125,14 +129,15 @@ :subtitle (when-not allow-adding-members? (i18n/label :t/members-limit-reached)) :accessibility-label :accept-invitation-button :icon :main-icons/checkmark-circle - :on-press #(hide-sheet-and-dispatch + :on-press #(hide-sheet-and-dispatch-old [:group-chats.ui/add-members-from-invitation id (:public-key contact)])}] [list.item/list-item {:theme :negative :title (i18n/label :t/decline) :accessibility-label :decline-invitation-button :icon :main-icons/cancel - :on-press #(hide-sheet-and-dispatch [:send-group-chat-membership-rejection id])}]])) + :on-press #(hide-sheet-and-dispatch-old [:send-group-chat-membership-rejection + id])}]])) (defn contacts-list-item [{:keys [from] :as invitation}] diff --git a/src/status_im/ui/screens/screens.cljs b/src/status_im/ui/screens/screens.cljs index fc910f5c5f..28c404c353 100644 --- a/src/status_im/ui/screens/screens.cljs +++ b/src/status_im/ui/screens/screens.cljs @@ -67,7 +67,6 @@ [status-im.ui.screens.wallet.buy-crypto.views :as wallet.buy-crypto] [status-im.ui.screens.wallet.collectibles.views :as wallet.collectibles] [status-im.ui.screens.wallet.custom-tokens.views :as custom-tokens] - [status-im.ui.screens.wallet.manage-connections.views :as manage-all-connections] [status-im.ui.screens.wallet.recipient.views :as recipient] [status-im.ui.screens.wallet.send.views :as wallet.send] [status-im.ui.screens.wallet.settings.views :as wallet-settings] @@ -647,12 +646,6 @@ :insets {:bottom? true} :component keycard.pairing/change-pairing-code} - {:name :show-all-connections - :options {:topBar {:title {:text (i18n/label :t/all-connections)}} - :insets {:bottom? true - :top? true}} - :component manage-all-connections/views} - ;; BUG REPORT {:name :bug-report :options {:insets {:top? true}} diff --git a/src/status_im/ui/screens/wallet/accounts/sheets.cljs b/src/status_im/ui/screens/wallet/accounts/sheets.cljs index 075c213acc..0b3b1b862f 100644 --- a/src/status_im/ui/screens/wallet/accounts/sheets.cljs +++ b/src/status_im/ui/screens/wallet/accounts/sheets.cljs @@ -28,13 +28,6 @@ :accessibility-label :wallet-manage-assets :on-press #(hide-sheet-and-dispatch [:navigate-to :wallet-settings-assets])}] - [list.item/list-item - {:theme :accent - :title (i18n/label :t/wallet-manage-app-connections) - :icon :main-icons/manage-connections - :accessibility-label :wallet-manage-app-connections - :on-press #(hide-sheet-and-dispatch - [:navigate-to :show-all-connections])}] [list.item/list-item {:theme :accent :title (i18n/label :t/scan-tokens) diff --git a/src/status_im/ui/screens/wallet/manage_connections/styles.cljs b/src/status_im/ui/screens/wallet/manage_connections/styles.cljs deleted file mode 100644 index 2da9aeb9be..0000000000 --- a/src/status_im/ui/screens/wallet/manage_connections/styles.cljs +++ /dev/null @@ -1,46 +0,0 @@ -(ns status-im.ui.screens.wallet.manage-connections.styles - (:require - [status-im.ui.components.colors :as colors])) - -(def dapp-icon - {:width 30 - :height 30 - :resize-mode :cover - :margin 10 - :border-radius 15 - :border-width 2 - :padding 10}) - -(def app-row - {:flex-direction :row - :margin-vertical 8 - :align-items :center}) - -(def app-column - {:flex-direction :column - :max-width 160 - :justify-content :center}) - -(def dapp-name - {:font-size 15}) - -(def dapp-url - {:font-size 15 - :opacity 0.5}) - -(def selected-account - {:font-size 13 - :color colors/white}) - -(defn selected-account-container - [account-background-color] - {:background-color account-background-color - :padding-horizontal 10 - :justify-content :center - :flex-direction :row - :align-items :center - :border-radius 40 - :height 26}) - -(def delete-icon-container - {:margin-horizontal 10}) diff --git a/src/status_im/ui/screens/wallet/manage_connections/views.cljs b/src/status_im/ui/screens/wallet/manage_connections/views.cljs deleted file mode 100644 index b6ab4a61ea..0000000000 --- a/src/status_im/ui/screens/wallet/manage_connections/views.cljs +++ /dev/null @@ -1,20 +0,0 @@ -(ns status-im.ui.screens.wallet.manage-connections.views - (:require - [re-frame.core :as re-frame] - [react-native.core :as rn] - [status-im.ui.screens.wallet.manage-connections.styles :as styles] - [status-im2.common.not-implemented :as not-implemented])) - -(defn print-session-info - [{:keys [peer]}] - ^{:key peer} - [rn/view - [:<> - [not-implemented/not-implemented - [rn/view {:style styles/app-row}]]]]) - -(defn views - [] - (let [sessions @(re-frame/subscribe [:wallet-connect/sessions])] - [rn/view {:margin-top 10} - (doall (map print-session-info sessions))])) diff --git a/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs b/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs deleted file mode 100644 index 286111f47c..0000000000 --- a/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs +++ /dev/null @@ -1,155 +0,0 @@ -(ns status-im.ui.screens.wallet-connect.session-proposal.styles - (:require - [status-im.ui.components.colors :as colors])) - -(defn toolbar-container - [background-color] - {:height 36 - :border-radius 18 - :background-color background-color - :align-items :center - :flex-direction :row - :padding-left 13 - :padding-right 6}) - -(def toolbar-text - {:flex-grow 1 - :margin-right 3}) - -(defn dapp-logo - [] - {:width 120 - :height 120 - :resize-mode :cover - :margin-top 31 - :border-radius 16 - :border-width 2 - :border-color (:interactive-02 @colors/theme) - :padding 5}) - -(def sheet-body-container - {:flex 1 - :align-items :center}) - -(defn acc-sheet - [] - {:background-color (:ui-background @colors/theme) - :border-top-right-radius 16 - :border-top-left-radius 16 - :padding-bottom 1}) - -(defn proposal-sheet-container - [] - {:background-color (:ui-background @colors/theme) - :width "100%" - :align-items :center - :padding-top 0 - :padding-bottom 50 - :border-top-right-radius 16 - :border-top-left-radius 16}) - -(defn proposal-sheet-header - [] - {:flex-direction :row - :align-items :center - :justify-content :center - :height 56 - :width "100%" - :border-color colors/gray-lighter - :border-bottom-width 1}) - -(def proposal-title-container - {:align-items :center - :margin-top 21}) - -(def message-title - {:margin-top 10 - :margin-bottom 14 - :margin-horizontal 72.5 - :text-align :center}) - -(defn proposal-buttons-container - [] - {:width "100%" - :height 76 - :border-color colors/gray-lighter - :border-top-width 1 - :flex 1 - :flex-direction :row - :justify-content :space-between - :align-items :center - :padding-horizontal 16}) - -(defn success-button-container - [] - {:width "100%" - :height 76 - :border-color colors/gray-lighter - :border-top-width 1 - :flex-direction :row - :justify-content :flex-end - :align-items :center - :padding-horizontal 16}) - -(defn account-container - [color account-selected?] - {:height 34 - :background-color color - :border-radius 17 - :padding-horizontal 10 - :justify-content :center - :margin-right 4 - :opacity (if account-selected? 1 0.5)}) - -(def account-selector-container - {:height 80 - :width "100%" - :justify-content :center - :padding-horizontal 16}) - -(def account-selector-wrapper - {:margin-top 40 - :width "100%"}) - -(def account-selector-list - {:height 40 - :width "100%" - :margin-top 10}) - -(def single-account-container - {:width "100%" - :align-items :center - :padding-top 8}) - -(defn blur-view - [] - {:position :absolute - :top 60 - :left 0 - :right 0 - :bottom 0 - :background-color (:blurred-bg @colors/theme)}) - -(def shadow - {:width "100%" - :height 50 - :opacity 0.3}) - -(defn management-sheet-header - [] - {:width "100%" - :flex-direction :row - :padding 16 - :align-items :center - :border-bottom-width 1 - :border-bottom-color colors/gray-lighter}) - -(def management-icon - {:width 40 - :height 40 - :border-radius 20 - :margin-right 16}) - -(def app-info-container - {:flex-direction :column - :flex 1}) diff --git a/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs b/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs deleted file mode 100644 index a2632f2248..0000000000 --- a/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs +++ /dev/null @@ -1,246 +0,0 @@ -(ns status-im.ui.screens.wallet-connect.session-proposal.views - (:require-macros [status-im.utils.views :refer [defview letsubs]]) - (:require - [clojure.string :as string] - [re-frame.core :as re-frame] - [react-native.platform :as platform] - [reagent.core :as reagent] - [status-im.ui.components.bottom-panel.views :as bottom-panel] - [status-im.ui.components.colors :as colors] - [status-im.ui.components.core :as quo] - [status-im.ui.components.icons.icons :as icons] - [status-im.ui.components.list.views :as list] - [status-im.ui.components.react :as react] - [status-im.ui.screens.wallet-connect.session-proposal.styles :as styles] - [status-im.utils.utils :as status.utils] - [utils.i18n :as i18n] - [utils.security.core])) - -(def chevron-icon-container-width 24) - -(def chevron-icon-container-height 24) - -(defn toolbar-selection - [{:keys [text background-color on-press]}] - [react/touchable-opacity {:on-press on-press} - [react/view (styles/toolbar-container background-color) - [quo/text - {:color :inverse - :weight :medium - :style styles/toolbar-text} - text] - [icons/icon - :main-icons/chevron-down - {:color (:text-05 @colors/theme) - :width chevron-icon-container-width - :height chevron-icon-container-height}]]]) - -(def show-account-selector? (reagent/atom false)) - -(defn render-account - [{:keys [address name color] :as account} _ _ {:keys [selected-account on-select]}] - (let [account-selected? (= (:address @selected-account) address)] - [react/touchable-without-feedback - {:on-press #(do - (reset! selected-account (merge {} account)) - (when on-select (on-select)))} - [react/view (styles/account-container color account-selected?) - [quo/text - {:color :inverse - :weight (if account-selected? :medium :regular)} - name]]])) - -(defn account-selector - [accounts selected-account-atom on-select] - [react/view styles/account-selector-container - [quo/text {:size :small} (i18n/label :t/select-account)] - [list/flat-list - {:data accounts - :key-fn :address - :render-fn render-account - :render-data {:selected-account selected-account-atom - :on-select on-select} - :horizontal true - :shows-horizontal-scroll-indicator false - :extra-data @selected-account-atom - :style styles/account-selector-list}]]) - -(defn account-picker - [accounts selected-account-atom {:keys [on-press on-select]}] - (if (> (count accounts) 1) - [react/view {:style styles/account-selector-wrapper} - [account-selector accounts selected-account-atom on-select]] - [react/touchable-opacity {:style styles/single-account-container} - [toolbar-selection - {:text (:name @selected-account-atom) - :background-color (:color @selected-account-atom) - :on-press on-press}]])) - -(defview success-sheet-view - [{:keys [topic]}] - (letsubs [visible-accounts [:visible-accounts-without-watch-only] - dapps-account [:dapps-account] - sessions [:wallet-connect/sessions] - managed-session [:wallet-connect/session-managed]] - (let [{:keys [peer state] :as session} (first (filter #(= (:topic %) topic) sessions)) - {:keys [metadata]} peer - {:keys [accounts]} state - {:keys [name icons]} metadata - filtered-icons (status.utils/exclude-svg-resources icons) - icon-uri (when (and filtered-icons (pos? (count filtered-icons))) - (first filtered-icons)) - address (last (string/split (first accounts) #":")) - account (first (filter #(= (:address %) address) visible-accounts)) - selected-account-atom (reagent/atom account)] - [react/view (styles/proposal-sheet-container) - [react/view (styles/proposal-sheet-header) - [quo/text - {:weight :bold - :size :large} - (i18n/label :t/successful-connection)]] - [react/image - {:style (styles/dapp-logo) - :source {:uri icon-uri}}] - [react/view styles/sheet-body-container - [react/view styles/proposal-title-container - [quo/text - {:weight :bold - :size :large} - name] - [quo/text - {:weight :regular - :size :large} - (i18n/label :t/connected)]]] - [account-picker - (vector dapps-account) - selected-account-atom - {:on-press (fn [] - (re-frame/dispatch [:wallet-connect/manage-app session]) - (reset! show-account-selector? true))}] - [quo/text - {:weight :regular - :color :secondary - :style styles/message-title} - (i18n/label :t/manage-connections)] - [react/view (styles/success-button-container) - [quo/button - {:theme :accent - :on-press #(do - (reset! show-account-selector? false) - (re-frame/dispatch [:hide-wallet-connect-success-sheet]))} - (i18n/label :t/close)]] - (when managed-session - (if platform/ios? - [react/blur-view - {:style (styles/blur-view) - :blurAmount 2 - :blurType (if (colors/dark?) :dark :light)}] - [react/view (styles/blur-view)]))]))) - -(defview app-management-sheet-view - [{:keys [topic]}] - (letsubs [sessions [:wallet-connect/sessions] - visible-accounts [:visible-accounts-without-watch-only]] - (let [{:keys [peer state]} (first (filter #(= (:topic %) topic) sessions)) - {:keys [metadata]} peer - {:keys [accounts]} state - {:keys [name icons url]} metadata - filtered-icons (status-im.utils.utils/exclude-svg-resources icons) - icon-uri (when (and filtered-icons (pos? (count filtered-icons))) - (first filtered-icons)) - address (last (string/split (first accounts) #":")) - account (first (filter #(= (:address %) address) visible-accounts)) - selected-account-atom (reagent/atom account)] - [react/view {:style (merge (styles/acc-sheet) {:background-color "rgba(0,0,0,0)"})} - [react/linear-gradient - {:colors ["rgba(0,0,0,0)" "rgba(0,0,0,0.3)"] - :start {:x 0 :y 0} - :end {:x 0 :y 1} - :style styles/shadow}] - [react/view (styles/proposal-sheet-container) - [react/view (styles/management-sheet-header) - [react/image - {:style styles/management-icon - :source {:uri icon-uri}}] - [react/view styles/app-info-container - [quo/text {:weight :medium} name] - [quo/text - {:color :secondary - :number-of-lines 1 - :elipsize-mode :tail} url]] - [quo/button - {:type :secondary - :theme :secondary - :on-press #(re-frame/dispatch [:wallet-connect/disconnect topic])} - (i18n/label :t/disconnect)]] - [account-selector - visible-accounts - selected-account-atom - #(re-frame/dispatch - [:wallet-connect/change-session-account topic @selected-account-atom])]]]))) - -(defview session-proposal-sheet - [{:keys [name icons]}] - (letsubs [visible-accounts [:visible-accounts-without-watch-only] - dapps-account [:dapps-account]] - (let [filtered-icons (status-im.utils.utils/exclude-svg-resources icons) - icon-uri (when (and filtered-icons (> (count filtered-icons) 0)) - (first filtered-icons)) - selected-account-atom (reagent/atom dapps-account)] - [react/view (styles/proposal-sheet-container) - [react/view (styles/proposal-sheet-header) - [quo/text - {:weight :bold - :size :large} - (i18n/label :t/connection-request)]] - [react/image - {:style (styles/dapp-logo) - :source {:uri icon-uri}}] - [react/view styles/sheet-body-container - [react/view styles/proposal-title-container - [quo/text - {:weight :bold - :size :large} - (str name " ")] - [quo/text - {:weight :regular - :size :large} - (i18n/label :t/wallet-connect-proposal-title)]]] - [account-picker visible-accounts selected-account-atom] - [react/view - (merge (styles/proposal-buttons-container) - (when (= (count visible-accounts) 1) {:margin-top 12})) - [quo/button - {:type :secondary - :on-press #(re-frame/dispatch [:wallet-connect/reject-proposal])} - (i18n/label :t/reject)] - [quo/button - {:theme :accent - :on-press #(re-frame/dispatch [:wallet-connect/approve-proposal @selected-account-atom])} - (i18n/label :t/connect)]]]))) - -(defview wallet-connect-proposal-sheet - [] - (letsubs [proposal-metadata [:wallet-connect/proposal-metadata]] - [bottom-panel/animated-bottom-panel - proposal-metadata - session-proposal-sheet - #(re-frame/dispatch [:hide-wallet-connect-sheet])])) - -(defview wallet-connect-success-sheet-view - [] - (letsubs [session [:wallet-connect/session-connected]] - [bottom-panel/animated-bottom-panel - session - success-sheet-view - #(re-frame/dispatch [:hide-wallet-connect-success-sheet])])) - -(defview wallet-connect-app-management-sheet-view - [] - (letsubs [session [:wallet-connect/session-managed]] - [bottom-panel/animated-bottom-panel - session - app-management-sheet-view - #(re-frame/dispatch [:hide-wallet-connect-app-management-sheet]) - #(re-frame/dispatch [:hide-wallet-connect-app-management-sheet]) - false])) diff --git a/src/status_im2/common/signals/events.cljs b/src/status_im2/common/signals/events.cljs index b1b88e6dde..f31d017d52 100644 --- a/src/status_im2/common/signals/events.cljs +++ b/src/status_im2/common/signals/events.cljs @@ -57,10 +57,10 @@ "message.delivered" (let [{:keys [chatID messageID]} (js->clj event-js :keywordize-keys true)] - (models.message/update-db-message-status cofx - chatID - messageID - :delivered)) + (models.message/update-message-status cofx + chatID + messageID + :delivered)) "mailserver.changed" (mailserver/handle-mailserver-changed cofx (.-id event-js)) "mailserver.available" (mailserver/handle-mailserver-available cofx (.-id event-js)) "mailserver.not.working" (mailserver/handle-mailserver-not-working cofx) diff --git a/src/status_im2/config.cljs b/src/status_im2/config.cljs index 29e6253216..842aee9765 100644 --- a/src/status_im2/config.cljs +++ b/src/status_im2/config.cljs @@ -139,24 +139,12 @@ [id network]) default-networks))) -(def default-wallet-connect-metadata - {:name "Status Wallet" - :description - "Status is a secure messaging app, crypto wallet, and Web3 browser built with state of the art technology." - :url "#" - :icons ["https://statusnetwork.com/img/press-kit-status-logo.svg"]}) - (def default-network-id (get-in default-networks-by-id [default-network :config :NetworkId])) (def default-network-rpc-url (get-in default-networks-by-id [default-network :config :UpstreamConfig :URL])) -(def wallet-connect-project-id "87815d72a81d739d2a7ce15c2cfdefb3") - -(def delete-message-undo-time-limit-ms 4000) -(def delete-message-for-me-undo-time-limit-ms 4000) - (def waku-nodes-config {:status.prod ["enrtree://AL65EKLJAUXKKPG43HVTML5EFFWEZ7L4LOKTLZCLJASG4DSESQZEC@prod.status.nodes.status.im"] diff --git a/src/status_im2/contexts/chat/events.cljs b/src/status_im2/contexts/chat/events.cljs index 78c8072407..30ec47b8f6 100644 --- a/src/status_im2/contexts/chat/events.cljs +++ b/src/status_im2/contexts/chat/events.cljs @@ -11,6 +11,7 @@ [status-im2.constants :as constants] [status-im2.contexts.chat.composer.link-preview.events :as link-preview] status-im2.contexts.chat.effects + status-im2.contexts.chat.lightbox.events [status-im2.contexts.chat.messages.delete-message-for-me.events :as delete-for-me] [status-im2.contexts.chat.messages.delete-message.events :as delete-message] [status-im2.contexts.chat.messages.list.state :as chat.state] diff --git a/src/status_im2/contexts/chat/lightbox/effects.cljs b/src/status_im2/contexts/chat/lightbox/effects.cljs new file mode 100644 index 0000000000..b291cf244d --- /dev/null +++ b/src/status_im2/contexts/chat/lightbox/effects.cljs @@ -0,0 +1,29 @@ +(ns status-im2.contexts.chat.lightbox.effects + (:require [react-native.blob :as blob] + [react-native.cameraroll :as cameraroll] + [react-native.fs :as fs] + [react-native.platform :as platform] + [react-native.share :as share] + [utils.re-frame :as rf])) + +(def config + {:trusty platform/ios? + :path (str (fs/cache-dir) "/StatusIm_Image.jpeg")}) + +(rf/reg-fx :effects.chat/share-image + (fn [uri] + (blob/fetch uri + config + (fn [downloaded-url] + (share/open {:url (str (when platform/android? "file://") downloaded-url) + :isNewTask true} + #(fs/unlink downloaded-url) + #(fs/unlink downloaded-url)))))) + +(rf/reg-fx :effects.chat/save-image-to-gallery + (fn [[uri on-success]] + (blob/fetch uri + config + (fn [downloaded-url] + (cameraroll/save-image downloaded-url) + (on-success))))) diff --git a/src/status_im2/contexts/chat/lightbox/events.cljs b/src/status_im2/contexts/chat/lightbox/events.cljs new file mode 100644 index 0000000000..178daf9c7a --- /dev/null +++ b/src/status_im2/contexts/chat/lightbox/events.cljs @@ -0,0 +1,23 @@ +(ns status-im2.contexts.chat.lightbox.events + (:require status-im2.contexts.chat.lightbox.effects + [utils.re-frame :as rf])) + +(rf/reg-event-fx :chat.ui/clear-sending-images + (fn [{:keys [db]}] + {:db (update-in db [:chat/inputs (:current-chat-id db) :metadata] assoc :sending-image {})})) + +(rf/reg-event-fx :chat.ui/image-unselected + (fn [{:keys [db]} [original]] + (let [current-chat-id (:current-chat-id db)] + {:db (update-in db + [:chat/inputs current-chat-id :metadata :sending-image] + dissoc + (:uri original))}))) + +(rf/reg-event-fx :chat.ui/share-image + (fn [_ [uri]] + {:effects.chat/share-image uri})) + +(rf/reg-event-fx :chat.ui/save-image-to-gallery + (fn [_ [uri on-success]] + {:effects.chat/save-image-to-gallery [uri on-success]})) diff --git a/src/status_im2/contexts/chat/lightbox/top_view.cljs b/src/status_im2/contexts/chat/lightbox/top_view.cljs index 71daaa6b53..e4c266995d 100644 --- a/src/status_im2/contexts/chat/lightbox/top_view.cljs +++ b/src/status_im2/contexts/chat/lightbox/top_view.cljs @@ -6,7 +6,6 @@ [react-native.orientation :as orientation] [react-native.platform :as platform] [react-native.reanimated :as reanimated] - [status-im.chat.models.images :as images] [status-im2.contexts.chat.lightbox.animations :as anim] [status-im2.contexts.chat.lightbox.constants :as c] [status-im2.contexts.chat.lightbox.style :as style] @@ -52,20 +51,21 @@ :label (i18n/label :t/save-image-library) :on-press (fn [] (rf/dispatch [:hide-bottom-sheet]) - (images/save-image-to-gallery - uri - #(rf/dispatch [:toasts/upsert - {:id :random-id - :icon :i/correct - :icon-color colors/success-50 - :container-style {:bottom (when platform/android? 20)} - :text (i18n/label :t/photo-saved)}])))}]]])) + (rf/dispatch + [:chat.ui/save-image-to-gallery + uri + #(rf/dispatch [:toasts/upsert + {:id :random-id + :icon :i/correct + :icon-color colors/success-50 + :container-style {:bottom (when platform/android? 20)} + :text (i18n/label :t/photo-saved)}])]))}]]])) (defn share-image [messages index] (let [{:keys [content]} (nth messages index) uri (url/replace-port (:image content) (rf/sub [:mediaserver/port]))] - (images/share-image uri))) + (rf/dispatch [:chat.ui/share-image uri]))) (defn top-view [messages insets index animations derived landscape? screen-width] diff --git a/src/status_im2/contexts/chat/messages/content/view.cljs b/src/status_im2/contexts/chat/messages/content/view.cljs index 4e264a644f..790da6a8f9 100644 --- a/src/status_im2/contexts/chat/messages/content/view.cljs +++ b/src/status_im2/contexts/chat/messages/content/view.cljs @@ -200,6 +200,9 @@ constants/content-type-album [album/album-message message-data context on-long-press message-container-data] + constants/content-type-gap + [rn/view] + [not-implemented/not-implemented [content.unknown/unknown-content message-data]]) diff --git a/src/status_im2/contexts/chat/messages/list/view.cljs b/src/status_im2/contexts/chat/messages/list/view.cljs index a1c05ead7a..dc4cd20b6e 100644 --- a/src/status_im2/contexts/chat/messages/list/view.cljs +++ b/src/status_im2/contexts/chat/messages/list/view.cljs @@ -11,7 +11,6 @@ [react-native.react-native-intersection-observer :as rnio] [react-native.reanimated :as reanimated] [status-im.ui.screens.chat.group :as chat.group] - [status-im.ui.screens.chat.message.gap :as message.gap] [status-im2.constants :as constants] [status-im2.contexts.chat.composer.constants :as composer.constants] [status-im2.contexts.chat.messages.content.view :as message] @@ -274,9 +273,6 @@ (= type :datemark) [quo/divider-date value] - (= content-type constants/content-type-gap) - [message.gap/gap message-data] - :else [message/message message-data context keyboard-shown?])])) diff --git a/src/status_im2/navigation/core.cljs b/src/status_im2/navigation/core.cljs index 3f89c5958a..e54e96df4c 100644 --- a/src/status_im2/navigation/core.cljs +++ b/src/status_im2/navigation/core.cljs @@ -111,21 +111,6 @@ (fn [] (gesture/gesture-handler-root-hoc views/sheet-comp-old)) (fn [] views/sheet-comp-old)) - (navigation/register-component - "wallet-connect-sheet" - (fn [] (gesture/gesture-handler-root-hoc views/wallet-connect-comp)) - (fn [] views/wallet-connect-comp)) - - (navigation/register-component - "wallet-connect-success-sheet" - (fn [] (gesture/gesture-handler-root-hoc views/wallet-connect-success-comp)) - (fn [] views/wallet-connect-success-comp)) - - (navigation/register-component - "wallet-connect-app-management-sheet" - (fn [] (gesture/gesture-handler-root-hoc views/wallet-connect-app-management-comp)) - (fn [] views/wallet-connect-app-management-comp)) - (navigation/register-component "signing-sheet" (fn [] (gesture/gesture-handler-root-hoc views/signing-comp)) diff --git a/src/status_im2/navigation/events.cljs b/src/status_im2/navigation/events.cljs index 643c436d04..b9ca8f514e 100644 --- a/src/status_im2/navigation/events.cljs +++ b/src/status_im2/navigation/events.cljs @@ -134,31 +134,6 @@ [_] {:hide-signing-sheet nil}) -(rf/defn hide-select-acc-sheet - {:events [:hide-select-acc-sheet]} - [_] - {:hide-select-acc-sheet nil}) - -(rf/defn hide-wallet-connect-sheet - {:events [:hide-wallet-connect-sheet]} - [_] - {:hide-wallet-connect-sheet nil}) - -(rf/defn hide-wallet-connect-success-sheet - {:events [:hide-wallet-connect-success-sheet]} - [_] - {:hide-wallet-connect-success-sheet nil}) - -(rf/defn hide-wallet-connect-app-management-sheet - {:events [:hide-wallet-connect-app-management-sheet]} - [{:keys [db]}] - {:db (-> db - (assoc db - :wallet-connect/showing-app-management-sheet? - false) - (dissoc :wallet-connect/session-managed)) - :hide-wallet-connect-app-management-sheet nil}) - (rf/defn set-multiaccount-root {:events [:set-multiaccount-root]} [{:keys [db]}] @@ -171,16 +146,12 @@ (rf/defn dismiss-all-overlays {:events [:dismiss-all-overlays]} - [{:keys [db]}] + [_] {:dispatch-n [[:hide-popover] [:hide-visibility-status-popover] [:hide-bottom-sheet] [:bottom-sheet-hidden] - [:hide-wallet-connect-sheet] - [:hide-wallet-connect-success-sheet] - [:hide-wallet-connect-app-management-sheet] [:hide-signing-sheet] - [:hide-select-acc-sheet] [:bottom-sheet/hide-old-navigation-overlay] [:toasts/close-all-toasts]]}) diff --git a/src/status_im2/navigation/view.cljs b/src/status_im2/navigation/view.cljs index 6f532f4178..91f1721c5f 100644 --- a/src/status_im2/navigation/view.cljs +++ b/src/status_im2/navigation/view.cljs @@ -10,7 +10,6 @@ [status-im.ui.screens.popover.views :as popover] [status-im.ui.screens.profile.visibility-status.views :as visibility-status-views] [status-im.ui.screens.signing.views :as signing] - [status-im.ui.screens.wallet-connect.session-proposal.views :as wallet-connect] [status-im2.common.bottom-sheet-screen.view :as bottom-sheet-screen] [status-im2.common.bottom-sheet.view :as bottom-sheet] [status-im2.common.toasts.view :as toasts] @@ -133,33 +132,3 @@ [signing/signing] (when js/goog.DEBUG [reloader/reload-view])]))) - -(def wallet-connect-comp - (reagent/reactify-component - (fn [] - ^{:key (str "wallet-connect-sheet" @reloader/cnt)} - [:<> - [inactive] - [wallet-connect/wallet-connect-proposal-sheet] - (when js/goog.DEBUG - [reloader/reload-view])]))) - -(def wallet-connect-success-comp - (reagent/reactify-component - (fn [] - ^{:key (str "wallet-connect-success-sheet" @reloader/cnt)} - [:<> - [inactive] - [wallet-connect/wallet-connect-success-sheet-view] - (when js/goog.DEBUG - [reloader/reload-view])]))) - -(def wallet-connect-app-management-comp - (reagent/reactify-component - (fn [] - ^{:key (str "wallet-connect-app-management-sheet" @reloader/cnt)} - [:<> - [inactive] - [wallet-connect/wallet-connect-app-management-sheet-view] - (when js/goog.DEBUG - [reloader/reload-view])]))) diff --git a/src/status_im2/subs/messages.cljs b/src/status_im2/subs/messages.cljs index 4b32c7d1c0..1485882315 100644 --- a/src/status_im2/subs/messages.cljs +++ b/src/status_im2/subs/messages.cljs @@ -5,7 +5,6 @@ [status-im2.constants :as constants] [status-im2.contexts.chat.messages.list.events :as models.message-list] [status-im2.contexts.chat.messages.resolver.message-resolver :as resolver] - [utils.datetime :as datetime] [utils.i18n :as i18n])) (defn intersperse-datemark @@ -50,54 +49,6 @@ {:value (:datemark (peek messages-with-datemarks)) :type :datemark})))) -(defn last-gap - "last-gap is a special gap that is put last in the message stream" - [chat-id synced-from] - {:message-id "0x123" - :message-type constants/message-type-gap - :chat-id chat-id - :content-type constants/content-type-gap - :gap-ids #{:first-gap} - :gap-parameters {:from synced-from}}) - -(defn collapse-gaps - "collapse-gaps will take an array of messages and collapse any gap next to - each other in a single gap. - It will also append one last gap if the last message is a non-gap" - [messages chat-id synced-from now chat-type joined loading-messages?] - (let [messages-with-gaps (reduce - (fn [acc {:keys [gap-parameters message-id] :as message}] - (let [last-element (peek acc)] - (cond - ;; If it's a message, just add - (empty? gap-parameters) - (conj acc message) - - ;; Both are gaps, merge them - (and - (seq (:gap-parameters last-element)) - (seq gap-parameters)) - (conj (pop acc) (update last-element :gap-ids conj message-id)) - - ;; it's a gap - :else - (conj acc (assoc message :gap-ids #{message-id}))))) - [] - messages)] - (if (or loading-messages? ; it's loading messages from the database - (nil? synced-from) ; it's still syncing - (= constants/timeline-chat-type chat-type) ; it's a timeline chat - (= constants/profile-chat-type chat-type) ; it's a profile chat - (and (not (nil? synced-from)) ; it's not more than a month - (<= synced-from (- (quot now 1000) constants/one-month))) - (and (= constants/private-group-chat-type chat-type) ; it's a private group chat - (or (not (pos? joined)) ; we haven't joined - (>= (quot joined 1000) synced-from))) ; the history goes before we joined - (:gap-ids (peek messages-with-gaps))) ; there's already a gap on top of the - ; chat history - messages-with-gaps ; don't add an extra gap - (conj messages-with-gaps (last-gap chat-id synced-from))))) - (defn hydrate-messages "Pull data from messages and add it to the sorted list" ([message-list messages] (hydrate-messages message-list messages {})) @@ -258,7 +209,7 @@ (re-frame/subscribe [:chats/synced-from chat-id]) (re-frame/subscribe [:chats/chat-type chat-id]) (re-frame/subscribe [:chats/joined chat-id])]) - (fn [[message-list messages pin-messages loading-messages? synced-from chat-type joined] [_ chat-id]] + (fn [[message-list messages pin-messages loading-messages?] _] ;;TODO (perf) (let [message-list-seq (models.message-list/->seq message-list)] ; Don't show gaps if that's the case as we are still loading messages @@ -267,12 +218,6 @@ (-> message-list-seq (add-datemarks) (hydrate-messages messages pin-messages) - (collapse-gaps chat-id - synced-from - (datetime/timestamp) - chat-type - joined - loading-messages?) (albumize-messages)))))) (re-frame/reg-sub