From b532966e8597be85fca2a97ad9a6fe60ffa388db Mon Sep 17 00:00:00 2001 From: Jamie Caprani Date: Wed, 11 Oct 2023 12:39:26 +0200 Subject: [PATCH 01/13] chore: slider button - add error type, blur variant and fix small ui bug (#17473) --- .../buttons/slide_button/animations.cljs | 2 +- .../buttons/slide_button/component_spec.cljs | 2 +- .../buttons/slide_button/style.cljs | 15 +++---- .../buttons/slide_button/utils.cljs | 41 ++++++++++++------- .../components/buttons/slide_button/view.cljs | 27 +++++++----- .../standard_auth/view.cljs | 2 +- .../quo_preview/buttons/slide_button.cljs | 30 +++++++++++--- .../contexts/syncing/setup_syncing/view.cljs | 2 +- 8 files changed, 77 insertions(+), 44 deletions(-) diff --git a/src/quo2/components/buttons/slide_button/animations.cljs b/src/quo2/components/buttons/slide_button/animations.cljs index bb32f0808f0..22f0304546a 100644 --- a/src/quo2/components/buttons/slide_button/animations.cljs +++ b/src/quo2/components/buttons/slide_button/animations.cljs @@ -22,7 +22,7 @@ (defn- track-cover-interpolation [track-width thumb-size] {:in [0 1] - :out [(/ thumb-size 2) track-width]}) + :out [thumb-size (+ track-width thumb-size)]}) (defn- arrow-icon-position-interpolation [thumb-size] diff --git a/src/quo2/components/buttons/slide_button/component_spec.cljs b/src/quo2/components/buttons/slide_button/component_spec.cljs index 754a0764c96..aba89e1a8b9 100644 --- a/src/quo2/components/buttons/slide_button/component_spec.cljs +++ b/src/quo2/components/buttons/slide_button/component_spec.cljs @@ -81,7 +81,7 @@ (h/has-style track-mock {:opacity constants/disable-opacity}))) (h/test "render the small button" - (h/render [slide-button/view (assoc default-props :size :size/s-40)]) + (h/render [slide-button/view (assoc default-props :size :size-40)]) (let [mock (h/get-by-test-id :slide-button-track) small-height (:track-height constants/small-dimensions)] (h/has-style mock {:height small-height}))) diff --git a/src/quo2/components/buttons/slide_button/style.cljs b/src/quo2/components/buttons/slide_button/style.cljs index 837f5ca03d5..1e7ed844ce2 100644 --- a/src/quo2/components/buttons/slide_button/style.cljs +++ b/src/quo2/components/buttons/slide_button/style.cljs @@ -2,8 +2,7 @@ (:require [quo2.components.buttons.slide-button.constants :as constants] [quo2.components.buttons.slide-button.utils :as utils] - [react-native.reanimated :as reanimated] - [quo2.foundations.typography :as typography])) + [react-native.reanimated :as reanimated])) (def absolute-fill {:position :absolute @@ -16,7 +15,7 @@ [{:keys [interpolate-track thumb-size customization-color theme]}] (reanimated/apply-animations-to-style {:transform [{:translate-x (interpolate-track :track-clamp)}]} - {:background-color (utils/slider-color :main customization-color theme) + {:background-color (utils/main-color customization-color theme) :border-radius 12 :height thumb-size :width thumb-size @@ -46,7 +45,7 @@ :justify-content :space-around})) (defn track - [{:keys [disabled? customization-color height theme]}] + [{:keys [disabled? customization-color height blur?]}] {:align-items :flex-start :justify-content :center :border-radius 14 @@ -54,7 +53,7 @@ :align-self :stretch :padding constants/track-padding :opacity (if disabled? 0.3 1) - :background-color (utils/slider-color :track customization-color theme)}) + :background-color (utils/track-color customization-color blur?)}) (defn track-cover [interpolate-track] @@ -74,7 +73,5 @@ :width track-width}) (defn track-text - [customization-color theme] - (-> typography/paragraph-1 - (merge typography/font-medium) - (assoc :color (utils/slider-color :main customization-color theme)))) + [customization-color theme blur?] + {:color (utils/text-color customization-color theme blur?)}) diff --git a/src/quo2/components/buttons/slide_button/utils.cljs b/src/quo2/components/buttons/slide_button/utils.cljs index deaac47fd8c..5e9a69559a5 100644 --- a/src/quo2/components/buttons/slide_button/utils.cljs +++ b/src/quo2/components/buttons/slide_button/utils.cljs @@ -3,19 +3,30 @@ [quo2.components.buttons.slide-button.constants :as constants] [quo2.foundations.colors :as colors])) -(defn slider-color - "- `color-key` `:main`/`:track` - - `customization-color` Customization color" - [color-key customization-color theme] - (let [colors-by-key {:main (colors/theme-colors - (colors/custom-color customization-color 50) - (colors/custom-color customization-color 60) - theme) - :track (colors/theme-colors - (colors/custom-color customization-color 50 10) - (colors/custom-color customization-color 60 10) - theme)}] - (color-key colors-by-key))) +(defn main-color + "`customization-color` Customization color" + [customization-color theme] + (colors/theme-colors + (colors/custom-color customization-color 50) + (colors/custom-color customization-color 60) + theme)) + +(defn track-color + "`customization-color` Customization color" + ([customization-color blur?] + (if blur? + colors/white-opa-5 + (colors/custom-color customization-color 50 10)))) + +(defn text-color + "`customization-color` Customization color" + [customization-color theme blur?] + (if blur? + colors/white-opa-40 + (colors/theme-colors + (colors/custom-color customization-color 50) + (colors/custom-color customization-color 60) + theme))) (defn clamp-value [value min-value max-value] @@ -34,8 +45,8 @@ (defn get-dimensions [track-width size dimension-key] (let [default-dimensions (case size - :size/s-40 constants/small-dimensions - :size/s-48 constants/large-dimensions + :size-40 constants/small-dimensions + :size-48 constants/large-dimensions constants/large-dimensions)] (-> default-dimensions (merge {:usable-track (calc-usable-track diff --git a/src/quo2/components/buttons/slide_button/view.cljs b/src/quo2/components/buttons/slide_button/view.cljs index 73995c8a2d2..575a3f3c0c2 100644 --- a/src/quo2/components/buttons/slide_button/view.cljs +++ b/src/quo2/components/buttons/slide_button/view.cljs @@ -10,6 +10,7 @@ [reagent.core :as reagent] [oops.core :as oops] [react-native.reanimated :as reanimated] + [quo2.components.markdown.text :as text] [quo2.components.buttons.slide-button.constants :as constants] [quo2.theme :as quo.theme])) @@ -29,7 +30,9 @@ customization-color size container-style - theme]}] + theme + type + blur?]}] (let [x-pos (reanimated/use-shared-value 0) dimensions (partial utils/get-dimensions (or @track-width constants/default-width) @@ -37,12 +40,12 @@ interpolate-track (partial animations/interpolate-track x-pos (dimensions :usable-track) - (dimensions :thumb))] + (dimensions :thumb)) + custom-color (if (= type :danger) :danger customization-color)] (rn/use-effect (fn [] (when @sliding-complete? (on-complete))) [@sliding-complete?]) - (rn/use-effect (fn [] (when on-reset (reset! sliding-complete? false) @@ -50,7 +53,6 @@ (animations/reset-track-position x-pos) (on-reset))) [on-reset]) - [gesture/gesture-detector {:gesture (animations/drag-gesture x-pos gestures-disabled? @@ -60,24 +62,29 @@ [reanimated/view {:test-ID :slide-button-track :style (merge (style/track {:disabled? disabled? - :customization-color customization-color + :customization-color custom-color :height (dimensions :track-height) - :theme theme}) + :blur? blur?}) container-style) :on-layout (when-not (some? @track-width) on-track-layout)} [reanimated/view {:style (style/track-cover interpolate-track)} [rn/view {:style (style/track-cover-text-container @track-width)} [icon/icon track-icon - {:color (utils/slider-color :main customization-color theme) + {:color (utils/text-color custom-color theme blur?) :size 20}] [rn/view {:width 4}] - [rn/text {:style (style/track-text customization-color theme)} track-text]]] + [text/text + {:weight :medium + :size :paragraph-1 + :style (style/track-text custom-color theme blur?)} + track-text]]] [reanimated/view {:style (style/thumb-container {:interpolate-track interpolate-track :thumb-size (dimensions :thumb) - :customization-color customization-color - :theme theme})} + :customization-color custom-color + :theme theme + :blur? blur?})} [reanimated/view {:style (style/arrow-icon-container interpolate-track)} [icon/icon :arrow-right {:color colors/white diff --git a/src/status_im2/common/standard_authentication/standard_auth/view.cljs b/src/status_im2/common/standard_authentication/standard_auth/view.cljs index cbf78c02450..e38c2ab8885 100644 --- a/src/status_im2/common/standard_authentication/standard_auth/view.cljs +++ b/src/status_im2/common/standard_authentication/standard_auth/view.cljs @@ -73,7 +73,7 @@ :on-auth-success on-auth-success :on-auth-fail on-auth-fail :fallback-button-label fallback-button-label}) - :track-icon :i/face-id + :track-icon (if biometric-auth? :i/face-id :password) :track-text track-text}]]))) (def view (quo.theme/with-theme view-internal)) diff --git a/src/status_im2/contexts/quo_preview/buttons/slide_button.cljs b/src/status_im2/contexts/quo_preview/buttons/slide_button.cljs index a26a0471684..b7235fb1fae 100644 --- a/src/status_im2/contexts/quo_preview/buttons/slide_button.cljs +++ b/src/status_im2/contexts/quo_preview/buttons/slide_button.cljs @@ -1,29 +1,43 @@ (ns status-im2.contexts.quo-preview.buttons.slide-button (:require [quo2.core :as quo] [reagent.core :as reagent] - [status-im2.contexts.quo-preview.preview :as preview])) + [status-im2.contexts.quo-preview.preview :as preview] + [react-native.core :as rn])) (def descriptor [{:key :size :type :select - :options [{:key :size/s-48} - {:key :size/s-40}]} + :options [{:key :size-48} + {:key :size-40}]} + {:key :type + :type :select + :options [{:key :default} + {:key :danger}]} {:key :disabled? :type :boolean} + {:key :blur? + :type :boolean} (preview/customization-color-option {:key :color})]) -(defn view +(defn f-view [] (let [state (reagent/atom {:disabled? false :color :blue - :size :size/s-48}) + :size :size-48}) color (reagent/cursor state [:color]) + blur? (reagent/cursor state [:blur?]) complete? (reagent/atom false)] (fn [] + (rn/use-effect (fn [] + (reset! complete? true) + (js/setTimeout #(reset! complete? false) 50)) + [(:size @state)]) [preview/preview-container {:state state :descriptor descriptor - :component-container-style {:align-items :center}} + :component-container-style (when-not @blur? (:align-items :center)) + :blur? @blur? + :show-blur-background? true} (if (not @complete?) [quo/slide-button {:track-text "We gotta slide" @@ -31,9 +45,13 @@ :customization-color @color :size (:size @state) :disabled? (:disabled? @state) + :blur? @blur? + :type (:type @state) :on-complete (fn [] (js/setTimeout (fn [] (reset! complete? true)) 1000) (js/alert "I don't wanna slide anymore"))}] [quo/button {:on-press (fn [] (reset! complete? false))} "Try again"])]))) + +(defn view [] [:f> f-view]) diff --git a/src/status_im2/contexts/syncing/setup_syncing/view.cljs b/src/status_im2/contexts/syncing/setup_syncing/view.cljs index 183e40d4081..aae54852726 100644 --- a/src/status_im2/contexts/syncing/setup_syncing/view.cljs +++ b/src/status_im2/contexts/syncing/setup_syncing/view.cljs @@ -120,7 +120,7 @@ [rn/view {:style style/standard-auth} [standard-auth/view {:blur? true - :size :size/s-40 + :size :size-40 :track-text (i18n/label :t/slide-to-reveal-code) :customization-color customization-color :on-enter-password on-enter-password From 5ceca3201d98e0a508ac35fcdd0cf58cd3bf6802 Mon Sep 17 00:00:00 2001 From: John Ngei Date: Wed, 11 Oct 2023 17:09:42 +0300 Subject: [PATCH 02/13] remove left over logs --- src/status_im2/common/bottom_sheet/view.cljs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/status_im2/common/bottom_sheet/view.cljs b/src/status_im2/common/bottom_sheet/view.cljs index d60bc3d6081..67410afd173 100644 --- a/src/status_im2/common/bottom_sheet/view.cljs +++ b/src/status_im2/common/bottom_sheet/view.cljs @@ -74,9 +74,6 @@ bottom (if sheet-bottom-margin (+ @sheet-height bottom-margin (:bottom insets)) (:bottom insets))] - (js/console.log (str "item height " @item-height)) - (js/console.log (str "sheet height " @sheet-height)) - (js/console.log (str "sheet-bottom-margin " bottom)) (rn/use-effect #(if hide? (hide translate-y bg-opacity window-height on-close) From 54e347eaea78611836a818976a443f68ad944512 Mon Sep 17 00:00:00 2001 From: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com> Date: Thu, 12 Oct 2023 00:35:07 +0800 Subject: [PATCH 03/13] Bottom Sheet Fixes (#17609) This commit fixes the following issues in the bottom sheet: - the sheet is cut off at the bottom in the shell (dark blur) theme (the drawers in the onboarding/login flow) - the incorrect background in the shell (dark blur) theme (the drawers in the onboarding/login flow) Bug - the spacing at the bottom is doubled - the gradient cover is not shown in the bottom sheet - the spacing between the selected item and the bottom sheet - the bottom sheet type in "Create Profile" and "Activity Center" screens --------- Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com> --- .../gradient/gradient_cover/style.cljs | 6 ++- .../gradient/gradient_cover/view.cljs | 4 +- src/status_im2/common/bottom_sheet/style.cljs | 22 ++++----- src/status_im2/common/bottom_sheet/view.cljs | 46 ++++++++++--------- .../onboarding/create_profile/view.cljs | 6 +-- .../quo_preview/gradient/gradient_cover.cljs | 33 ++++++------- .../shell/activity_center/header/view.cljs | 3 +- 7 files changed, 63 insertions(+), 57 deletions(-) diff --git a/src/quo2/components/gradient/gradient_cover/style.cljs b/src/quo2/components/gradient/gradient_cover/style.cljs index 773278a7e16..feee187b65a 100644 --- a/src/quo2/components/gradient/gradient_cover/style.cljs +++ b/src/quo2/components/gradient/gradient_cover/style.cljs @@ -1,4 +1,6 @@ (ns quo2.components.gradient.gradient-cover.style) -(def root-container - {:height 252}) +(defn root-container + [opacity] + {:height 252 + :opacity opacity}) diff --git a/src/quo2/components/gradient/gradient_cover/view.cljs b/src/quo2/components/gradient/gradient_cover/view.cljs index 488920debf7..7fdb8c78392 100644 --- a/src/quo2/components/gradient/gradient_cover/view.cljs +++ b/src/quo2/components/gradient/gradient_cover/view.cljs @@ -5,7 +5,7 @@ [react-native.linear-gradient :as linear-gradient])) (defn- view-internal - [{:keys [customization-color container-style] :or {customization-color :blue}}] + [{:keys [customization-color opacity container-style] :or {customization-color :blue}}] (let [color-top (colors/custom-color customization-color 50 20) color-bottom (colors/custom-color customization-color 50 0)] [linear-gradient/linear-gradient @@ -13,6 +13,6 @@ :colors [color-top color-bottom] :start {:x 0 :y 0} :end {:x 0 :y 1} - :style (merge style/root-container container-style)}])) + :style (merge (style/root-container opacity) container-style)}])) (def view (quo.theme/with-theme view-internal)) diff --git a/src/status_im2/common/bottom_sheet/style.cljs b/src/status_im2/common/bottom_sheet/style.cljs index b7509b44377..77a4f8a1677 100644 --- a/src/status_im2/common/bottom_sheet/style.cljs +++ b/src/status_im2/common/bottom_sheet/style.cljs @@ -14,7 +14,7 @@ :margin-vertical 8}) (defn sheet - [{:keys [top bottom]} window-height theme padding-bottom-override selected-item shell?] + [{:keys [top]} window-height selected-item] {:position :absolute :max-height (- window-height top) :z-index 1 @@ -24,11 +24,7 @@ :border-top-left-radius 20 :border-top-right-radius 20 :overflow (when-not selected-item :hidden) - :flex 1 - :padding-bottom (or padding-bottom-override (+ bottom)) - :background-color (if shell? - :transparent - (colors/theme-colors colors/white colors/neutral-95 theme))}) + :flex 1}) (def gradient-bg {:position :absolute @@ -45,16 +41,18 @@ :bottom 0}) (defn sheet-content - [theme padding-bottom-override insets bottom-margin] - {:background-color (colors/theme-colors colors/white colors/neutral-95 theme) - :border-top-left-radius 20 + [theme padding-bottom-override {:keys [bottom]} shell? bottom-margin] + {:border-top-left-radius 20 :border-top-right-radius 20 - :padding-bottom (or padding-bottom-override (+ (:bottom insets) bottom-margin))}) + :padding-bottom (or padding-bottom-override (+ bottom bottom-margin)) + :background-color (if shell? + :transparent + (colors/theme-colors colors/white colors/neutral-95 theme))}) (defn selected-item - [theme top bottom sheet-bottom-margin border-radius] + [theme top bottom selected-item-smaller-than-sheet? border-radius] {:position :absolute - :top (when-not sheet-bottom-margin (- 0 top)) + :top (when-not selected-item-smaller-than-sheet? (- 0 top)) :bottom bottom :overflow :hidden :left 0 diff --git a/src/status_im2/common/bottom_sheet/view.cljs b/src/status_im2/common/bottom_sheet/view.cljs index 67410afd173..dd1a73e2691 100644 --- a/src/status_im2/common/bottom_sheet/view.cljs +++ b/src/status_im2/common/bottom_sheet/view.cljs @@ -64,16 +64,23 @@ {:keys [content selected-item padding-bottom-override border-radius on-close shell? gradient-cover? customization-color] :or {border-radius 12}}] - (let [{window-height :height} (rn/get-window) - bg-opacity (reanimated/use-shared-value 0) - translate-y (reanimated/use-shared-value window-height) - sheet-gesture (get-sheet-gesture translate-y bg-opacity window-height on-close) - sheet-bottom-margin (< @item-height - (- window-height @sheet-height (:top insets) bottom-margin)) - top (- window-height (:top insets) (:bottom insets) @sheet-height) - bottom (if sheet-bottom-margin - (+ @sheet-height bottom-margin (:bottom insets)) - (:bottom insets))] + (let [{window-height :height} (rn/get-window) + bg-opacity (reanimated/use-shared-value 0) + translate-y (reanimated/use-shared-value window-height) + sheet-gesture (get-sheet-gesture translate-y + bg-opacity + window-height + on-close) + selected-item-smaller-than-sheet? (< @item-height + (- window-height + @sheet-height + (:top insets) + (:bottom insets) + bottom-margin)) + top (- window-height (:top insets) @sheet-height) + bottom (if selected-item-smaller-than-sheet? + (+ @sheet-height bottom-margin) + (:bottom insets))] (rn/use-effect #(if hide? (hide translate-y bg-opacity window-height on-close) @@ -96,27 +103,24 @@ [reanimated/view {:style (reanimated/apply-animations-to-style {:transform [{:translateY translate-y}]} - (style/sheet insets - window-height - theme - padding-bottom-override - selected-item - shell?))} - (when gradient-cover? - [rn/view {:style style/gradient-bg} - [quo/gradient-cover {:customization-color customization-color}]]) + (style/sheet insets window-height selected-item))} (when shell? [blur/ios-view {:style style/shell-bg}]) (when selected-item [rn/view {:on-layout #(reset! item-height (.-nativeEvent.layout.height ^js %)) :style - (style/selected-item theme top bottom sheet-bottom-margin border-radius)} + (style/selected-item theme top bottom selected-item-smaller-than-sheet? border-radius)} [selected-item]]) [rn/view - {:style (style/sheet-content theme padding-bottom-override insets bottom-margin) + {:style (style/sheet-content theme padding-bottom-override insets shell? bottom-margin) :on-layout #(reset! sheet-height (.-nativeEvent.layout.height ^js %))} + (when gradient-cover? + [rn/view {:style style/gradient-bg} + [quo/gradient-cover + {:customization-color customization-color + :opacity 0.4}]]) [rn/view {:style (style/handle theme)}] [content]]]]])))) diff --git a/src/status_im2/contexts/onboarding/create_profile/view.cljs b/src/status_im2/contexts/onboarding/create_profile/view.cljs index 70e6c780b17..9f682f9ab42 100644 --- a/src/status_im2/contexts/onboarding/create_profile/view.cljs +++ b/src/status_im2/contexts/onboarding/create_profile/view.cljs @@ -168,9 +168,9 @@ (rf/dispatch [:dismiss-keyboard]) (rf/dispatch [:show-bottom-sheet - {:content - (fn [] - [method-menu/view on-change-profile-pic])}])) + {:content (fn [] + [method-menu/view on-change-profile-pic]) + :shell? true}])) :image-picker-props {:profile-picture (or @profile-pic (rf/sub diff --git a/src/status_im2/contexts/quo_preview/gradient/gradient_cover.cljs b/src/status_im2/contexts/quo_preview/gradient/gradient_cover.cljs index 688755be3a9..4986b2735bc 100644 --- a/src/status_im2/contexts/quo_preview/gradient/gradient_cover.cljs +++ b/src/status_im2/contexts/quo_preview/gradient/gradient_cover.cljs @@ -9,18 +9,16 @@ [utils.re-frame :as rf])) (defn render-action-sheet - [] + [customization-color] [:<> - [rn/view {:style {:align-items :center}} - [quo/summary-info - {:type :status-account - :networks? false - :account-props {:customization-color :purple - :size 32 - :emoji "🍑" - :type :default - :name "Collectibles vault" - :address "0x0ah...78b"}}]] + [quo/drawer-top + {:type :account + :blur? false + :title "Collectibles vault" + :networks [:ethereum :optimism] + :description "0x0ah...78b" + :account-avatar-emoji "🍿" + :customization-color (or customization-color :blue)}] [quo/action-drawer [[{:icon :i/edit :label "Edit account" @@ -31,10 +29,11 @@ {:icon :i/share :label "Share account" :on-press #(js/alert "Share account")} - {:icon :i/delete - :label "Remove account" - :danger? true - :on-press #(js/alert "Remove account")}]]]]) + {:icon :i/delete + :label "Remove account" + :danger? true + :on-press #(js/alert "Remove account") + :add-divider? true}]]]]) (def descriptor [(preview/customization-color-option) @@ -76,7 +75,9 @@ [quo/button {:container-style {:margin-horizontal 40} :on-press #(rf/dispatch [:show-bottom-sheet - {:content (fn [] [render-action-sheet]) + {:content (fn [] + [render-action-sheet + @customization-color]) :gradient-cover? true :customization-color @customization-color}])} "See in bottom sheet"]])])) diff --git a/src/status_im2/contexts/shell/activity_center/header/view.cljs b/src/status_im2/contexts/shell/activity_center/header/view.cljs index d5d143713cf..e2c82b7ac19 100644 --- a/src/status_im2/contexts/shell/activity_center/header/view.cljs +++ b/src/status_im2/contexts/shell/activity_center/header/view.cljs @@ -40,7 +40,8 @@ :accessibility-label :activity-center-open-more :on-press #(rf/dispatch [:show-bottom-sheet {:content drawer/options - :theme :dark}])} + :theme :dark + :shell? true}])} :i/options]] [quo/text {:size :heading-1 From 7f960f9be5d23968de59a4cea759e39dc4247296 Mon Sep 17 00:00:00 2001 From: Icaro Motta Date: Wed, 11 Oct 2023 21:53:34 +0000 Subject: [PATCH 04/13] Add custom linter for i18n/label translation keywords (#17610) This commit adds a custom linter to verify i18n/label is called with a qualified keyword, like :t/foo. More sophisticated linters are possible too. We also set the stage for other developers to consider more lint automation instead of manually reviewing conventions in PRs. If you want to understand how to write custom linters, check out https://github.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md. You can fire the Clojure JVM REPL in status-mobile and play with the clj-kondo hook too, it works beautifully. Why do we care? By making sure all translation keywords are qualified with "t", it is trivial to grep or replace them because they're unique in the repo, and can't be confused with other words if you search by ":t/". Note: It's a best practice to commit clj-kondo configuration from external libraries in the .clj-kondo directory. The directory .clj-kondo/babashka is auto-generated, that's why it was added. --- .clj-kondo/babashka/fs/config.edn | 1 + .clj-kondo/babashka/sci/config.edn | 1 + .clj-kondo/babashka/sci/sci/core.clj | 9 + .clj-kondo/config.edn | 3 +- .clj-kondo/status-im/config.edn | 2 + .clj-kondo/status-im/hooks/core.clj | 19 + nix/deps/clojure/deps.json | 883 +++++++++++------- nix/deps/clojure/deps.list | 121 +-- shadow-cljs.edn | 5 + .../components/messages/system_message.cljs | 2 +- src/status_im/chat/models/input.cljs | 7 - .../ui/components/copyable_text.cljs | 2 +- .../mobile_network_settings/sheets.cljs | 8 +- src/status_im/ui/screens/screens.cljs | 2 +- .../ui/screens/wallet/buy_crypto/views.cljs | 6 +- .../ui/screens/wallet/collectibles/views.cljs | 15 +- src/status_im2/common/biometric/events.cljs | 2 +- .../chat/messages/content/audio/view.cljs | 2 +- .../chat/messages/link_preview/view.cljs | 4 +- .../contexts/communities/home/view.cljs | 3 +- .../contexts/communities/overview/utils.cljs | 4 +- .../contexts/profile/profiles/view.cljs | 6 +- .../contexts/quo_preview/messages/gap.cljs | 2 +- src/status_im2/subs/chat/messages.cljs | 6 +- src/status_im2/subs/wallet/transactions.cljs | 20 +- 25 files changed, 697 insertions(+), 438 deletions(-) create mode 100644 .clj-kondo/babashka/fs/config.edn create mode 100644 .clj-kondo/babashka/sci/config.edn create mode 100644 .clj-kondo/babashka/sci/sci/core.clj create mode 100644 .clj-kondo/status-im/config.edn create mode 100644 .clj-kondo/status-im/hooks/core.clj diff --git a/.clj-kondo/babashka/fs/config.edn b/.clj-kondo/babashka/fs/config.edn new file mode 100644 index 00000000000..23f36094841 --- /dev/null +++ b/.clj-kondo/babashka/fs/config.edn @@ -0,0 +1 @@ +{:lint-as {babashka.fs/with-temp-dir clojure.core/let}} diff --git a/.clj-kondo/babashka/sci/config.edn b/.clj-kondo/babashka/sci/config.edn new file mode 100644 index 00000000000..60ea30d04f3 --- /dev/null +++ b/.clj-kondo/babashka/sci/config.edn @@ -0,0 +1 @@ +{:hooks {:macroexpand {sci.core/copy-ns sci.core/copy-ns}}} diff --git a/.clj-kondo/babashka/sci/sci/core.clj b/.clj-kondo/babashka/sci/sci/core.clj new file mode 100644 index 00000000000..ac324eecad5 --- /dev/null +++ b/.clj-kondo/babashka/sci/sci/core.clj @@ -0,0 +1,9 @@ +(ns sci.core) + +(defmacro copy-ns + ([ns-sym sci-ns] + `(copy-ns ~ns-sym ~sci-ns nil)) + ([ns-sym sci-ns opts] + `[(quote ~ns-sym) + ~sci-ns + (quote ~opts)])) diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn index 596db9b42df..9354af1385d 100644 --- a/.clj-kondo/config.edn +++ b/.clj-kondo/config.edn @@ -1,4 +1,5 @@ -{:lint-as {status-im.utils.views/defview clojure.core/defn +{:config-paths ["status-im"] + :lint-as {status-im.utils.views/defview clojure.core/defn status-im.utils.views/letsubs clojure.core/let reagent.core/with-let clojure.core/let status-im.utils.fx/defn clj-kondo.lint-as/def-catch-all diff --git a/.clj-kondo/status-im/config.edn b/.clj-kondo/status-im/config.edn new file mode 100644 index 00000000000..eb6f89e6f4e --- /dev/null +++ b/.clj-kondo/status-im/config.edn @@ -0,0 +1,2 @@ +{:hooks {:analyze-call {utils.i18n/label hooks.core/i18n-label}} + :linters {:status-im.linter/invalid-translation-keyword {:level :error}}} diff --git a/.clj-kondo/status-im/hooks/core.clj b/.clj-kondo/status-im/hooks/core.clj new file mode 100644 index 00000000000..872bd3977c9 --- /dev/null +++ b/.clj-kondo/status-im/hooks/core.clj @@ -0,0 +1,19 @@ +(ns hooks.core + (:require [clj-kondo.hooks-api :as api])) + +(defn i18n-label + "Verify call to `i18n/label` pass the translation keyword qualified with `t`." + [{:keys [node]}] + (let [[_ translation-key-node & _] (:children node)] + (when (and (api/keyword-node? translation-key-node) + (not= "t" (-> translation-key-node api/sexpr namespace))) + (api/reg-finding! (assoc (meta translation-key-node) + :message "Translation keyword should be qualified with \"t\"" + :type :status-im.linter/invalid-translation-keyword))))) + +(comment + ;; Valid + (i18n-label {:node (api/parse-string "(i18n/label :t/foo)")}) + + ;; Invalid + (i18n-label {:node (api/parse-string "(i18n/label :foo)")})) diff --git a/nix/deps/clojure/deps.json b/nix/deps/clojure/deps.json index 534df4e7409..14ea19caf86 100644 --- a/nix/deps/clojure/deps.json +++ b/nix/deps/clojure/deps.json @@ -1,4 +1,30 @@ [ + { + "path": "args4j/args4j/2.33/args4j-2.33", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "168b592340292d4410a1d000bb7fa7144967fc12", + "sha256": "046pab6gz1bh6w1jfbabgxvkrnvncrj93lnmaya5qs6a1z7mccn2" + }, + "jar": { + "sha1": "bd87a75374a6d6523de82fef51fc3cfe9baf9fc9", + "sha256": "1mlyqrqyhijwkjx4sv2zfn2ciqfwpc08qq8w55rcxb941fxfmpci" + } + }, + + { + "path": "babashka/fs/0.2.16/fs-0.2.16", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "2c0c70c07cd9dddb57ddc070b7178c35416efaf1", + "sha256": "0imqngsycf1mx821yfdzahff8pxras01mbf5azaxk4c04qdp95rp" + }, + "jar": { + "sha1": "4e7ad43c9d5ab8907ef0064105e788e0e84f282a", + "sha256": "1zhz4hnrzpnrz3d222py42xlhybwsk94bipmnm7ypb9vlf0p4m8y" + } + }, + { "path": "bidi/bidi/2.1.6/bidi-2.1.6", "host": "https://repo.clojars.org", @@ -38,6 +64,32 @@ } }, + { + "path": "borkdude/edamame/1.1.17/edamame-1.1.17", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "3c936dab997bb0c35b1df828cc689ac1b4a66a9d", + "sha256": "0q9yjnmxyiad6da982dqfvcmrlhn3fk93balqn38dgf941y7jklr" + }, + "jar": { + "sha1": "9087f7abf0104e0354d7db7fc4576608eac558f4", + "sha256": "1n1872i240lakn4pzsag4grf7bv7lcsipmqllxd9m4k1zp3dgla1" + } + }, + + { + "path": "borkdude/sci.impl.reflector/0.0.1/sci.impl.reflector-0.0.1", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "eb3aff6c7db85d91f7e05b98e06d1354a4fce36c", + "sha256": "1bvr7cvpbvqi7swypzpbfrig16zipwvmg4m47y2x5chs5czwxv15" + }, + "jar": { + "sha1": "33dfc86102e0ea400498cbca47572459c1c43b00", + "sha256": "0a5gxmj8kzc01y9bn7l4x7c1v5q9wcbvw5hdr525d3ylsyl6xfkw" + } + }, + { "path": "camel-snake-kebab/camel-snake-kebab/0.4.3/camel-snake-kebab-0.4.3", "host": "https://repo.clojars.org", @@ -52,28 +104,54 @@ }, { - "path": "cider/cider-nrepl/0.29.0/cider-nrepl-0.29.0", + "path": "cheshire/cheshire/5.11.0/cheshire-5.11.0", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "7d71b17336ff8d8cb685d9b4366b900b10b06a5c", + "sha256": "1sidfp7ln3v27r6san9703yhyvsqkjj68m8p70lhbl14j2gjfwgb" + }, + "jar": { + "sha1": "1a1231c65bfd6a2033148e88dcbd1ed8dede12a4", + "sha256": "0iv2nidrz07qjsqhyh8r9n59hxc52jpagggj9ivxl7bbcyg0daqz" + } + }, + + { + "path": "cider/cider-nrepl/0.25.3/cider-nrepl-0.25.3", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "3a39a7a1690b4ee6b48a4f0c65d089eacf47e8a5", + "sha256": "1qhz6q1afg22j5d8zyxzqsbbinix3zh4lyy2acij8hrp02f274wj" + }, + "jar": { + "sha1": "5ae0efd9377a5e60c084bdaf4a2ce094f759ce23", + "sha256": "0drxf9nm23i1pcgrkwbcr09msq37csilzww38709add0hz8spjhq" + } + }, + + { + "path": "cider/piggieback/0.4.1/piggieback-0.4.1", "host": "https://repo.clojars.org", "pom": { - "sha1": "d2dd4e969cf44bfffd8609d0d4945a4a561b5a58", - "sha256": "0f4yxk0wx1i13inkq9zjd1450bbly5lf62216a88clmn4l5x8knn" + "sha1": "c432ffbdd51b67bf82e4a63f1f4f102ba55f4ddf", + "sha256": "191wpjlq78s08d509hq2yrxsdzm3qfkqf2zdiwxxlmmh14dg65rx" }, "jar": { - "sha1": "45f6034b26a14138e74145b7a4059628c0fedcd1", - "sha256": "1dy1l6y8cb8xiqq97a4lf8giyiicq4wfl4s2lxn5fb6614cjxqx2" + "sha1": "0a02a3e2ecd7a126ab60d8a44793342f20ced79b", + "sha256": "142vl5np33akcrnn6pksi0rjfsmmi528villxsj6cwcndvybiw4m" } }, { - "path": "cider/piggieback/0.5.2/piggieback-0.5.2", + "path": "clj-kondo/clj-kondo/2023.09.07/clj-kondo-2023.09.07", "host": "https://repo.clojars.org", "pom": { - "sha1": "7e88493d18a4aaf13aff9d0319dcd82178d95f1d", - "sha256": "08w5y48bpvnlyqbdjs0h7nz9dp35rc7b46hsvh1a0vpdszisxh0p" + "sha1": "3211d91a5054122df320329f29bf3aca0ef9d1b8", + "sha256": "0ryzba8fs1696hlxx37bh4lhc9rd078yn6aymngl24db4vil7cpx" }, "jar": { - "sha1": "ecfd5c286a85db3f059e75c37fca5722d9e26f79", - "sha256": "1ps9yf3cxmlm447hqkidjb5xry90n0wl3jk0jn28fagq31lzylkl" + "sha1": "9bf516b973a0b77d7dc5a3c6c84a884e3470e7b7", + "sha256": "1qkw5ryqdzy4wl3xbr0r72ikrch75z5vh1dny569y3jlc888gkv8" } }, @@ -130,15 +208,15 @@ }, { - "path": "com/cognitect/transit-clj/1.0.324/transit-clj-1.0.324", + "path": "com/cognitect/transit-clj/1.0.329/transit-clj-1.0.329", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "3d54e59026768d11cc965d1a6ab6ddeb3c225a9b", - "sha256": "08ry2p15sznnzv08flkbficbn76z2qmwvvwmsda73jlgb1m8da6q" + "sha1": "a9adb076d8c94d08846ee4134d78052a69445b50", + "sha256": "0x5ch9xrs7jb9i9gmk21d69c41yl5l5z9bfm2b6zw3mqmccfpy5b" }, "jar": { - "sha1": "02bac994fa44e4af474732929510b613a3c85138", - "sha256": "1wqw79zwf9v6744h8x0njgjpspdrfi0pk2s5bb3fp4ah4jfspcsv" + "sha1": "e3bc004c0ca6bef0a0249147f57d5d741521cb11", + "sha256": "0sn9m8sfmm3p5dr9gz95j8fbkk7xip0iqs8ld6j0pkrzvff476l1" } }, @@ -156,15 +234,15 @@ }, { - "path": "com/cognitect/transit-java/1.0.343/transit-java-1.0.343", + "path": "com/cognitect/transit-java/1.0.362/transit-java-1.0.362", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "4cdf43733c5f281f7952e6376cbac1ac1b590a89", - "sha256": "0017gnil7yw6zmcybcq5c3dhs8y1mp80c9r7mnl852hm077pcw4z" + "sha1": "e8ca719611a06b5b238526716fb6cf7b4e71fe44", + "sha256": "1hg7dxdv90lcv8ppdqjqvpnviz5zcqrhdixas0nn9dmq2j03rmni" }, "jar": { - "sha1": "38ce7a916c3e4a627f93e51df83fd6cd32ddfdc6", - "sha256": "166vy4vysz9sdq281bg1qky5i947fggmk1ywd7fjn1b64lqzrdcm" + "sha1": "93775c7f592ccca35e1eba3a24ac807650dedc74", + "sha256": "0m6bywis7l7g4vl049g9fsgfidgyhz1b3nb3rh0mda6x8qymfs7b" } }, @@ -182,15 +260,93 @@ }, { - "path": "com/fasterxml/jackson/core/jackson-core/2.8.7/jackson-core-2.8.7", + "path": "com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "2ffdd0e4f11359b9216dd8e19d051b246da6a29f", - "sha256": "0nlbbnhyzcfnixhg76m4q9lrlb5v7gkxwymbhcwbw3rjarfl33qd" + "sha1": "1a9b0ebfcda0063950c35f42c7fdce9a34e8b782", + "sha256": "1z6y1kh9vd4hd53whb3mkfjrkbapr7ghf4m6c0vv8bdz7528wg1x" }, "jar": { - "sha1": "8b46f39c78476fb848c81a49fa807a9e9506dddd", - "sha256": "0imv9xnw8l8zmpl5fz70v04zdw75wp1x5r1y9wdjsadb310z6vr5" + "sha1": "a27014716e4421684416e5fa83d896ddb87002da", + "sha256": "0gbara9dbk2khk1ksqbxsmm57gpvkf20p1qfphp4fsfclf79l4db" + } + }, + + { + "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.13.3/jackson-dataformat-cbor-2.13.3", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "823e0818ef8e6931c0ce693a38ad6df77658000e", + "sha256": "036wx9jf3rbx2lp6pdqfl4hbkp3v2sdqmhimqb5g063dv7394ii8" + }, + "jar": { + "sha1": "bf43eed9de0031521107dfea41d1e5d6bf1b9639", + "sha256": "0q78lxy2sh9gdscnbqrjb3gkgjy1gf76gyf3yfqj353kb5vnhsla" + } + }, + + { + "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.13.3/jackson-dataformat-smile-2.13.3", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "ac3265b307f93810a9f5d286a0de0dd00aab3a1a", + "sha256": "1z6d1iqjbjhkmvxvda9xwj7rdvr6czlkw7xyc7wq5asc10m7li32" + }, + "jar": { + "sha1": "b4e03e361e2388e3a8a0b68e3b9988d3a07ee3f3", + "sha256": "1d4zhxvr9zc01lzsa3fq1bww2bmwc06p213sr058z3g85j4gzm1j" + } + }, + + { + "path": "com/github/javaparser/javaparser-core/3.25.3/javaparser-core-3.25.3", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "f6a4ac459bffaf658f503ddce9abf2230be5e392", + "sha256": "1hfzrw81qzdmkkkv153k86naqmi1ldmiis0bz3zckrfkis9vm0dy" + }, + "jar": { + "sha1": "55a960eea36e9ae20e48c500c3dd356b33331f1f", + "sha256": "09rca8alzi5av62sjsd4m0j6wpa0nprml0zjas87xb8dh8cbq93k" + } + }, + + { + "path": "com/google/auto/value/auto-value-annotations/1.6/auto-value-annotations-1.6", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "d10e43f4fe43c8f8383b1842c7b737ecf43b5c23", + "sha256": "15ya024j8fiir65axg667virayx97nkfpjlxw71kap47814bqqlk" + }, + "jar": { + "sha1": "da725083ee79fdcd86d9f3d8a76e38174a01892a", + "sha256": "0sdf3y01nmj6kixvfqd8ljxm1vvw7r1ngaza3dkzqaig8dn975fh" + } + }, + + { + "path": "com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "8d93cdf4d84d7e1de736df607945c6df0730a10f", + "sha256": "1zldsximvzlag566i5r2i124d5vs2jw4brjy39hb4m5jy6yrv20r" + }, + "jar": { + "sha1": "25ea2e8b0c338a877313bd4672d3fe056ea78f0d", + "sha256": "1iyh53li6y4b8gp8bl52fagqp8iqrkp4rmwa5jb8f9izg2hd4skn" + } + }, + + { + "path": "com/google/code/gson/gson/2.9.1/gson-2.9.1", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "f0cf3edcef8dcb74d27cb427544a309eb718d772", + "sha256": "00r9y2irlkglv0bc8kby214finn23gi7ksabgarp098lswin75p5" + }, + "jar": { + "sha1": "02cc2131b98ebfb04e2b2c7dfb84431f4045096b", + "sha256": "00x67pi14r2kdpn3rhglwcdmvhgifsxkmyrn2w5xbrp677ik919p" } }, @@ -208,41 +364,119 @@ }, { - "path": "com/google/javascript/closure-compiler-unshaded/v20210302/closure-compiler-unshaded-v20210302", + "path": "com/google/errorprone/error_prone_annotations/2.15.0/error_prone_annotations-2.15.0", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "dd12a10c4b267375dc32938dcec2c986793af9dc", + "sha256": "1rmisaislm0sjrnpibwqflws1hj6yq2wj0y2i6rbn7k869z63bkv" + }, + "jar": { + "sha1": "38c8485a652f808c8c149150da4e5c2b0bd17f9a", + "sha256": "1sy40pwq5rk87zpa0mccn8g3m7xgq38xkynvbfd7irs98dqlfw06" + } + }, + + { + "path": "com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "e8160e78fdaaf7088621dc1649d9dd2dfcf8d0e8", + "sha256": "1ff40d0r4d54fbb3rzdmj6i40yy88wlm4r795gda1jzyg3744q79" + }, + "jar": { + "sha1": "1dcf1de382a0bf95a3d8b0849546c88bac1292c9", + "sha256": "09na6vwxmpw4xcqszba15avzl6k6yjfvw5jbgs1xmljdfd6fwwd1" + } + }, + + { + "path": "com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "d0ec1628dcc04e4835721416103672384ea3136f", + "sha256": "15pkn904mhp97v67yfqiw936cxpzr9kpi0pjr9f0rii11j96dr9b" + }, + "jar": { + "sha1": "119ea2b2bc205b138974d351777b20f02b92704b", + "sha256": "1fc7y1dan9jqfg7j27f9iywa6mdagd8x2fhrnfgj3gc7bvb99gnm" + } + }, + + { + "path": "com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "1b77ba79f9b2b7dfd4e15ea7bb0d568d5eb9cb8d", + "sha256": "16v7p0wgzi5wijl596ggcawcs1gyn5mzgqcw0xalwg8m4vdv3m0q" + }, + "jar": { + "sha1": "b421526c5f297295adef1c886e5246c39d4ac629", + "sha256": "169zydsbk48cs370lpdq5l69qgqjsq7z7ppzprzsa2i3shvs0wmk" + } + }, + + { + "path": "com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "47e0dd93285dcc6b33181713bc7e8aed66742964", + "sha256": "0mghlfk0zwyv9qqd8x6p5yx4dspwnbypscrhhx2ywnqip8jaib2z" + }, + "jar": { + "sha1": "ba035118bc8bac37d7eff77700720999acd9986d", + "sha256": "0ysaws2dawf41raccmprx8vilr5nrh6d5d70q0i63gb74b4k1br1" + } + }, + + { + "path": "com/google/javascript/closure-compiler-unshaded/v20230411/closure-compiler-unshaded-v20230411", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "7fa256146e50a569d2ca0395782015b5d8d9f71e", + "sha256": "1wgjsh94mgpydngk16ggpk2wpprwvf1pdhjkn620djqm1rlxdjnn" + }, + "jar": { + "sha1": "2f5d7ab921f9cc07ffeb4e1c0f156f164c650eeb", + "sha256": "0gphdrrhr88bcqa1scndachvhbayh7m11zm9hcsmvzn9bw72pabw" + } + }, + + { + "path": "com/google/protobuf/protobuf-java/3.21.12/protobuf-java-3.21.12", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "1f790dd30fd0c2279cf73d79c4eba6a9f7516532", - "sha256": "17vb4r6bn97s4jjwja7xmpwfdnfzknhyigz2vdiqpqyh4a31hb3c" + "sha1": "78c539faf2fddf82de70e6d817a8cab6fe07b5d2", + "sha256": "1danw37m91ksjm8c979clmiya03p3g1zadxivl57alkhfx8qwy09" }, "jar": { - "sha1": "14a87750b6bbe6e29932446b6db1f015851fd4e8", - "sha256": "11ydn317q2aqh1bkm7gry48r2bakw5ifpx1yrrq192vq5kg7zwhq" + "sha1": "5589e79a33cb6509f7e681d7cf4fc59d47c51c71", + "sha256": "11yzx7m9qq682n8r1xh820gjnnhddgfn3xgayf060946jbddngiz" } }, { - "path": "com/ibm/icu/icu4j/66.1/icu4j-66.1", + "path": "com/google/re2j/re2j/1.3/re2j-1.3", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "638f68796d2b8ac88866eea5655dd52699c3af6c", - "sha256": "0m5payayqb83nzn9syrlkawdqnsf2mnl2w7v6v4gqw76b6j0bzs2" + "sha1": "565024724e6527255f0ae38e507c7f90c55b21ce", + "sha256": "0bzj30pnw9bm7jfcwl5ypaqrgvvp3yndf9vdw0qjfyzr9xx39z2d" }, "jar": { - "sha1": "72c7519b6d91f7a1f993bd44a99fe95d67211b27", - "sha256": "06hgh1ndj7gfnh60bknglbcv32g1nx4qsjagfxbw7mkzys9skk2x" + "sha1": "dc7de2b32fa8cc569ab44fb849abadbbc6983b91", + "sha256": "06fypacl4jsbiddgby40fxxz6bpck7jvc5ch344f472cqnhhy16q" } }, { - "path": "commons-codec/commons-codec/1.10/commons-codec-1.10", + "path": "commons-codec/commons-codec/1.15/commons-codec-1.15", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "44b9477418d2942d45550f7e7c66c16262062d0e", - "sha256": "1yscxabk7i59vgfjg7c1y3prj39h1d8prnwgxbisc4ni29qdpf5x" + "sha1": "c08f2dcdbba1a9466f3f9fa05e669fd61c3a47b7", + "sha256": "0n5b40x4wsmygna7fivix3cy9rs2yv5ikx30g141adsslfcf2vn8" }, "jar": { - "sha1": "4b95f4897fa13f2cd904aee711aeafc0c5295cd8", - "sha256": "0scm6321zz76dc3bs8sy2qyami755lz4lq5455gl67bi9slxyha2" + "sha1": "49d94806b6e3dc933dacbd8acb0fdbab8ebd1e5d", + "sha256": "0qzd8v96j4x7jjcfpvvdh9ar1xhwxpxi2rh51nzhj0br7bbgdsdk" } }, @@ -260,15 +494,15 @@ }, { - "path": "commons-io/commons-io/2.6/commons-io-2.6", + "path": "commons-io/commons-io/2.11.0/commons-io-2.11.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "5060835593e5b6ed18c82fc2e782f0a3c30a00b1", - "sha256": "0q4a6fp6xkyd86ikymkyv2plhf9vj8aqvggxg9d1yad2jcw8c8qc" + "sha1": "3fe5d6ebed1afb72c3e8c166dba0b0e00fdd1f16", + "sha256": "0ngg3s1kw6in8535dr71dr490ixajd6q7bdc40n5yjr4wgbny09f" }, "jar": { - "sha1": "815893df5f31da2ece4040fe0a12fd44b577afaf", - "sha256": "04v5fg53jl9gbn6pyz3l7kbpxv0xjzyasnw6yd1a3hhacq2d6xzq" + "sha1": "a2503f302b11ebde7ebc3df41daebe0e4eea3689", + "sha256": "020946yakki3qzc652arfndzi594drxanidz9bawbb6vhxnjy6wn" } }, @@ -286,15 +520,15 @@ }, { - "path": "com/taoensso/encore/2.105.0/encore-2.105.0", + "path": "com/taoensso/encore/3.21.0/encore-3.21.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "1696bfdc4804fd0edf61b62a7ded6beb15623d2b", - "sha256": "0diy07ihlscksmnm318q63gjh7yjy79s60w99h14x4v0qa7dzpxq" + "sha1": "92b49be36d9701f17eac88e681d8c8c1b1a3296a", + "sha256": "12qcy1j859rni87kngxicp3a2nb361yiskqa61cr6l6yd7rw381n" }, "jar": { - "sha1": "b3e95517f4a6eeaba4d0d205215f4743db48c54d", - "sha256": "04xf06gsldv3yx92kw3a7g2xl9n3dbds6w7984bf83l984cydyj0" + "sha1": "2fd92b7a4ff59715cbbee0ebfd166e2feadfa9ce", + "sha256": "0krgb7s28l12nzcgcj4601ajlpkx4wk7zij7b1ly479dxgsr03qx" } }, @@ -312,15 +546,15 @@ }, { - "path": "com/taoensso/truss/1.5.0/truss-1.5.0", + "path": "com/taoensso/truss/1.6.0/truss-1.6.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "dd64379ae860c87098eea582d30a48e887f9748e", - "sha256": "01j47fp91zv5g8yd5ayhnfgm59zsiq5wcicyjjpnkhy9nsw5vl5h" + "sha1": "0bde0c47c89439c06406ae395f2f6c5e4e1b1b7a", + "sha256": "1w7kcf2d4xxn3m5f60rp4gs3fsa2bcizjd1jas0ly48hmpr1jki7" }, "jar": { - "sha1": "ef3f595da76cbcbe40124ee0a858b7ca635d30f2", - "sha256": "1a49slgn2py6mxghwmq70nm9k4s27kmvp3cgnv6v2fi5zvkphwrs" + "sha1": "02c08dae83153a50eb946c4d742f574a24bb2a76", + "sha256": "0z5mw41ikk2m09vv6rn9hiqjyqlcfkr99cy7kk074w78lryy9w2f" } }, @@ -338,54 +572,28 @@ }, { - "path": "com/wsscode/pathom/2.2.31/pathom-2.2.31", - "host": "https://repo.clojars.org", - "pom": { - "sha1": "dfb29e4cf9e0ff1acd55e98539bc1f28732a03c6", - "sha256": "07w3zf8r6ww3fhxa388f15bjhfwcg2nfhb75r9lxdbdgbrgv8dlv" - }, - "jar": { - "sha1": "2e288758b896e973ea9474abeab1104193f8f834", - "sha256": "19hngwfnq85c8j317fck14phzzj679d84q6mkgzrx5y4v4nfjkk7" - } - }, - - { - "path": "com/wsscode/spec-inspec/1.0.0-alpha2/spec-inspec-1.0.0-alpha2", + "path": "crypto-equality/crypto-equality/1.0.1/crypto-equality-1.0.1", "host": "https://repo.clojars.org", "pom": { - "sha1": "34e3fcb80ca9d39ad1b816ecec87387d6f196c17", - "sha256": "0viz44h7h1kvzk1z00ndqdw8224ng6bwgvj6789ishcbga7s33mc" + "sha1": "36dc5bebe6a999f416c89ee1779f33951e71f871", + "sha256": "0jzlfh7618w59r34wwq8ssm19751c6if03d530yijmnksl15fbk3" }, "jar": { - "sha1": "6a1d1d2b670a57638dcab99bcf6bba97fef832a7", - "sha256": "087masqh68qpkh5m8f37jdqkfm7pw4vg93302rrikq47z1xa48h7" + "sha1": "26f76ad46f4a9881992c158118419dd9e7846b52", + "sha256": "1psbxljxvqvjvvlz1cj0df50l5npzvpyj0kdr27kzxywfq5wq5gf" } }, { - "path": "crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0", + "path": "crypto-random/crypto-random/1.2.1/crypto-random-1.2.1", "host": "https://repo.clojars.org", "pom": { - "sha1": "6b025f8fe474fb3a379230bcfe34b4766d00e051", - "sha256": "0k7rdh1jrbd45igvx45747krdiv4s5bd8viqk83ng802rgw8x8aw" + "sha1": "e6274f0b2a95e58deabfb1e3ab3d6bbfbe94e5a3", + "sha256": "0j0hn9y5klzfji5lyflsm6jbk1xnk0arlr2lby85wcl5881hps6q" }, "jar": { - "sha1": "6728b7a444008fe576167fcadb92fea23bb17d42", - "sha256": "1y9q8v245n4v3h6sh92a1rlf9rvi7j1akvb0cf47cgg6q60rrlbx" - } - }, - - { - "path": "crypto-random/crypto-random/1.2.0/crypto-random-1.2.0", - "host": "https://repo.clojars.org", - "pom": { - "sha1": "0cd21fd6f8b7f20a614580e0271474e94b8e8863", - "sha256": "19cczijlkg4zk4r4wgvp27j3wahvwgj0ci8pbqhg3gmjri56396d" - }, - "jar": { - "sha1": "cd5ed1fa18919cc13f5ab5feabdff21cc4b0faf6", - "sha256": "024dkz5vg6w0q4llw26v35mraai8x8hp0nii2c99szshn6pd0549" + "sha1": "ded0350f88e6f0bcca276c73f3aaadde94dc09f3", + "sha256": "0b75799a2lilbrm9j6k5zx22iq7pfaw76rvjx72m6vdnsx38h4jw" } }, @@ -403,41 +611,28 @@ }, { - "path": "edn-query-language/eql/0.0.9/eql-0.0.9", + "path": "expound/expound/0.9.0/expound-0.9.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "cf5657fb7b1f62a26f45c99b7ac036d5ace16d07", - "sha256": "0q004j1mjbyvqk5h7fy1lbx8smqmxaqph94cryr6n8w54l90293p" + "sha1": "54f6517c1931497f343c83cf65bf5714ba086e88", + "sha256": "1nf5jxlpjy94yhzxwbgdrc0v766qkrmhb07n18d4zg6c7l68x54h" }, "jar": { - "sha1": "b73c0347b13a5f4f34481b8daa3be35fa1b8b6cf", - "sha256": "1wvjnhmv1bsncnaw4hmfc01h5grkfx4zs9mrvx3z5pyl0ziwrfaw" + "sha1": "5294f6b31a2cfa6ffbe5021d9390c738fb471927", + "sha256": "0p7r33hglnl93v0sxbvspbl9khcbs69xd2vaz8dkbq0qk5h758yn" } }, { - "path": "expound/expound/0.8.5/expound-0.8.5", + "path": "fipp/fipp/0.6.26/fipp-0.6.26", "host": "https://repo.clojars.org", "pom": { - "sha1": "bb1cca2459083f9a719049b4271052675249606d", - "sha256": "19li8mfj83ssp7sd8ajgf4ldm3w009dn3alw4llp0llb11mq0qww" + "sha1": "e0944019d61c38794cfa9b06f35ca4e726690108", + "sha256": "0dambx7ijfii2hxdhqs3b4al8482xgpmfbvws0pi688kp1bn7v57" }, "jar": { - "sha1": "757c1e307707f1a8125157a5677dce3b34d74139", - "sha256": "179l073rsw934ys7fcg2b0idb0va1r1y4mi5408p0b45bk9bscql" - } - }, - - { - "path": "fipp/fipp/0.6.23/fipp-0.6.23", - "host": "https://repo.clojars.org", - "pom": { - "sha1": "ede49f8648de2972fdae7ad14d84ada3a3769a2c", - "sha256": "1aa8si55rpsb3d7h7pl1090f7zpmkaymygh0nfxcpp88jqngn4v0" - }, - "jar": { - "sha1": "c3dab4003e436d9133e8194afe57d1aea8cfcb4d", - "sha256": "0yzd7qkmqq6x1ny6qq7832h30yk82058svaggqq95yhw89vizf5y" + "sha1": "fde761cd9f5c9bd13e8c91e8b9724573a87f1449", + "sha256": "10vjhnb9g9yzcgjsi1gi394nspvyki0l2m4dhd6dgbsmrrn6kjzp" } }, @@ -506,6 +701,32 @@ } }, + { + "path": "io/methvin/directory-watcher/0.17.1/directory-watcher-0.17.1", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "fa5e42e2665cd9c8cdf9544f7d042e28730f7251", + "sha256": "09shgb0ds62fdd9ck2rs1xmwpbb1jfmqpwhzxna0fbyhwqj2kwmf" + }, + "jar": { + "sha1": "cf173a2fbca13eea5de68ea7b3434ce2c627fdeb", + "sha256": "176sa5hglp358nswyfafqh98l79971h8qxncpmbb5y227v4qx4xd" + } + }, + + { + "path": "io/replikativ/datalog-parser/0.2.25/datalog-parser-0.2.25", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "43f39a5474e3767703a9722130b8ff7bc2e19fc2", + "sha256": "0digckysn4ndv14yikbcxphq5wb766nrf1rmnw4mzalmwdfq008d" + }, + "jar": { + "sha1": "4d59fde5929044463b0385e9161709a64a4f3d32", + "sha256": "0lbwrpsgfg7ri7bqrh23w3fjkfc9jlh4s1nim8rd284pc42xhnhg" + } + }, + { "path": "io/undertow/undertow-core/2.2.4.Final/undertow-core-2.2.4.Final", "host": "https://repo1.maven.org/maven2", @@ -519,6 +740,19 @@ } }, + { + "path": "javax/annotation/jsr250-api/1.0/jsr250-api-1.0", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "828184cb963d953865b5941e416999e376b1c82a jsr250-api-1.0.pom", + "sha256": "0kclcaa2zgvsadld82d5j4wgsf2g83cl0ldghcifymj3y3v0x2sl" + }, + "jar": { + "sha1": "5025422767732a1ab45d93abfea846513d742dcf jsr250-api-1.0.jar", + "sha256": "07wl9bsxxh9id5rr8vwc1sgibsz1s40srpq073nq7ldnv7825ad1" + } + }, + { "path": "javax/servlet/servlet-api/2.5/servlet-api-2.5", "host": "https://repo1.maven.org/maven2", @@ -585,327 +819,340 @@ }, { - "path": "nrepl/nrepl/1.0.0/nrepl-1.0.0", + "path": "net/java/dev/jna/jna/5.12.1/jna-5.12.1", + "host": "https://repo1.maven.org/maven2", + "pom": { + "sha1": "28b38eb06d49cc01a0d779101788b0fe46d0973b", + "sha256": "0mjkp2r9qca6aad1w0z4k99b9bc9aqppj5q3nma9b1ddkf22bzv5" + }, + "jar": { + "sha1": "b1e93a735caea94f503e95e6fe79bf9cdc1e985d", + "sha256": "1cskrxarxlrh7h73sh44g4cn4k47mnlf2hnqj7p0vmj09yn19a4i" + } + }, + + { + "path": "nrepl/bencode/1.1.0/bencode-1.1.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "79b3e7030f2da9c4b8a20e4e5b44b401fbaccefc", - "sha256": "0wnsyd2vwikqljl8si3040s5b89fm8j9zfa4a1c8g3lzj4npjwvl" + "sha1": "5a950fae855b77e739c3f0a7d839fb166fd1d4c7", + "sha256": "0wkbmvxq8q4m8w2pdgmdqvkz7iklks2fpg76r8vkqzxd3c24aym3" }, "jar": { - "sha1": "f47774c43493efdc879d36b95ebd67ea0d9c890a", - "sha256": "1fx5ssmixgqmklliw0ng8fjz41kkhys56x8dbwv9yqrfzws9f2x3" + "sha1": "48e0674aeb221294c8728ad68571c01b95df4f5b", + "sha256": "0syyqsx376lxirv3prx27klvz1x98vxg6rqsaniz4ddi45vxlm2p" } }, { - "path": "org/clojure/clojure/1.10.1/clojure-1.10.1", - "host": "https://repo1.maven.org/maven2", + "path": "nrepl/nrepl/1.0.0/nrepl-1.0.0", + "host": "https://repo.clojars.org", "pom": { - "sha1": "3fc51cbb6dc8bb6fefc2bae63da919ae7e3d538e", - "sha256": "131sv1nv3s0mpfv3bplh1z0b6hh7m403x00sxn236iqfz8jazxqh" + "sha1": "79b3e7030f2da9c4b8a20e4e5b44b401fbaccefc", + "sha256": "0wnsyd2vwikqljl8si3040s5b89fm8j9zfa4a1c8g3lzj4npjwvl" }, "jar": { - "sha1": "a1e6b92ce9b1bfc5d181867a45da8a38a6077662", - "sha256": "06nj99mi0092qhv32ipk0nws4sdhnc890xx4gsgabllyzn8zkxnl" + "sha1": "f47774c43493efdc879d36b95ebd67ea0d9c890a", + "sha256": "1fx5ssmixgqmklliw0ng8fjz41kkhys56x8dbwv9yqrfzws9f2x3" } }, { - "path": "org/clojure/clojurescript/1.10.844/clojurescript-1.10.844", + "path": "org/apache/ant/ant/1.10.11/ant-1.10.11", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "f4004d2de394c5f41317a38ae32f79e78826b45f", - "sha256": "0nq8mz45gl86aigrmjnkq2fd612caayxfzkyk03dmp5v4sr5zxf6" + "sha1": "72f702c7d8de0de614e2b93409146197157e1d63", + "sha256": "1qqz9gxrvmfxdbma04d3xs7f2y2dzv62psvfpz7gbas6rgcr8a62" }, "jar": { - "sha1": "86bedf67c795c72bde3feb0415b41be8b95f2cbb", - "sha256": "03rs4dpwssa5ym9idip6vkxq27np3dwx7mzxms2s0yv4lipla58v" + "sha1": "b875cd48a0bc955ae9c5c477ad991e1f26fb24d2", + "sha256": "0m07pifkdpwghpp8wvqh14sbxazmjbkkpsfakw6ixq5apfdvih48" } }, { - "path": "org/clojure/core.async/1.3.610/core.async-1.3.610", + "path": "org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "bbc3c7d710edf8ab0ebf44b111f75861da7a862c", - "sha256": "0z1g9pklb3z4l4zc4327bzpwm9nfqn43mxrf7k4zlvl679a9j136" + "sha1": "b7a6baf478827a41351061b89bde2fd23d0328f5", + "sha256": "07hwdm20mffm51yw8qxqlgqwr0nly4987cslxh46xsqv4s40capd" }, "jar": { - "sha1": "dbe356df16976e1d820463722b6f0e3c3b3f8e26", - "sha256": "0xv11hc7mdgscy18pnpj1afkpmmz31cajygn698n35bc8v7jzfq3" + "sha1": "ea0a0475fb6dfcdcf48b30410fd9d4f5c80df07e", + "sha256": "0mnj5v660qvmrsi1m6z0dnykw3df8f1213byzp45l2wqgbgk1dfs" } }, { - "path": "org/clojure/core.cache/1.0.207/core.cache-1.0.207", - "host": "https://repo1.maven.org/maven2", + "path": "org/babashka/sci/0.7.38/sci-0.7.38", + "host": "https://repo.clojars.org", "pom": { - "sha1": "685d2afab3d69ae3fc3d27a823c047a7ace55826", - "sha256": "06y0n1p98acyrw8af5lgrl7dysxvzf6drzsqxkl153bly4psagki" + "sha1": "be9e6f6013428569313f502e5f10b6211eb7e6ba", + "sha256": "1h5kyhk7z9yac9fz77w3mm356gr3gbhk0mh875i9i00s3z058f9c" }, "jar": { - "sha1": "53a26d2487b67fb92ee429bcba951100927f653d", - "sha256": "1jjyasbxjylgr02gnfkxdf14sfkln547xj5r3x33p21n6fjysi4g" + "sha1": "ef2d8c74065b9a7d685a11bff017676db308a923", + "sha256": "04pkxwcgkd1p4f4rszsr6pp18fl0vni1az47a390llrhyyrjcckn" } }, { - "path": "org/clojure/core.memoize/1.0.236/core.memoize-1.0.236", - "host": "https://repo1.maven.org/maven2", + "path": "org/babashka/sci.impl.types/0.0.2/sci.impl.types-0.0.2", + "host": "https://repo.clojars.org", "pom": { - "sha1": "ea0699a15104dd065c591d429d65c3a48884e97a", - "sha256": "1s094b7qns4g2yhjzh0kfkar91dpwvw137jqn79cscsvmq7qjkk3" + "sha1": "6cd4c1666076647841f5033b2a0fc100ef6e37bc", + "sha256": "07ks8imcsxbmm7ahpjbba10fqvrx22kxr4vbgfsciwj9sp0z4s8v" }, "jar": { - "sha1": "56b14b1dfe3fe4ac638c191131124231f4417236", - "sha256": "0hal4qc90yxiq5mqp006bv9y9x0g48xw8hfcqvf79varzwwgg744" + "sha1": "45a05ece33609c3ad26a6ea4e05130560da82306", + "sha256": "0pwwqq11rcknpcwbwsbw7pgbgnd7hqiawn0r8yvk14qfwa6p7z46" } }, { - "path": "org/clojure/core.rrb-vector/0.1.1/core.rrb-vector-0.1.1", + "path": "org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "3231642aa1dcf628c864a5f208cd293fbd6a385a", - "sha256": "18kk5sds5lg8r2kidhz9qpgyrvggkj8j4sgfdsmyyl93w3f16lnp" + "sha1": "fb8dca6f40fcb30f7b89de269940bf3316fb9845", + "sha256": "1fa61xws48m9hpj7z3zlbywc82kwyfda66nwhqxhp0k2dviplnvp" }, "jar": { - "sha1": "aafb7677ec1e9f344fc834bbbdb91e8ba02af474", - "sha256": "0cqyy1vqrhilgwrdxsibd7360ch3hhwjnbbnzsak38v6i6mg66xl" + "sha1": "d5692f0526415fcc6de94bb5bfbd3afd9dd3b3e5", + "sha256": "1jzkwzdwd6wvrg0lrsh90df61frc5accp4y2x5fyqmx3q9d7h47z" } }, { - "path": "org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44", + "path": "org/clojure/clojure/1.11.1/clojure-1.11.1", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "5626897d1c41a6374c995a296789818a499b8804", - "sha256": "11m6k5bm8yzrhr872i5y74iqynhw6z4m7y9ff08kzrfqr5k7plwd" + "sha1": "93e849eac614a76e22c3420e37247d5e20c3be48", + "sha256": "12nbzybdx343p108fbxk81kw220swc50adprmqhbxn6vpqd5mi10" }, "jar": { - "sha1": "6027ceb1d1ae70a6a3fb1a8da2144632fa688604", - "sha256": "071q9dvp9nn3fkqs9yc27kgnmddkps1r0w22d3vipr78y3bc87iv" + "sha1": "2896bc72c90da8125026c0e61df0470a084f9ec3", + "sha256": "1pml1iqzix0vzi51kf86c0yj8miss41lk52m2hanbd1s8blvd093" } }, { - "path": "org/clojure/data.json/1.0.0/data.json-1.0.0", + "path": "org/clojure/clojurescript/1.11.60/clojurescript-1.11.60", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "a668636a98c1c7ff5b076425b574048ea52f6f32", - "sha256": "181qbg3l3mqqdn5bwgr96qa2p57aydyq5wq6rwvfhbpgnpk2z30l" + "sha1": "ba6dfef1a22e5105ac0a2c157cff44e4c04cb1ac", + "sha256": "10ifpjbfqng1wc9vzgfmrkr44j4dlgygifp446v639a8y1z9nrzy" }, "jar": { - "sha1": "a867078a9ab525f8acd7c363828678d9df73248f", - "sha256": "0pa7zdhhclfrn3pyylwv8dhkz8lfl5p3ihjdwdiqmj7xpsg4ypqv" + "sha1": "bc14df6666853ed869d7b88aaa864111c65d0c7f", + "sha256": "104mwhda4k9mw7qdszxrzha1idy9yqsidssw4ljf4m58l3rpgkhl" } }, { - "path": "org/clojure/data.priority-map/1.0.0/data.priority-map-1.0.0", + "path": "org/clojure/core.async/1.5.648/core.async-1.5.648", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "4c5e59860b70334b81ab32c989912eaa4dfc1edd", - "sha256": "058kbfgwhjf2w9clmk9jpwf21rr1q13lyk610cvw42x6fdb6dsd1" + "sha1": "8b0935d4b1f04ce72d4a37664111292a7997f97c", + "sha256": "1b11p0x171w2nz7ccp8nd1ydpi2ms01xdxkd5gqdqgdzkwahq6lk" }, "jar": { - "sha1": "44eeb2b3ee3ac2f210cfbf2b0452e2d70364e86f", - "sha256": "1x6bjz8qhba4660aaci5lzj46a593llxbh5hvpk689ar7xc3w65i" + "sha1": "134b1e0eac15fdd1718f8a8ddacbb0902961558f", + "sha256": "0b1krpckkc6ai85h32mfs3v7awgjcld38s7nwbklmjf7pxpv1fjd" } }, { - "path": "org/clojure/google-closure-library/0.0-20201211-3e6c510d/google-closure-library-0.0-20201211-3e6c510d", + "path": "org/clojure/core.cache/1.0.225/core.cache-1.0.225", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "9fbaa40e54d12d1d35afee260600b8e7325034cc", - "sha256": "046qdcbqclxz0p4lnahglqkazraw47gymx3cin5jrw2wd7dpmr0l" + "sha1": "f5331187dbd5784553cd432eb41159b868d0bc54", + "sha256": "0ggl0kzl42zq6c6wnrlh8k57k9qry644j39rg3j97wzyggv43qrr" }, "jar": { - "sha1": "b8c673dd84d8ed85c6d857e28afee5524a0ef82c", - "sha256": "0q84zw1nl0sg69cx9i7g2bkw7996ig2j3m9pw4yfysjsn5aycm1q" + "sha1": "ddd58c0d29cf1515d13351cc0770634ecac884f0", + "sha256": "1cd5yrlm80fqpjs0461isx57s0ymmgxwi0iqm7cdnp6sgsaally1" } }, { - "path": "org/clojure/google-closure-library-third-party/0.0-20201211-3e6c510d/google-closure-library-third-party-0.0-20201211-3e6c510d", + "path": "org/clojure/core.memoize/1.0.253/core.memoize-1.0.253", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "93650c3e00cf1dc0811d2e347068828cf6700fca", - "sha256": "1y6a10n8w98gr02ys8zxkddq2qrz7l5y3462d4hg8jpaq3r2pdm8" + "sha1": "ab3aa6203bb67af426099b8fcd44880c3b1d712f", + "sha256": "1b2yj8s2l8ywsnw7f3jq61xr8vjkpp4yr9j11kjc38rclfvzmhl4" }, "jar": { - "sha1": "edcb415db3c88ada448cfbf65b021f12c7b131e9", - "sha256": "1f5hjr2r323il0g9maamwdbgqxrvm3hg87jsgc13wa7naw4pm9pi" + "sha1": "bfa3ac940d93d50a14e4301b4cf8295e451b97c4", + "sha256": "1mhy3s8yjzyx47042za3b1d3nmp1bcqk83d2s30jdcra322hb4aa" } }, { - "path": "org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176", + "path": "org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "7e28eb2449d59217132147c19a80e0d3c8c2515f", - "sha256": "14mj43w6lfqh68c7yx9rshchpjdzwl1nmmlwdavwhk2qgd3w1769" + "sha1": "e9336ac820c5a7e07fe0aa431df981cbab6db3e3", + "sha256": "07q9qmxc7ggaxh27imgs34svn4j269rhslbnrs63ahrqzk5bmqlf" }, "jar": { - "sha1": "cd2d5b03d2ff95a958cb075201b89d28a7dea626", - "sha256": "1i3chggca910ln6h59ns17p454rpw55ffl6hgymx5p9lzzn9ckpw" + "sha1": "0404feea925608b921b56acd11d3b187a0d33fe4", + "sha256": "13hkx1285f2imqlj6wbgyxki2yg8rmfr49iq1zijxm1cgfx8xyai" } }, { - "path": "org/clojure/test.check/1.1.0/test.check-1.1.0", + "path": "org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "ae05079a8fd1d3cb761a68d85c29d3c71b1f764c", - "sha256": "1njqpkx2zdsy28sijjfbzawlffajgb142cliz4xcm1w2sxng7ihv" + "sha1": "561e998206e7d7facfb711bd467f72bb137046ad", + "sha256": "03ihgl3x8rsv533faxjvz04nisqvkn8rvgjlh05mj65x738vny0p" }, "jar": { - "sha1": "cdf224607aaed0c087eda05fd87144b86242366c", - "sha256": "04c8311pc39aaafkcrkdlnr0zfjkimhky246x9nj11mg5crnbhlx" + "sha1": "a2a7ea21a695561924bc8506f3feb5d8c8f894d5", + "sha256": "1j6bsr1blcps3gw18d0jx538rg41jr1l7r37hlamrr5vf30aivh6" } }, { - "path": "org/clojure/tools.analyzer/1.0.0/tools.analyzer-1.0.0", + "path": "org/clojure/data.json/2.4.0/data.json-2.4.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "fa72b6392b31762b55e0dc3de1c220ecdc6bb8a7", - "sha256": "1yg46a9zbga7rsrhwdv877hh60hcbyaykn37r3i50icxmgqcylq4" + "sha1": "a5d68f02324c977919255ae29d6ee9fafa12692a", + "sha256": "1x0cg318jk8ddmpm2z5lqzxdxrbxj7x1naj9v1m6c5xm2w7sfbm4" }, "jar": { - "sha1": "d2fb65426c7998647fb1fb3db1fb5b222ab91df6", - "sha256": "0mj1xi3v03fzcw1smpayvbvbgly2p3ysbgfz7jgfdhmxi4gl6gs6" + "sha1": "d779823f78d614897df79cd1823cb1cef840fa5b", + "sha256": "1pva908ndg2havnxyljipsbmqpwca6jjni9w64hd9v8y9scjygzc" } }, { - "path": "org/clojure/tools.analyzer.jvm/1.1.0/tools.analyzer.jvm-1.1.0", + "path": "org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "3f21bdbd549557232eb0bf0965b2beea34004d52", - "sha256": "0cyyhf82pn4mjw4whr4sx3cnxrgsk862dq92gn79yawxr6842i51" + "sha1": "9a13dafcdcb8c97aa8516a4be63a5fccb481206d", + "sha256": "1znzylxfc43r26nlj2j2mz7h5yrgqvn0panp1y78dn2n9zwh0lj6" }, "jar": { - "sha1": "027d2ebe594eb5f46d6bcea62593e184937b3011", - "sha256": "0kcfcn12dmyrm7sk1jkrlcb7ws8kazfqziv62mfid62xc095gayz" + "sha1": "fc412d06788c1ea186117f8ea656d44fba654788", + "sha256": "0k3gxah05i1pgfqvqx2sc7v2yh3na3jiv1zkcvyin3zsf92aylgy" } }, { - "path": "org/clojure/tools.cli/1.0.194/tools.cli-1.0.194", + "path": "org/clojure/google-closure-library/0.0-20230227-c7c0a541/google-closure-library-0.0-20230227-c7c0a541", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "3f031e4de9d4226452b123afc9f49e2e8bb65194", - "sha256": "0fk77qbd53dyynhxzi0cdrrjhzsrz23a3f4v4myi5hjw1pm27zfq" + "sha1": "79191fc01083724dd96eb482bb2736c36d641f24", + "sha256": "0xbmc87q395m91cdbcshfm9alz8hqhwp1q8861dgsqdhlrl6xpv1" }, "jar": { - "sha1": "317c231f8bb8ea1c47a2f5d81eb051ad5eefd5b8", - "sha256": "0439zi1i5cwlrkh2chjip2p7i47asrdwgplxv6basyzwhlk5wgac" + "sha1": "533ce2bdbb7925db781449abb6527af1e6c5e782", + "sha256": "0js19lw8bp9gym3pn47h867vhf65j18qc6x1pfn883vkwyasm18l" } }, { - "path": "org/clojure/tools.logging/1.1.0/tools.logging-1.1.0", + "path": "org/clojure/google-closure-library-third-party/0.0-20230227-c7c0a541/google-closure-library-third-party-0.0-20230227-c7c0a541", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "44b6bd9ac74cb5e2254e1f0b258d53c1829b865d", - "sha256": "093jy29w5gm9rp9va6qlhb6096jpf5higyk7sgmbwb5nf53qi3qb" + "sha1": "98206f2b09703fe8e37236ce2b54799c78e19a3d", + "sha256": "0mgh8bmc4hx89ix79glp3yspgscpxqz2pa1i46rzbvsm6pp765bn" }, "jar": { - "sha1": "84cb5d00caa9df2ee504d46f6107f4708271f619", - "sha256": "0x2zzivn38z179lxkw9wbi9n9qwsf466lrd9y27khdz7wbxhscb5" + "sha1": "f5ea82eb1309b81ada6a14371bb848323c65e38b", + "sha256": "0jk9v4bfrxvz6wq1s86msry2mf47nwcjfplnn41yabqc44g82hva" } }, { - "path": "org/clojure/tools.macro/0.1.5/tools.macro-0.1.5", + "path": "org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "6a01a15b02728d2aab47c2cc07b05b07d4003b95", - "sha256": "0cfv243i97r38kay3rmwf9j2gk9f646bifgsl4byi3m5gps98q3h" + "sha1": "140a45467a1a6bc624dccdbc41115907609a33f9", + "sha256": "0n07x6gid7hkrgqkkfba3h1pfc47z4pmc2grbw67cxf8796f33bd" }, "jar": { - "sha1": "925e200c906052e462e34a2c7e78a48ffec1dec4", - "sha256": "0j428ic8aazgv9s27820ybnsmgwfv7j8ywpkxs72dych9hlxf517" + "sha1": "a7dad492f8d6cf657d82dcd6b31bda0899f1ac0e", + "sha256": "1q5ax2bkpsz11lmqnrl7pnabjsrps62xsyajlmbsjrjwnn78kv37" } }, { - "path": "org/clojure/tools.reader/1.3.3/tools.reader-1.3.3", + "path": "org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "3b562275e65c32494f606eeb2aa2f297f4d7d434", - "sha256": "0qyngfvp5nbjgvjqdyicq0kz29i3ixc0lf71zbmcgnk6nlia4zy3" + "sha1": "663c6280c3e5718c9f9c7f6235d9e7f94b532a1e", + "sha256": "01mpr6fyfxb8fx33c1wz8vpl2n7iddfl3vnhjifa6q97p4pp281p" }, "jar": { - "sha1": "d87b8bf9f6ce87b207d5ac625236d72923b7d71f", - "sha256": "13vvsxzyxy6ppkjw15gi5h4n8wy5rqy3cy4qwkv8dqlv8i2jzs36" + "sha1": "692882a35d7b50947d6e4852fba8a51d8d5e3646", + "sha256": "08fzw3srrppgq1d11sh1ghnyvi24ixa10kbqsncc7xyx7fybcs0k" } }, { - "path": "org/graalvm/js/js/20.1.0/js-20.1.0", + "path": "org/clojure/tools.analyzer.jvm/1.2.2/tools.analyzer.jvm-1.2.2", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "95452a7fdac1d358f1dd66b33e49f4440e986922", - "sha256": "0gkazzg8771g3pc90fb99wmlk99rjimcryrmzz6zab742m4dbina" + "sha1": "d4c16b3f34d7f4d425e5c5d6852be52a13470fce", + "sha256": "0iwgn1xsc2snzs49h5gjd6p9nx7b88lz7pny37n5fg1s8kms5q8h" }, "jar": { - "sha1": "0abe5e8068014ccb34cf075637a00b7ce37e4a8c", - "sha256": "0v5pxjl9p7wwfrrzkkqh6qbvnn0p8n342smxzcqk3qxl4ah3aqnk" + "sha1": "449691b55d7d526258ce02c69b4699f2897c494d", + "sha256": "0phfs1z1scvdi00348zjh223xncmgrkmlrnbca4dh7lk701gy34i" } }, { - "path": "org/graalvm/js/js-scriptengine/20.1.0/js-scriptengine-20.1.0", + "path": "org/clojure/tools.cli/1.0.206/tools.cli-1.0.206", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "020bac4e8232f0b051e3e6b8033f67653cf9c685", - "sha256": "1avd7kmwh0i6nkcirwl358a6lkpqwara0f5a7qiw1fjivc81qmzq" + "sha1": "2931f17ef36a5ba5e550b07d5876bd59967715d5", + "sha256": "17pl72xxpc5m0a06x26bli3jmxxs5m85dc2qd70zgjdmi85ws07x" }, "jar": { - "sha1": "a4accb1ced82da8d61bd2928f435de8af548dc2b", - "sha256": "03001wa3xs08lw2rz27w5s0fyspyhkiiarqsrq9yf8gfysmnik2s" + "sha1": "5341b1ff68ec84e4ecff14c3611f81d36dba1041", + "sha256": "05pns6pzb9kkpknicabk2wdbiv4hi9wyr3w99aafmf8r35lx55vb" } }, { - "path": "org/graalvm/regex/regex/20.1.0/regex-20.1.0", + "path": "org/clojure/tools.logging/1.1.0/tools.logging-1.1.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "c271e87bc6e9d32124542974ab13e6cc505667e7", - "sha256": "017wnn9g87zyvrrzkf7g0n04abdgdgpvjpfakjngbaam67klwdj9" + "sha1": "44b6bd9ac74cb5e2254e1f0b258d53c1829b865d", + "sha256": "093jy29w5gm9rp9va6qlhb6096jpf5higyk7sgmbwb5nf53qi3qb" }, "jar": { - "sha1": "3aa7469814f842ac09b2c0441b14e9ffcd102bc4", - "sha256": "0mjhwprm9jvp0x3rwdkzkvpsa34l4zql0n6rrx8pca2dq5ylrzgv" + "sha1": "84cb5d00caa9df2ee504d46f6107f4708271f619", + "sha256": "0x2zzivn38z179lxkw9wbi9n9qwsf466lrd9y27khdz7wbxhscb5" } }, { - "path": "org/graalvm/sdk/graal-sdk/20.1.0/graal-sdk-20.1.0", + "path": "org/clojure/tools.macro/0.1.5/tools.macro-0.1.5", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "86ff6fd0a63edfb499edb63d9bc5a1eb1b67d775", - "sha256": "1nzlni24cqvqq35aplhjw7a5fkyx4hql5kysd804i2w07vs14f48" + "sha1": "6a01a15b02728d2aab47c2cc07b05b07d4003b95", + "sha256": "0cfv243i97r38kay3rmwf9j2gk9f646bifgsl4byi3m5gps98q3h" }, "jar": { - "sha1": "bccc9108aabf60d30ce574bf83bb582b188df687", - "sha256": "0l73z955gnr4jiy45xjqnv28cnzdxc1sip4iqk1fx184kn1cs8jk" + "sha1": "925e200c906052e462e34a2c7e78a48ffec1dec4", + "sha256": "0j428ic8aazgv9s27820ybnsmgwfv7j8ywpkxs72dych9hlxf517" } }, { - "path": "org/graalvm/truffle/truffle-api/20.1.0/truffle-api-20.1.0", + "path": "org/clojure/tools.reader/1.3.6/tools.reader-1.3.6", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "de4d7ff00c0b8041fef975432f3ce8515f4b235a", - "sha256": "10sz902rdm9av7qc0hc99cc4xzi6kv13m2ms5svc2nn8cfaly19a" + "sha1": "25138a6f03c82b85464b0f1275982f07a949b224", + "sha256": "1shbjafy9l9mbkps0pljd5bhqd7z2259ynzlb0f4mcbwif1fxxdf" }, "jar": { - "sha1": "32453b17c939deedab247f154e63c59ca286eec9", - "sha256": "08g5hgm3nha8vdray69nccnm28azi3dw14g5lim2gs1f6n5064h6" + "sha1": "927809dcb44fa726e4969d993e3e733636d95ebb", + "sha256": "1q5q7fmshybvp55f6qys8i5sbzfaix5v9f9b55dkbhv55hgv7l8i" } }, @@ -988,80 +1235,54 @@ }, { - "path": "org/msgpack/msgpack/0.6.12/msgpack-0.6.12", + "path": "org/jspecify/jspecify/0.2.0/jspecify-0.2.0", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "92138e8a6a64f25d226b6244f80dc22154d79fa7", - "sha256": "1vkd0p2rb1pdxh963235mkczamqg05p17mdplmcq3ppq0a7psjcl" + "sha1": "ca1feb3958e71984f65890acd328cb9168a4f7cb", + "sha256": "1m66wlrrnacdgs57agrry65y9z0478zf2v57h4j3lz6wcp275lqk" }, "jar": { - "sha1": "6a0c88fe022993c490011c3dce7127b29f9a9b3b", - "sha256": "0plvpp9ra9848sb3psx2yi0gvk5gm146hhnwln08wj10hmfsd770" + "sha1": "89ca55e02b85c959bd0c4c0c13a0b1885829af44", + "sha256": "1bn0nw88v70i4sqxlfl3jsmfi0180426kh77dx07955ysbl9k8vx" } }, { - "path": "org/ow2/asm/asm/7.1/asm-7.1", - "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "7e40eb6619fd20bd7d98bf775bfdd810aec87ac7", - "sha256": "101i3pyrq082kjyz413hfqwkjjsyfnk9kx3rqr38ln56mlp78a8g" - }, - "jar": { - "sha1": "fa29aa438674ff19d5e1386d2c3527a0267f291e", - "sha256": "1pnlb1ick32bihpzc599xl9ppd07qhls6pm0xaqwrj9cdlmzmcja" - } - }, - - { - "path": "org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1", - "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "71a39ae6a1a418295bd47392dc33df102b95d817", - "sha256": "1yr9djzczhygcp6b5gqr0j3mnhfdy3bil5jwjd2lvdc7jxr88qpb" - }, - "jar": { - "sha1": "379e0250f7a4a42c66c5e94e14d4c4491b3c2ed3", - "sha256": "0p5534jni1fb8nlls4g40fvqxv8rksax2yphf0jjmnv3398w04j6" - } - }, - - { - "path": "org/ow2/asm/asm-commons/7.1/asm-commons-7.1", + "path": "org/msgpack/msgpack/0.6.12/msgpack-0.6.12", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "71d16c198cfdce8f41f8a88a79b69503041d819a", - "sha256": "1p4ycfz11bph2xvyjgkhah9w1fqbkybs61b3525m433p28wpccms" + "sha1": "92138e8a6a64f25d226b6244f80dc22154d79fa7", + "sha256": "1vkd0p2rb1pdxh963235mkczamqg05p17mdplmcq3ppq0a7psjcl" }, "jar": { - "sha1": "431dc677cf5c56660c1c9004870de1ed1ea7ce6c", - "sha256": "0n6kxicikl5v1r5fqj4xw25c4nac6wbkpggapy2lv67iv24h8ng5" + "sha1": "6a0c88fe022993c490011c3dce7127b29f9a9b3b", + "sha256": "0plvpp9ra9848sb3psx2yi0gvk5gm146hhnwln08wj10hmfsd770" } }, { - "path": "org/ow2/asm/asm-tree/7.1/asm-tree-7.1", + "path": "org/ow2/asm/asm/9.4/asm-9.4", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "56f0537ea33db27034987e0df682521ae0200a19", - "sha256": "07psh8550vfsw6dcggin2wxhmw0bq5rczyir9mcqlx0birziaabk" + "sha1": "91bffd75aa63f199ab1a97746ae563d6099890b9", + "sha256": "1513k0r5vs96bbdjzz6q6c1xqvj6z87v0fmdc4yg9ldjizj52ds8" }, "jar": { - "sha1": "a3662cf1c1d592893ffe08727f78db35392fa302", - "sha256": "0wq0n7py73ylp59305wbnp3rc1jklacqr9d2ghfcflha1ci2ps60" + "sha1": "b4e0e2d2e023aa317b7cfcfc916377ea348e07d1", + "sha256": "10gk2l71sfj4d0sgj971abh2d8cl19slay89kfh6bbs5vjry5l1r" } }, { - "path": "org/ow2/asm/asm-util/7.1/asm-util-7.1", + "path": "org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36", "host": "https://repo1.maven.org/maven2", "pom": { - "sha1": "206270184f3f60825fe78699bfb4854940f6c9b7", - "sha256": "11zkc7i6dw0khfcka8sfx89qmhmqaysfpacyli799azk21pxcaqh" + "sha1": "749f6995b1d6591a417ca4fd19cdbddabae16fd1", + "sha256": "1116vkg10llq7ljvs3764n5fnwypnp42fb8wn65r4dwl4af6l17v" }, "jar": { - "sha1": "5b0b0f8cdb6c90582302ffcf5c20447206122f48", - "sha256": "06jdqxhgbb6abilnliyl4mf1x1ia9829qcpjvh1i1blnfm8qai52" + "sha1": "6c62681a2f655b49963a5983b8b0950a6120ae14", + "sha256": "1h512ry8g0nriazg3dqzs6s96502a77drw8vq26nfya97rg5gvyk" } }, @@ -1144,15 +1365,15 @@ }, { - "path": "refactor-nrepl/refactor-nrepl/3.6.0/refactor-nrepl-3.6.0", + "path": "refactor-nrepl/refactor-nrepl/2.5.0/refactor-nrepl-2.5.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "699468e940eace1064d6fa7a7553bf87d4ed4026", - "sha256": "12djd3mxi22b23c9vrv6amq1r9x9iq9b00s3ywl301rjmq5lqh4l" + "sha1": "0bce30b420249ba7e4b90cbb3e046b4bb5416389", + "sha256": "0zmg5qc8d55pry7832isiwd2q237znfjqjpxchd2hvlpalh5qnva" }, "jar": { - "sha1": "2b3bb82da53b5db9c2b2aa298417816b81d0ed97", - "sha256": "1ysqabmlnghki6x0636zngxza2d83c85276wp9ma9wk183mkv52a" + "sha1": "6bc3441afc94f7ca024e41a864ca75e05df7e207", + "sha256": "0w8hax99y98l53mixxzx2ja0vcnhjv8dnsaz1zj3vqk775ns5w6i" } }, @@ -1209,41 +1430,28 @@ }, { - "path": "ring/ring-codec/1.1.2/ring-codec-1.1.2", - "host": "https://repo.clojars.org", - "pom": { - "sha1": "55992693f2dd246828b727c676707a8cfd4c49f9", - "sha256": "1rqzrb4qws553vy9qw98jadq0x6prw2wsrz0kfg5bh7zh9awnpxj" - }, - "jar": { - "sha1": "a3284e0488f4823d79d16ef6aea9cb62cfab08e3", - "sha256": "0q6h18mi3xcm7qn268idkdy253i8kqzm4fbr7gwbrbv7zlxjg3bm" - } - }, - - { - "path": "ring/ring-core/1.8.1/ring-core-1.8.1", + "path": "ring/ring-codec/1.2.0/ring-codec-1.2.0", "host": "https://repo.clojars.org", "pom": { - "sha1": "0509c61560102008e76fcdd70f59a4fea50206d6", - "sha256": "0zyya3hvzbj0i5xv8acbg6hcprl10cfjakhnwmwpgb13j7sjd3b7" + "sha1": "7ea08ae164a2464407a31ad26ffd4a819274471b", + "sha256": "1knsx5n9d803z0b459axpfqx0dqq9nvj1i94zdk8z3xkh8rfkvbm" }, "jar": { - "sha1": "d4d133d31918a093b15eb5dd144b70a841b61af8", - "sha256": "18dk2vx1l95p1pxsjszr4f18r4pgpha75l8pkfmb07kfddiz2bag" + "sha1": "fbcc4a141c638a3bd386df8ed04c05d0481be209", + "sha256": "1hk58ln4vijf5zk2c61x8is5fhwgyrqhc49qnxbmn1b2002svn3g" } }, { - "path": "spec-coerce/spec-coerce/1.0.0-alpha6/spec-coerce-1.0.0-alpha6", + "path": "ring/ring-core/1.9.6/ring-core-1.9.6", "host": "https://repo.clojars.org", "pom": { - "sha1": "87bc1c6d6f001c43c949a84c033f57b43d9e835c", - "sha256": "0hcqxrk9m9kv4n4bmj4fmqfq9q0kk3g6n0kwp5gf7nmccg6v5wn4" + "sha1": "70cbd181fb0840cd86bf2c0e5feda4c9988b6c3f", + "sha256": "0ral997rb95yclzh1myasmd33zy8gj0b7jyzyj49l23499dmj9yc" }, "jar": { - "sha1": "7ea5aa8be38113aadd61219738ac1af8651dae4f", - "sha256": "1mwi6i2v38c8jndy99qvxb9izngxkb0p7a5ynd430c63fl8kj35p" + "sha1": "8ca97618f914401c4112e2fd28d24d47c4fc2815", + "sha256": "1zj5dpcyvivvf7zsggvrd75ykr98pblv3bpfr01jbkwjwx1s2d4a" } }, @@ -1274,41 +1482,41 @@ }, { - "path": "thheller/shadow-cljs/2.12.0/shadow-cljs-2.12.0-aot", + "path": "thheller/shadow-cljs/2.25.0/shadow-cljs-2.25.0-aot", "host": "https://repo.clojars.org", "pom": { - "sha1": "e89cabf1b6c7d268ee38343c839bc17c62160eaf", - "sha256": "0l9yv2c6acp3n2x5z1g9nqwqx58hl619srls5flnlf2x41f5gn7f" + "sha1": "90c4338b4f9635264358477f1b918f3b3d842073", + "sha256": "1jpb5nwz906lyg57pd69xhh02k89iwiplqqzl4prwp0l9zq75d2y" }, "jar": { - "sha1": "4748679d4953be302acf7e791b284a8dc49523d7", - "sha256": "1gcbna7wam7fnhrxxfb4v3agq0655la2fmwd7r9a6ip9xxc86z3a" + "sha1": "013921db91ce4a3616aec9c72c1832a014a0fece", + "sha256": "0ks380z7h8i2ylirvjgmlicq9jjpz9w71gjv521h4xs5fb273cl0" } }, { - "path": "thheller/shadow-cljsjs/0.0.21/shadow-cljsjs-0.0.21", + "path": "thheller/shadow-cljsjs/0.0.22/shadow-cljsjs-0.0.22", "host": "https://repo.clojars.org", "pom": { - "sha1": "c50afd20e5ad1d0a3179cfbe570e11e7f185bc40", - "sha256": "0969izwgf54hj5ddjcw57kjali5czzrr4p3g9647r8c91irplnw5" + "sha1": "16882933bd9f93459b983ae58ca8e122fe4ea779", + "sha256": "1sa99yzr7b99rjvs8gc374jf6yi4h8100nd6h3xkhdz9myhjfqyz" }, "jar": { - "sha1": "9ba9f8ed128a3c607c8b81217a06b6098d2484d1", - "sha256": "0dfdq3s7sp6f9cksjpx2kzzb07cgh2zc60akk4l7shhmkcyh87yc" + "sha1": "4323f8e603a952cae34c4c6db04141e97928434f", + "sha256": "1bljcig3hkn1nhfbg2w6apz8lwm8qk74qcwd8l2mbw1plfxa0fzn" } }, { - "path": "thheller/shadow-undertow/0.1.0/shadow-undertow-0.1.0", + "path": "thheller/shadow-undertow/0.3.1/shadow-undertow-0.3.1", "host": "https://repo.clojars.org", "pom": { - "sha1": "456dc9b20bccd14b6012540547d1a8e7c47f7c66", - "sha256": "0gwxvbpkfvy84h01gjasd0fnfgqmsaybiilbz0461vaazvcd3v8b" + "sha1": "e3c8f408c30298fe94b7e6658789fae876b25d0f", + "sha256": "0sihv9ik9qbbzx2zzws45ffrzdvdh30z5n4nbqhnwxjfz9s240ia" }, "jar": { - "sha1": "e072ad66285641c59df19f5352872a51da106156", - "sha256": "1ywcyfsrr3g42kxwchj6jvb2x43md3sdpnnk87h9m5g786ilay3r" + "sha1": "9be444bea4037bb80b451cc52a8e80359c4c45be", + "sha256": "174s2rdxvp7d4jg9kvzjadps42bdsbi05rs2pjy5i0ssq9n23zwa" } }, @@ -1325,6 +1533,19 @@ } }, + { + "path": "tigris/tigris/0.1.2/tigris-0.1.2", + "host": "https://repo.clojars.org", + "pom": { + "sha1": "a630ae71c92c71eb0926a826ba9d9570569b840e", + "sha256": "1874zfm35hwsxnld5fib88ascdayzwza7rknmvadq83mb41mkm8z" + }, + "jar": { + "sha1": "a122db758561d995a83cbb40f252b64d8b0f506e", + "sha256": "184p1wqcc6ikj9gpaygv4f1mf1p6mqg3j6x1jmqfa53cvf769aj9" + } + }, + { "path": "viebel/codox-klipse-theme/0.0.1/codox-klipse-theme-0.0.1", "host": "https://repo.clojars.org", diff --git a/nix/deps/clojure/deps.list b/nix/deps/clojure/deps.list index 93d64dbda4e..407cfa829cc 100644 --- a/nix/deps/clojure/deps.list +++ b/nix/deps/clojure/deps.list @@ -1,103 +1,120 @@ +args4j/args4j/2.33/args4j-2.33.jar +babashka/fs/0.2.16/fs-0.2.16.jar bidi/bidi/2.1.6/bidi-2.1.6.jar binaryage/env-config/0.2.2/env-config-0.2.2.jar binaryage/oops/0.7.2/oops-0.7.2.jar +borkdude/edamame/1.1.17/edamame-1.1.17.jar +borkdude/sci.impl.reflector/0.0.1/sci.impl.reflector-0.0.1.jar camel-snake-kebab/camel-snake-kebab/0.4.3/camel-snake-kebab-0.4.3.jar -cider/cider-nrepl/0.29.0/cider-nrepl-0.29.0.jar -cider/piggieback/0.5.2/piggieback-0.5.2.jar +cheshire/cheshire/5.11.0/cheshire-5.11.0.jar +cider/cider-nrepl/0.25.3/cider-nrepl-0.25.3.jar +cider/piggieback/0.4.1/piggieback-0.4.1.jar +clj-kondo/clj-kondo/2023.09.07/clj-kondo-2023.09.07.jar cljs-bean/cljs-bean/1.3.0/cljs-bean-1.3.0.jar clout/clout/2.1.2/clout-2.1.2.jar com/andrewmcveigh/cljs-time/0.5.2/cljs-time-0.5.2.jar com/bhauman/cljs-test-display/0.1.1/cljs-test-display-0.1.1.jar -com/cognitect/transit-clj/1.0.324/transit-clj-1.0.324.jar +com/cognitect/transit-clj/1.0.329/transit-clj-1.0.329.jar com/cognitect/transit-cljs/0.8.248/transit-cljs-0.8.248.jar -com/cognitect/transit-java/1.0.343/transit-java-1.0.343.jar +com/cognitect/transit-java/1.0.362/transit-java-1.0.362.jar com/cognitect/transit-js/0.8.846/transit-js-0.8.846.jar -com/fasterxml/jackson/core/jackson-core/2.8.7/jackson-core-2.8.7.jar +com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3.jar +com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.13.3/jackson-dataformat-cbor-2.13.3.jar +com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.13.3/jackson-dataformat-smile-2.13.3.jar +com/github/javaparser/javaparser-core/3.25.3/javaparser-core-3.25.3.jar +com/google/auto/value/auto-value-annotations/1.6/auto-value-annotations-1.6.jar +com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar +com/google/code/gson/gson/2.9.1/gson-2.9.1.jar com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar -com/google/javascript/closure-compiler-unshaded/v20210302/closure-compiler-unshaded-v20210302.jar -com/ibm/icu/icu4j/66.1/icu4j-66.1.jar -commons-codec/commons-codec/1.10/commons-codec-1.10.jar +com/google/errorprone/error_prone_annotations/2.15.0/error_prone_annotations-2.15.0.jar +com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar +com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar +com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar +com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar +com/google/javascript/closure-compiler-unshaded/v20230411/closure-compiler-unshaded-v20230411.jar +com/google/protobuf/protobuf-java/3.21.12/protobuf-java-3.21.12.jar +com/google/re2j/re2j/1.3/re2j-1.3.jar +commons-codec/commons-codec/1.15/commons-codec-1.15.jar commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4.jar -commons-io/commons-io/2.6/commons-io-2.6.jar +commons-io/commons-io/2.11.0/commons-io-2.11.0.jar compojure/compojure/1.5.2/compojure-1.5.2.jar -com/taoensso/encore/2.105.0/encore-2.105.0.jar +com/taoensso/encore/3.21.0/encore-3.21.0.jar com/taoensso/timbre/4.10.0/timbre-4.10.0.jar -com/taoensso/truss/1.5.0/truss-1.5.0.jar +com/taoensso/truss/1.6.0/truss-1.6.0.jar com/taoensso/tufte/2.1.0/tufte-2.1.0.jar -com/wsscode/pathom/2.2.31/pathom-2.2.31.jar -com/wsscode/spec-inspec/1.0.0-alpha2/spec-inspec-1.0.0-alpha2.jar -crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0.jar -crypto-random/crypto-random/1.2.0/crypto-random-1.2.0.jar +crypto-equality/crypto-equality/1.0.1/crypto-equality-1.0.1.jar +crypto-random/crypto-random/1.2.1/crypto-random-1.2.1.jar day8/re-frame/test/0.1.5/test-0.1.5.jar -edn-query-language/eql/0.0.9/eql-0.0.9.jar -expound/expound/0.8.5/expound-0.8.5.jar -fipp/fipp/0.6.23/fipp-0.6.23.jar +expound/expound/0.9.0/expound-0.9.0.jar +fipp/fipp/0.6.26/fipp-0.6.26.jar hiccup/hiccup/1.0.5/hiccup-1.0.5.jar hickory/hickory/0.7.1/hickory-0.7.1.jar http-kit/http-kit/2.2.0/http-kit-2.2.0.jar instaparse/instaparse/1.4.0/instaparse-1.4.0.jar io/aviso/pretty/0.1.33/pretty-0.1.33.jar +io/methvin/directory-watcher/0.17.1/directory-watcher-0.17.1.jar +io/replikativ/datalog-parser/0.2.25/datalog-parser-0.2.25.jar io/undertow/undertow-core/2.2.4.Final/undertow-core-2.2.4.Final.jar +javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar javax/servlet/servlet-api/2.5/servlet-api-2.5.jar javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar medley/medley/0.8.2/medley-0.8.2.jar mvxcvi/alphabase/1.0.0/alphabase-1.0.0.jar net/cgrand/macrovich/0.2.1/macrovich-0.2.1.jar +net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar +nrepl/bencode/1.1.0/bencode-1.1.0.jar nrepl/nrepl/1.0.0/nrepl-1.0.0.jar -org/clojure/clojure/1.10.1/clojure-1.10.1.jar -org/clojure/clojurescript/1.10.844/clojurescript-1.10.844.jar -org/clojure/core.async/1.3.610/core.async-1.3.610.jar -org/clojure/core.cache/1.0.207/core.cache-1.0.207.jar -org/clojure/core.memoize/1.0.236/core.memoize-1.0.236.jar -org/clojure/core.rrb-vector/0.1.1/core.rrb-vector-0.1.1.jar -org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar -org/clojure/data.json/1.0.0/data.json-1.0.0.jar -org/clojure/data.priority-map/1.0.0/data.priority-map-1.0.0.jar -org/clojure/google-closure-library/0.0-20201211-3e6c510d/google-closure-library-0.0-20201211-3e6c510d.jar -org/clojure/google-closure-library-third-party/0.0-20201211-3e6c510d/google-closure-library-third-party-0.0-20201211-3e6c510d.jar -org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar -org/clojure/test.check/1.1.0/test.check-1.1.0.jar -org/clojure/tools.analyzer/1.0.0/tools.analyzer-1.0.0.jar -org/clojure/tools.analyzer.jvm/1.1.0/tools.analyzer.jvm-1.1.0.jar -org/clojure/tools.cli/1.0.194/tools.cli-1.0.194.jar +org/apache/ant/ant/1.10.11/ant-1.10.11.jar +org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11.jar +org/babashka/sci/0.7.38/sci-0.7.38.jar +org/babashka/sci.impl.types/0.0.2/sci.impl.types-0.0.2.jar +org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar +org/clojure/clojure/1.11.1/clojure-1.11.1.jar +org/clojure/clojurescript/1.11.60/clojurescript-1.11.60.jar +org/clojure/core.async/1.5.648/core.async-1.5.648.jar +org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar +org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar +org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2.jar +org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.jar +org/clojure/data.json/2.4.0/data.json-2.4.0.jar +org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar +org/clojure/google-closure-library/0.0-20230227-c7c0a541/google-closure-library-0.0-20230227-c7c0a541.jar +org/clojure/google-closure-library-third-party/0.0-20230227-c7c0a541/google-closure-library-third-party-0.0-20230227-c7c0a541.jar +org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.jar +org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0.jar +org/clojure/tools.analyzer.jvm/1.2.2/tools.analyzer.jvm-1.2.2.jar +org/clojure/tools.cli/1.0.206/tools.cli-1.0.206.jar org/clojure/tools.logging/1.1.0/tools.logging-1.1.0.jar org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.jar -org/clojure/tools.reader/1.3.3/tools.reader-1.3.3.jar -org/graalvm/js/js/20.1.0/js-20.1.0.jar -org/graalvm/js/js-scriptengine/20.1.0/js-scriptengine-20.1.0.jar -org/graalvm/regex/regex/20.1.0/regex-20.1.0.jar -org/graalvm/sdk/graal-sdk/20.1.0/graal-sdk-20.1.0.jar -org/graalvm/truffle/truffle-api/20.1.0/truffle-api-20.1.0.jar +org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar org/jboss/threads/jboss-threads/3.1.0.Final/jboss-threads-3.1.0.Final.jar org/jboss/xnio/xnio-api/3.8.0.Final/xnio-api-3.8.0.Final.jar org/jboss/xnio/xnio-nio/3.8.0.Final/xnio-nio-3.8.0.Final.jar org/jsoup/jsoup/1.9.2/jsoup-1.9.2.jar +org/jspecify/jspecify/0.2.0/jspecify-0.2.0.jar org/msgpack/msgpack/0.6.12/msgpack-0.6.12.jar -org/ow2/asm/asm/7.1/asm-7.1.jar -org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1.jar -org/ow2/asm/asm-commons/7.1/asm-commons-7.1.jar -org/ow2/asm/asm-tree/7.1/asm-tree-7.1.jar -org/ow2/asm/asm-util/7.1/asm-util-7.1.jar +org/ow2/asm/asm/9.4/asm-9.4.jar +org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar org/wildfly/client/wildfly-client-config/1.0.1.Final/wildfly-client-config-1.0.1.Final.jar org/wildfly/common/wildfly-common/1.5.2.Final/wildfly-common-1.5.2.Final.jar prismatic/schema/1.1.7/schema-1.1.7.jar quoin/quoin/0.1.2/quoin-0.1.2.jar reagent/reagent/1.2.0/reagent-1.2.0.jar re-com/re-com/2.8.0/re-com-2.8.0.jar -refactor-nrepl/refactor-nrepl/3.6.0/refactor-nrepl-3.6.0.jar +refactor-nrepl/refactor-nrepl/2.5.0/refactor-nrepl-2.5.0.jar re-frame/re-frame/1.3.0/re-frame-1.3.0.jar re-frisk-remote/re-frisk-remote/1.6.0/re-frisk-remote-1.6.0.jar re-frisk/sente/1.15.0/sente-1.15.0.jar ring-cors/ring-cors/0.1.8/ring-cors-0.1.8.jar -ring/ring-codec/1.1.2/ring-codec-1.1.2.jar -ring/ring-core/1.8.1/ring-core-1.8.1.jar -spec-coerce/spec-coerce/1.0.0-alpha6/spec-coerce-1.0.0-alpha6.jar +ring/ring-codec/1.2.0/ring-codec-1.2.0.jar +ring/ring-core/1.9.6/ring-core-1.9.6.jar status-im/timbre/4.10.0-2-status/timbre-4.10.0-2-status.jar thheller/shadow-client/1.3.3/shadow-client-1.3.3.jar -thheller/shadow-cljs/2.12.0/shadow-cljs-2.12.0-aot.jar -thheller/shadow-cljsjs/0.0.21/shadow-cljsjs-0.0.21.jar -thheller/shadow-undertow/0.1.0/shadow-undertow-0.1.0.jar +thheller/shadow-cljs/2.25.0/shadow-cljs-2.25.0-aot.jar +thheller/shadow-cljsjs/0.0.22/shadow-cljsjs-0.0.22.jar +thheller/shadow-undertow/0.3.1/shadow-undertow-0.3.1.jar thheller/shadow-util/0.7.0/shadow-util-0.7.0.jar +tigris/tigris/0.1.2/tigris-0.1.2.jar viebel/codox-klipse-theme/0.0.1/codox-klipse-theme-0.0.1.jar diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 14876d4d7b2..5acb02d8589 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -11,11 +11,16 @@ [com.cognitect/transit-cljs "0.8.248"] [mvxcvi/alphabase "1.0.0"] [camel-snake-kebab "0.4.3"] + ;; Dev dependencies [refactor-nrepl "2.5.0"] [cider/cider-nrepl "0.25.3"] [cider/piggieback "0.4.1"] [re-frisk-remote "1.6.0"] + + ;; Use the same version specified in the Nix dependency. + [clj-kondo/clj-kondo "2023.09.07"] + ;; We don't use the encore library, but re-frisk requires re-frisk/sente (fork of ;; com.taoensso/sente), which in turn requires encore. We need to bump encore to ;; 3.21.0+ to remove a warning displayed while shadow-cljs starts (commit diff --git a/src/quo2/components/messages/system_message.cljs b/src/quo2/components/messages/system_message.cljs index 71c6e4419b2..bb31f12edb8 100644 --- a/src/quo2/components/messages/system_message.cljs +++ b/src/quo2/components/messages/system_message.cljs @@ -171,7 +171,7 @@ :style {:flex-shrink 1} :size :paragraph-2} pinned-by] - [split-text (i18n/label :pinned-a-message) theme true] + [split-text (i18n/label :t/pinned-a-message) theme true] [sm-timestamp timestamp theme]] (when child child)]]) diff --git a/src/status_im/chat/models/input.cljs b/src/status_im/chat/models/input.cljs index 676f804422e..2afe81ddc6e 100644 --- a/src/status_im/chat/models/input.cljs +++ b/src/status_im/chat/models/input.cljs @@ -6,7 +6,6 @@ [status-im.chat.models.mentions :as mentions] [status-im.chat.models.message :as chat.message] [status-im.chat.models.message-content :as message-content] - [status-im.utils.utils :as utils] [status-im2.constants :as constants] [status-im2.contexts.chat.composer.link-preview.events :as link-preview] [taoensso.timbre :as log] @@ -26,12 +25,6 @@ original)))) ;; effects -(re-frame/reg-fx - :show-cooldown-warning - (fn [_] - (utils/show-popup nil - (i18n/label :cooldown/warning-message) - #()))) (rf/defn set-chat-input-text "Set input text for current-chat. Takes db and input text and cofx diff --git a/src/status_im/ui/components/copyable_text.cljs b/src/status_im/ui/components/copyable_text.cljs index 8f53d8978a6..f66019fb9cf 100644 --- a/src/status_im/ui/components/copyable_text.cljs +++ b/src/status_im/ui/components/copyable_text.cljs @@ -79,7 +79,7 @@ ;; line height specified here because of figma spec :line-height 20 :font-size 14}} - (i18n/label :sharing-copied-to-clipboard)]]]) + (i18n/label :t/sharing-copied-to-clipboard)]]]) (defn copyable-text-view [{:keys [label container-style]} content] diff --git a/src/status_im/ui/screens/mobile_network_settings/sheets.cljs b/src/status_im/ui/screens/mobile_network_settings/sheets.cljs index 8f401812a55..87864329ec5 100644 --- a/src/status_im/ui/screens/mobile_network_settings/sheets.cljs +++ b/src/status_im/ui/screens/mobile_network_settings/sheets.cljs @@ -33,7 +33,7 @@ [react/text {:style styles/go-to-settings :on-press #(re-frame/dispatch [:mobile-network/navigate-to-settings])} - (i18n/label :mobile-network-go-to-settings)]]) + (i18n/label :t/mobile-network-go-to-settings)]]) (views/defview checkbox [] @@ -48,7 +48,7 @@ :on-value-change #(re-frame/dispatch [:mobile-network/remember-choice? %])}] [react/view {:style styles/checkbox-text-container} - [react/text (i18n/label :mobile-network-sheet-remember-choice)]]])) + [react/text (i18n/label :t/mobile-network-sheet-remember-choice)]]])) (defn settings [] @@ -57,9 +57,9 @@ [react/nested-text {:style styles/settings-text :on-press #(re-frame/dispatch [:mobile-network/navigate-to-settings])} - (i18n/label :mobile-network-sheet-configure) + (i18n/label :t/mobile-network-sheet-configure) [{:style styles/settings-link} - (str " " (i18n/label :mobile-network-sheet-settings))]]]) + (str " " (i18n/label :t/mobile-network-sheet-settings))]]]) (defn hide-sheet-and-dispatch [event] diff --git a/src/status_im/ui/screens/screens.cljs b/src/status_im/ui/screens/screens.cljs index 82be0f7398f..688bff28b8e 100644 --- a/src/status_im/ui/screens/screens.cljs +++ b/src/status_im/ui/screens/screens.cljs @@ -663,7 +663,7 @@ :component keycard.pairing/change-pairing-code} {:name :show-all-connections - :options {:topBar {:title {:text (i18n/label :all-connections)}} + :options {:topBar {:title {:text (i18n/label :t/all-connections)}} :insets {:bottom? true :top? true}} :component manage-all-connections/views} diff --git a/src/status_im/ui/screens/wallet/buy_crypto/views.cljs b/src/status_im/ui/screens/wallet/buy_crypto/views.cljs index 0fa3c929c1d..5d9834a528e 100644 --- a/src/status_im/ui/screens/wallet/buy_crypto/views.cljs +++ b/src/status_im/ui/screens/wallet/buy_crypto/views.cljs @@ -58,7 +58,7 @@ (when (seq learn-more-url) [react/touchable-highlight {:on-press #(re-frame/dispatch [:browser.ui/open-url learn-more-url])} [react/view {:padding-vertical 11} - [quo/text {:color :link} (i18n/label :learn-more)]]])]) + [quo/text {:color :link} (i18n/label :t/learn-more)]]])]) (views/defview buy-crypto [] @@ -124,8 +124,8 @@ site-url @webview-ref) :java-script-enabled true - ;; This is to avoid crashes on android devices - ;; due to https://github.com/react-native-webview/react-native-webview/issues/1838 + ;; This is to avoid crashes on android devices due to + ;; https://github.com/react-native-webview/react-native-webview/issues/1838 ;; We can't disable hardware acceleration as we need to use camera :style {:opacity 0.99} :local-storage-enabled true diff --git a/src/status_im/ui/screens/wallet/collectibles/views.cljs b/src/status_im/ui/screens/wallet/collectibles/views.cljs index 85b4e801660..58724e1e4c4 100644 --- a/src/status_im/ui/screens/wallet/collectibles/views.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/views.cljs @@ -162,8 +162,7 @@ (cond fetching? [nft-assets-skeleton num-assets] - ;; OpenSea sometimes doesn't return an asset - ;; This condition handles it + ;; OpenSea sometimes doesn't return an asset. This condition handles it (and (not fetching?) (not (seq assets))) [no-assets-error] @@ -240,7 +239,7 @@ [::multiaccounts.update/toggle-opensea-nfts-visiblity true]) :theme :main :type :primary} - (i18n/label :display-collectibles)]] + (i18n/label :t/display-collectibles)]] [quo/text {:size :small :color :secondary @@ -285,14 +284,10 @@ ;; TODO : Enable txns ;; [quo/list-item {:title (i18n/label :t/wallet-send) - ;; :icon :main-icons/send - ;; :accessibility-label - ;; :nft-send - ;; :theme :accent + ;; :icon :main-icons/send :accessibility-label :nft-send :theme :accent ;; :on-press #()}] - ;; TODO : What to do with share? - ;; Share links or share image? + ;; TODO : What to do with share? Share links or share image? ;; [quo/list-item {:title (i18n/label :t/share) ;; :theme :accent ;; :accessibility-label @@ -307,7 +302,7 @@ (when (is-image? nft) [toastable-highlight-view ;; the last string is an emoji. It might not show up in all editors but its there - {:toast-label (str (i18n/label :profile-picture-updated)) " " "😎"} + {:toast-label (str (i18n/label :t/profile-picture-updated)) " " "😎"} [quo/list-item {:title (i18n/label :t/use-as-profile-picture) :theme :accent diff --git a/src/status_im2/common/biometric/events.cljs b/src/status_im2/common/biometric/events.cljs index 9de9141175b..eb3679b557e 100644 --- a/src/status_im2/common/biometric/events.cljs +++ b/src/status_im2/common/biometric/events.cljs @@ -67,7 +67,7 @@ :imageErrorColor :red :sensorDescription (i18n/label :t/biometric-auth-android-sensor-desc) :sensorErrorDescription (i18n/label :t/biometric-auth-android-sensor-error-desc) - :cancelText (i18n/label :cancel)}))} + :cancelText (i18n/label :t/cancel)}))} options)))) (rf/defn authenticate diff --git a/src/status_im2/contexts/chat/messages/content/audio/view.cljs b/src/status_im2/contexts/chat/messages/content/audio/view.cljs index 4ff95327392..f27cbb07590 100644 --- a/src/status_im2/contexts/chat/messages/content/audio/view.cljs +++ b/src/status_im2/contexts/chat/messages/content/audio/view.cljs @@ -184,7 +184,7 @@ :accessibility-label :audio-error-label :weight :medium :size :paragraph-2} - (i18n/label :error-loading-audio)] + (i18n/label :t/error-loading-audio)] [rn/view {:accessibility-label :audio-message-container :style (style/container)} diff --git a/src/status_im2/contexts/chat/messages/link_preview/view.cljs b/src/status_im2/contexts/chat/messages/link_preview/view.cljs index 36ebc6ba576..3131f448f19 100644 --- a/src/status_im2/contexts/chat/messages/link_preview/view.cljs +++ b/src/status_im2/contexts/chat/messages/link_preview/view.cljs @@ -71,7 +71,7 @@ :on-press #(rf/dispatch [:navigate-to :community {:from-chat true :community-id (:id community)}])} - (i18n/label :view)]])) + (i18n/label :t/view)]])) (defn community-preview-loader [community-link] @@ -149,7 +149,7 @@ [quo/button {:type :grey :on-press #(rf/dispatch [:open-modal :link-preview-settings])} - (i18n/label :enable)] + (i18n/label :t/enable)] [rn/view (style/separator)] [quo/button {:type :grey diff --git a/src/status_im2/contexts/communities/home/view.cljs b/src/status_im2/contexts/communities/home/view.cljs index fcb0338cefe..011d109f83b 100644 --- a/src/status_im2/contexts/communities/home/view.cljs +++ b/src/status_im2/contexts/communities/home/view.cljs @@ -34,11 +34,10 @@ item])) (def tabs-data - [{:id :joined :label (i18n/label :chats/joined) :accessibility-label :joined-tab} + [{:id :joined :label (i18n/label :t/joined) :accessibility-label :joined-tab} {:id :pending :label (i18n/label :t/pending) :accessibility-label :pending-tab} {:id :opened :label (i18n/label :t/opened) :accessibility-label :opened-tab}]) - (defn empty-state-content [theme] {:joined diff --git a/src/status_im2/contexts/communities/overview/utils.cljs b/src/status_im2/contexts/communities/overview/utils.cljs index 476435e7ab5..c760ce7b643 100644 --- a/src/status_im2/contexts/communities/overview/utils.cljs +++ b/src/status_im2/contexts/communities/overview/utils.cljs @@ -12,10 +12,10 @@ (case users-count 0 "" 1 (i18n/label :t/join-one-user {:user (first first-two)}) - 2 (i18n/label :join-two-users + 2 (i18n/label :t/join-two-users {:user1 (first first-two) :user2 (second first-two)}) - (i18n/label :join-more-users + (i18n/label :t/join-more-users {:user1 (first first-two) :user2 (second first-two) :left-count (- users-count 2)})))) diff --git a/src/status_im2/contexts/profile/profiles/view.cljs b/src/status_im2/contexts/profile/profiles/view.cljs index 7825a09ac90..b43f888168e 100644 --- a/src/status_im2/contexts/profile/profiles/view.cljs +++ b/src/status_im2/contexts/profile/profiles/view.cljs @@ -64,8 +64,8 @@ (defn delete-profile-confirmation [key-uid context] [confirmation-drawer/confirmation-drawer - {:title (i18n/label :remove-profile?) - :description (i18n/label :remove-profile-confirm-message) + {:title (i18n/label :t/remove-profile?) + :description (i18n/label :t/remove-profile-confirm-message) :accessibility-label :remove-profile-confirm :context context :button-text (i18n/label :t/remove) @@ -88,7 +88,7 @@ [key-uid context] [quo/action-drawer [[{:icon :i/delete - :label (i18n/label :remove-profile-message) + :label (i18n/label :t/remove-profile-message) :on-press #(show-confirmation key-uid context) :accessibility-label :remove-profile :danger? true}]]]) diff --git a/src/status_im2/contexts/quo_preview/messages/gap.cljs b/src/status_im2/contexts/quo_preview/messages/gap.cljs index 9b64c9780ec..10fffd395d4 100644 --- a/src/status_im2/contexts/quo_preview/messages/gap.cljs +++ b/src/status_im2/contexts/quo_preview/messages/gap.cljs @@ -14,7 +14,7 @@ :timestamp-near "Mar 8 · 22:42" :on-info-button-pressed identity :on-press #(println "fill gaps") - :warning-label (i18n/label :messages-gap-warning)})] + :warning-label (i18n/label :t/messages-gap-warning)})] (fn [] [preview/preview-container {:state state diff --git a/src/status_im2/subs/chat/messages.cljs b/src/status_im2/subs/chat/messages.cljs index deaca5173f1..08aa1f718aa 100644 --- a/src/status_im2/subs/chat/messages.cljs +++ b/src/status_im2/subs/chat/messages.cljs @@ -92,8 +92,8 @@ (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 + (: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))))) @@ -186,7 +186,7 @@ (defn message-text [{:keys [content-type] :as message}] (cond (= content-type constants/content-type-audio) - (i18n/label :audio-message) + (i18n/label :t/audio-message) :else (get-in message [:content :parsed-text]))) diff --git a/src/status_im2/subs/wallet/transactions.cljs b/src/status_im2/subs/wallet/transactions.cljs index e672772b7b5..edceabf4f8e 100644 --- a/src/status_im2/subs/wallet/transactions.cljs +++ b/src/status_im2/subs/wallet/transactions.cljs @@ -42,7 +42,7 @@ (if (= type :inbound) [from :from-contact :to-wallet] [to :to-contact :from-wallet]) - wallet (i18n/label :main-wallet) + wallet (i18n/label :t/main-wallet) contact (get contacts contact-address) {:keys [symbol-display decimals] :as asset} (or token native-currency) @@ -70,11 +70,7 @@ (assoc acc tx-hash (enrich-transaction transaction contacts native-currency))) ;;TODO this doesn't - ;;look good for - ;;performance, we - ;;need to calculate - ;;this only once for - ;;each transaction + ;;look good for performance, we need to calculate this only once for each transaction {} transactions))) @@ -210,12 +206,12 @@ "-") :date (datetime/timestamp->long-date timestamp)} (if (= type :unsigned) - {:block (i18n/label :not-applicable) - :cost (i18n/label :not-applicable) - :gas-limit (i18n/label :not-applicable) - :gas-used (i18n/label :not-applicable) - :nonce (i18n/label :not-applicable) - :hash (i18n/label :not-applicable)} + {:block (i18n/label :t/not-applicable) + :cost (i18n/label :t/not-applicable) + :gas-limit (i18n/label :t/not-applicable) + :gas-used (i18n/label :t/not-applicable) + :nonce (i18n/label :t/not-applicable) + :hash (i18n/label :t/not-applicable)} {:cost (when gas-used (money/wei->str :eth (money/fee-value gas-used gas-price) From 1b348943be0b491f103a1731d4f0ad186d294ed6 Mon Sep 17 00:00:00 2001 From: Jamie Caprani Date: Thu, 12 Oct 2023 13:49:02 +0200 Subject: [PATCH 05/13] Quo2: add tags/ tiny tag component (#17613) Co-authored-by: Rende11 --- .../tags/tiny_tag/component_spec.cljs | 15 +++++++++ src/quo2/components/tags/tiny_tag/style.cljs | 33 +++++++++++++++++++ src/quo2/components/tags/tiny_tag/view.cljs | 17 ++++++++++ src/quo2/core.cljs | 2 ++ src/status_im2/contexts/quo_preview/main.cljs | 3 ++ .../contexts/quo_preview/tags/tiny_tag.cljs | 26 +++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 src/quo2/components/tags/tiny_tag/component_spec.cljs create mode 100644 src/quo2/components/tags/tiny_tag/style.cljs create mode 100644 src/quo2/components/tags/tiny_tag/view.cljs create mode 100644 src/status_im2/contexts/quo_preview/tags/tiny_tag.cljs diff --git a/src/quo2/components/tags/tiny_tag/component_spec.cljs b/src/quo2/components/tags/tiny_tag/component_spec.cljs new file mode 100644 index 00000000000..641e8b4b3e5 --- /dev/null +++ b/src/quo2/components/tags/tiny_tag/component_spec.cljs @@ -0,0 +1,15 @@ +(ns quo2.components.tags.tiny-tag.component-spec + (:require [quo2.components.tags.tiny-tag.view :as tiny-tag] + [test-helpers.component :as h])) + +(h/describe "Tiny tag component test" + (h/test "1,000 SNT render" + (h/render [tiny-tag/view + {:label "1,000 SNT" + :blur? false}]) + (h/is-truthy (h/get-by-text "1,000 SNT"))) + (h/test "2,000 SNT render with blur" + (h/render [tiny-tag/view + {:label "2,000 SNT" + :blur? true}]) + (h/is-truthy (h/get-by-text "2,000 SNT")))) diff --git a/src/quo2/components/tags/tiny_tag/style.cljs b/src/quo2/components/tags/tiny_tag/style.cljs new file mode 100644 index 00000000000..422fcb3d61f --- /dev/null +++ b/src/quo2/components/tags/tiny_tag/style.cljs @@ -0,0 +1,33 @@ +(ns quo2.components.tags.tiny-tag.style + (:require [quo2.foundations.colors :as colors])) + +(defn get-border-color + [blur? theme] + (if blur? + (colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-10 theme) + (colors/theme-colors colors/neutral-20 colors/neutral-80 theme))) + +(defn get-label-color + [blur? theme] + (if blur? + (colors/theme-colors colors/neutral-80-opa-70 colors/white-opa-70 theme) + (colors/theme-colors colors/neutral-50 colors/neutral-40 theme))) + +(def main + {:justify-content :center + :align-items :center + :height 16}) + +(defn inner + [{:keys [blur? theme]}] + {:border-width 1 + :border-radius 6 + :border-color (get-border-color blur? theme) + :justify-content :center + :align-items :center + :padding-left 2 + :padding-right 3}) + +(defn label + [{:keys [blur? theme]}] + {:color (get-label-color blur? theme)}) diff --git a/src/quo2/components/tags/tiny_tag/view.cljs b/src/quo2/components/tags/tiny_tag/view.cljs new file mode 100644 index 00000000000..834b56f9a2b --- /dev/null +++ b/src/quo2/components/tags/tiny_tag/view.cljs @@ -0,0 +1,17 @@ +(ns quo2.components.tags.tiny-tag.view + (:require [quo2.components.markdown.text :as text] + [quo2.theme :as quo.theme] + [quo2.components.tags.tiny-tag.style :as style] + [react-native.core :as rn])) + +(defn- view-internal + [{:keys [label] :as props}] + [rn/view {:style style/main} + [rn/view {:style (style/inner props)} + [text/text + {:style (style/label props) + :weight :medium + :size :label + :align :center} label]]]) + +(def view (quo.theme/with-theme view-internal)) diff --git a/src/quo2/core.cljs b/src/quo2/core.cljs index c6c5378af90..42cda56b2f4 100644 --- a/src/quo2/core.cljs +++ b/src/quo2/core.cljs @@ -127,6 +127,7 @@ quo2.components.tags.status-tags quo2.components.tags.tag quo2.components.tags.tags + quo2.components.tags.tiny-tag.view quo2.components.tags.token-tag quo2.components.text-combinations.view quo2.components.wallet.account-card.view @@ -353,6 +354,7 @@ (def status-tag quo2.components.tags.status-tags/status-tag) (def tag quo2.components.tags.tag/tag) (def tags quo2.components.tags.tags/tags) +(def tiny-tag quo2.components.tags.tiny-tag.view/view) (def token-tag quo2.components.tags.token-tag/tag) ;;;; Text combinations diff --git a/src/status_im2/contexts/quo_preview/main.cljs b/src/status_im2/contexts/quo_preview/main.cljs index 72e95a832e6..e85ffcd4368 100644 --- a/src/status_im2/contexts/quo_preview/main.cljs +++ b/src/status_im2/contexts/quo_preview/main.cljs @@ -146,6 +146,7 @@ [status-im2.contexts.quo-preview.tags.permission-tag :as permission-tag] [status-im2.contexts.quo-preview.tags.status-tags :as status-tags] [status-im2.contexts.quo-preview.tags.tags :as tags] + [status-im2.contexts.quo-preview.tags.tiny-tag :as tiny-tag] [status-im2.contexts.quo-preview.tags.token-tag :as token-tag] [status-im2.contexts.quo-preview.text-combinations.preview :as text-combinations] @@ -420,6 +421,8 @@ :component status-tags/preview-status-tags} {:name :tags :component tags/preview-tags} + {:name :tiny-tag + :component tiny-tag/preview-tiny-tag} {:name :token-tag :component token-tag/preview-token-tag}] :text-combinations [{:name :text-combinations diff --git a/src/status_im2/contexts/quo_preview/tags/tiny_tag.cljs b/src/status_im2/contexts/quo_preview/tags/tiny_tag.cljs new file mode 100644 index 00000000000..b20368b014f --- /dev/null +++ b/src/status_im2/contexts/quo_preview/tags/tiny_tag.cljs @@ -0,0 +1,26 @@ +(ns status-im2.contexts.quo-preview.tags.tiny-tag + (:require [quo2.core :as quo] + [react-native.core :as rn] + [reagent.core :as reagent] + [status-im2.contexts.quo-preview.preview :as preview])) + +(def descriptor + [{:label "Blur?" + :key :blur? + :type :boolean} + {:label "Label" + :key :label + :type :text}]) + +(defn preview-tiny-tag + [] + (let [state (reagent/atom {:blur? false + :label "1,000 SNT"})] + (fn [] + [preview/preview-container + {:state state + :descriptor descriptor + :blur? (:blur? @state) + :show-blur-background? true} + [rn/view {:style {:align-items :center}} + [quo/tiny-tag @state]]]))) From 6f8a7bb15182cbdd578b28430022aedc9e6ab43c Mon Sep 17 00:00:00 2001 From: BalogunofAfrica <45393944+BalogunofAfrica@users.noreply.github.com> Date: Thu, 12 Oct 2023 17:13:04 +0100 Subject: [PATCH 06/13] fix: image preview padding (#17545) * fix: image preview padding * fix: clear icon * fix: revert clear icon color --- .../contexts/chat/composer/images/style.cljs | 20 ++++++++++++++----- .../contexts/chat/composer/images/view.cljs | 14 ++++++++----- .../contexts/chat/composer/style.cljs | 6 +++--- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/status_im2/contexts/chat/composer/images/style.cljs b/src/status_im2/contexts/chat/composer/images/style.cljs index cb5e13e60a3..5f2acbf7562 100644 --- a/src/status_im2/contexts/chat/composer/images/style.cljs +++ b/src/status_im2/contexts/chat/composer/images/style.cljs @@ -6,19 +6,29 @@ :padding-bottom 8 :padding-right 12}) -(def remove-photo-container +(defn remove-photo-container + [theme] + {:width 16 + :height 16 + :border-radius 8 + :background-color (colors/theme-colors colors/white colors/neutral-95 theme) + :position :absolute + :top 5 + :right 9 + :justify-content :center + :align-items :center + }) + +(def remove-photo-inner-container {:width 14 :height 14 :border-radius 7 :background-color colors/neutral-50 - :position :absolute - :top 5 - :right 5 :justify-content :center :align-items :center}) (def small-image {:width 56 :height 56 - :border-radius 8}) + :border-radius 12}) diff --git a/src/status_im2/contexts/chat/composer/images/view.cljs b/src/status_im2/contexts/chat/composer/images/view.cljs index 5e7bc826310..f3814a640c2 100644 --- a/src/status_im2/contexts/chat/composer/images/view.cljs +++ b/src/status_im2/contexts/chat/composer/images/view.cljs @@ -1,6 +1,7 @@ (ns status-im2.contexts.chat.composer.images.view (:require [quo2.core :as quo] [quo2.foundations.colors :as colors] + [quo2.theme :as quo.theme] [react-native.core :as rn] [react-native.gesture :as gesture] [react-native.reanimated :as reanimated] @@ -9,23 +10,25 @@ [status-im2.contexts.chat.composer.constants :as constants])) (defn image - [item] + [item theme] [rn/view style/image-container [rn/image {:source {:uri (:resized-uri (val item))} :style style/small-image}] [rn/touchable-opacity {:on-press #(rf/dispatch [:chat.ui/image-unselected (val item)]) - :style style/remove-photo-container + :style (style/remove-photo-container theme) :hit-slop {:right 5 :left 5 :top 10 :bottom 10}} - [quo/icon :i/close {:color colors/white :size 12}]]]) + [rn/view {:style style/remove-photo-inner-container} + [quo/icon :i/clear {:size 20 :color colors/neutral-50 :color-2 colors/white}]]]]) (defn f-images-list [] - (let [images (rf/sub [:chats/sending-image]) + (let [theme (quo.theme/use-theme-value) + images (rf/sub [:chats/sending-image]) height (reanimated/use-shared-value (if (seq images) constants/images-container-height 0))] (rn/use-effect (fn [] (reanimated/animate height @@ -37,7 +40,8 @@ :z-index 1})} [gesture/flat-list {:key-fn first - :render-fn image + :render-fn (fn [item] + (image item theme)) :data images :content-container-style {:padding-horizontal 20} :horizontal true diff --git a/src/status_im2/contexts/chat/composer/style.cljs b/src/status_im2/contexts/chat/composer/style.cljs index 4e36e258116..26b7e6381ce 100644 --- a/src/status_im2/contexts/chat/composer/style.cljs +++ b/src/status_im2/contexts/chat/composer/style.cljs @@ -54,12 +54,12 @@ [height max-height] (reanimated/apply-animations-to-style {:height height} - {:max-height max-height - :overflow :hidden})) + {:max-height max-height})) (defn input-view [{:keys [recording?]}] - {:z-index 1 + {:overflow :hidden + :z-index 1 :flex 1 :display (if @recording? :none :flex) :min-height constants/input-height}) From edd6b8d62ccaf9032b388955f13910787ecd2b0c Mon Sep 17 00:00:00 2001 From: Brian Sztamfater Date: Thu, 12 Oct 2023 14:59:34 -0300 Subject: [PATCH 07/13] feat: implement address list item component (#17617) Signed-off-by: Brian Sztamfater --- .../avatars/wallet_user_avatar.cljs | 24 ++++--- .../list_items/address/component_spec.cljs | 41 ++++++++++++ .../components/list_items/address/style.cljs | 33 ++++++++++ .../components/list_items/address/view.cljs | 64 +++++++++++++++++++ src/quo2/core.cljs | 2 + .../quo_preview/list_items/address.cljs | 26 ++++++++ src/status_im2/contexts/quo_preview/main.cljs | 3 + 7 files changed, 183 insertions(+), 10 deletions(-) create mode 100644 src/quo2/components/list_items/address/component_spec.cljs create mode 100644 src/quo2/components/list_items/address/style.cljs create mode 100644 src/quo2/components/list_items/address/view.cljs create mode 100644 src/status_im2/contexts/quo_preview/list_items/address.cljs diff --git a/src/quo2/components/avatars/wallet_user_avatar.cljs b/src/quo2/components/avatars/wallet_user_avatar.cljs index 722d597365e..eae352af973 100644 --- a/src/quo2/components/avatars/wallet_user_avatar.cljs +++ b/src/quo2/components/avatars/wallet_user_avatar.cljs @@ -28,21 +28,25 @@ (defn wallet-user-avatar "params, first name, last name, color, size and if it's dark or not!" - [{:keys [f-name l-name customization-color size] - :or {f-name "John" - l-name "Doe" - customization-color :red - size :x-large}}] + [{:keys [f-name l-name customization-color size monospace? uppercase?] + :or {f-name "John" + l-name "Doe" + size :x-large + uppercase? true}}] (let [circle-size (size circle-sizes) small? (= size :small) f-name-initial (-> f-name - string/upper-case + (#(if uppercase? (string/upper-case %) %)) (subs 0 1)) l-name-initial (-> l-name - string/upper-case + (#(if uppercase? (string/upper-case %) %)) (subs 0 1)) - circle-color (colors/custom-color customization-color 50 20) - text-color (colors/custom-color-by-theme customization-color 50 60)] + circle-color (if customization-color + (colors/custom-color customization-color 50 20) + (colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-5)) + text-color (if customization-color + (colors/custom-color-by-theme customization-color 50 60) + (colors/theme-colors colors/neutral-80-opa-70 colors/white-opa-70))] [rn/view {:style {:width circle-size :height circle-size @@ -53,7 +57,7 @@ :background-color circle-color}} [text/text {:size (size font-sizes) - :weight (size font-weights) + :weight (if monospace? :monospace (size font-weights)) :style {:color text-color}} (if small? (str f-name-initial) diff --git a/src/quo2/components/list_items/address/component_spec.cljs b/src/quo2/components/list_items/address/component_spec.cljs new file mode 100644 index 00000000000..b6d0e6fcee2 --- /dev/null +++ b/src/quo2/components/list_items/address/component_spec.cljs @@ -0,0 +1,41 @@ +(ns quo2.components.list-items.address.component-spec + (:require [test-helpers.component :as h] + [quo2.components.list-items.address.view :as address] + [quo2.foundations.colors :as colors])) + +(h/describe "List items: address" + (h/test "default render" + (h/render [address/view]) + (h/is-truthy (h/query-by-label-text :container))) + + (h/test "on-press-in changes state to :pressed" + (h/render [address/view]) + (h/fire-event :on-press-in (h/get-by-label-text :container)) + (h/wait-for #(h/has-style (h/query-by-label-text :container) + {:backgroundColor (colors/custom-color :blue 50 5)}))) + + (h/test "on-press-in changes state to :pressed with blur? enabled" + (h/render [address/view {:blur? true}]) + (h/fire-event :on-press-in (h/get-by-label-text :container)) + (h/wait-for #(h/has-style (h/query-by-label-text :container) + {:backgroundColor colors/white-opa-5}))) + + (h/test "on-press-out changes state to :active" + (h/render [address/view]) + (h/fire-event :on-press-in (h/get-by-label-text :container)) + (h/fire-event :on-press-out (h/get-by-label-text :container)) + (h/wait-for #(h/has-style (h/query-by-label-text :container) + {:backgroundColor (colors/custom-color :blue 50 10)}))) + + (h/test "on-press-out changes state to :active with blur? enabled" + (h/render [address/view {:blur? true}]) + (h/fire-event :on-press-in (h/get-by-label-text :container)) + (h/fire-event :on-press-out (h/get-by-label-text :container)) + (h/wait-for #(h/has-style (h/query-by-label-text :container) + {:backgroundColor colors/white-opa-10}))) + + (h/test "on-press event is called" + (let [on-press (h/mock-fn)] + (h/render [address/view {:on-press on-press}]) + (h/fire-event :on-press (h/get-by-label-text :container)) + (h/was-called on-press)))) diff --git a/src/quo2/components/list_items/address/style.cljs b/src/quo2/components/list_items/address/style.cljs new file mode 100644 index 00000000000..bf5c341be3e --- /dev/null +++ b/src/quo2/components/list_items/address/style.cljs @@ -0,0 +1,33 @@ +(ns quo2.components.list-items.address.style + (:require [quo2.foundations.colors :as colors])) + +(defn- background-color + [state customization-color blur?] + (cond (and (or (= state :pressed) (= state :selected)) (not blur?)) + (colors/custom-color customization-color 50 5) + (and (or (= state :pressed) (= state :selected)) blur?) + colors/white-opa-5 + (and (= state :active) (not blur?)) + (colors/custom-color customization-color 50 10) + (and (= state :active) blur?) + colors/white-opa-10 + (and (= state :pressed) blur?) colors/white-opa-10 + :else :transparent)) + +(defn container + [state customization-color blur?] + {:height 56 + :border-radius 12 + :background-color (background-color state customization-color blur?) + :flex-direction :row + :align-items :center + :padding-horizontal 12 + :padding-vertical 6 + :justify-content :space-between}) + +(def left-container + {:flex-direction :row + :align-items :center}) + +(def account-container + {:margin-left 8}) diff --git a/src/quo2/components/list_items/address/view.cljs b/src/quo2/components/list_items/address/view.cljs new file mode 100644 index 00000000000..032d102fe16 --- /dev/null +++ b/src/quo2/components/list_items/address/view.cljs @@ -0,0 +1,64 @@ +(ns quo2.components.list-items.address.view + (:require [quo2.components.avatars.wallet-user-avatar :as wallet-user-avatar] + [quo2.components.markdown.text :as text] + [quo2.foundations.colors :as colors] + [quo2.theme :as quo.theme] + [react-native.core :as rn] + [quo2.components.list-items.address.style :as style] + [reagent.core :as reagent] + [clojure.string :as string])) + +(defn- left-container + [{:keys [theme address networks blur?]}] + [rn/view {:style style/left-container} + [wallet-user-avatar/wallet-user-avatar + {:size :medium + :f-name "0" + :l-name "x" + :monospace? true + :uppercase? false}] + [rn/view {:style style/account-container} + [text/text {:size :paragraph-1} + (map (fn [network] + ^{:key (str network)} + [text/text + {:size :paragraph-1 + :weight :semi-bold + :style {:color (get colors/networks network)}} (str (subs (name network) 0 3) ":")]) + networks) + [text/text + {:size :paragraph-1 + :weight :monospace + :style {:color (if blur? + colors/white + (colors/theme-colors colors/neutral-100 colors/white theme))}} + (string/replace address "x" "×")]]]]) + +(defn- internal-view + [] + (let [state (reagent/atom :default) + active? (atom false) + timer (atom nil) + on-press-in (fn [] + (when-not (= @state :selected) + (reset! timer (js/setTimeout #(reset! state :pressed) 100))))] + (fn [{:keys [networks address customization-color on-press active-state? blur? theme] + :or {customization-color :blue}}] + (let [on-press-out (fn [] + (let [new-state (if (or (not active-state?) @active?) :default :active)] + (when @timer (js/clearTimeout @timer)) + (reset! timer nil) + (reset! active? (= new-state :active)) + (reset! state new-state)))] + [rn/pressable + {:style (style/container @state customization-color blur?) + :on-press-in on-press-in + :on-press-out on-press-out + :on-press on-press + :accessibility-label :container} + [left-container + {:theme theme + :networks networks + :address address}]])))) + +(def view (quo.theme/with-theme internal-view)) diff --git a/src/quo2/core.cljs b/src/quo2/core.cljs index 42cda56b2f4..62b785c7994 100644 --- a/src/quo2/core.cljs +++ b/src/quo2/core.cljs @@ -67,6 +67,7 @@ quo2.components.links.url-preview.view quo2.components.list-items.account.view quo2.components.list-items.account-list-card.view + quo2.components.list-items.address.view quo2.components.list-items.channel.view quo2.components.list-items.community.view quo2.components.list-items.dapp.view @@ -265,6 +266,7 @@ ;;;; List items (def account-item quo2.components.list-items.account.view/view) (def account-list-card quo2.components.list-items.account-list-card.view/view) +(def address quo2.components.list-items.address.view/view) (def channel quo2.components.list-items.channel.view/view) (def dapp quo2.components.list-items.dapp.view/view) (def menu-item quo2.components.list-items.menu-item/menu-item) diff --git a/src/status_im2/contexts/quo_preview/list_items/address.cljs b/src/status_im2/contexts/quo_preview/list_items/address.cljs new file mode 100644 index 00000000000..d287b5e01e2 --- /dev/null +++ b/src/status_im2/contexts/quo_preview/list_items/address.cljs @@ -0,0 +1,26 @@ +(ns status-im2.contexts.quo-preview.list-items.address + (:require [quo2.core :as quo] + [reagent.core :as reagent] + [status-im2.contexts.quo-preview.preview :as preview])) + +(def descriptor + [{:key :active-state? :type :boolean} + {:key :show-alert-on-press? :type :boolean} + {:key :blur? :type :boolean} + (preview/customization-color-option)]) + +(defn view + [] + (let [state (reagent/atom {:address "0x0ah...78b" + :networks [:ethereum :optimism]})] + (fn [] + [preview/preview-container + {:state state + :descriptor descriptor + :blur? (:blur? @state) + :show-blur-background? true + :blur-dark-only? true} + [quo/address + (merge @state + (when (:show-alert-on-press? @state) + {:on-press #(js/alert "Pressed!")}))]]))) diff --git a/src/status_im2/contexts/quo_preview/main.cljs b/src/status_im2/contexts/quo_preview/main.cljs index e85ffcd4368..3a940a06fab 100644 --- a/src/status_im2/contexts/quo_preview/main.cljs +++ b/src/status_im2/contexts/quo_preview/main.cljs @@ -84,6 +84,7 @@ account-item] [status-im2.contexts.quo-preview.list-items.account-list-card :as account-list-card] + [status-im2.contexts.quo-preview.list-items.address :as address] [status-im2.contexts.quo-preview.list-items.channel :as channel] [status-im2.contexts.quo-preview.list-items.dapp :as dapp] [status-im2.contexts.quo-preview.list-items.preview-lists :as preview-lists] @@ -308,6 +309,8 @@ :component account-item/view} {:name :account-list-card :component account-list-card/view} + {:name :address + :component address/view} {:name :channel :component channel/view} {:name :community-list From ca88de162a27fe3bc3d9ef543433f512798cb6b7 Mon Sep 17 00:00:00 2001 From: flexsurfer Date: Fri, 13 Oct 2023 12:40:50 +0200 Subject: [PATCH 08/13] [#17435] migrate status-im.notifications (#17603) --- src/mocks/js_dependencies.cljs | 6 +- src/native_module/core.cljs | 3 +- src/native_module/push_notifications.cljs | 42 +++ src/react_native/push_notification_ios.cljs | 24 ++ src/status_im/chat/models/loading.cljs | 26 +- src/status_im/communities/core.cljs | 26 +- src/status_im/contact/block.cljs | 25 +- src/status_im/events.cljs | 3 +- src/status_im/multiaccounts/create/core.cljs | 1 - src/status_im/multiaccounts/logout/core.cljs | 14 +- src/status_im/notifications/android.cljs | 37 --- src/status_im/notifications/core.cljs | 313 ------------------ src/status_im/notifications/local.cljs | 150 --------- src/status_im/notifications/wallet.cljs | 83 +++++ src/status_im/signals/core.cljs | 2 +- .../notifications_settings/events.cljs | 55 +++ .../screens/notifications_settings/views.cljs | 122 ++----- src/status_im/ui/screens/screens.cljs | 15 - src/status_im2/contexts/chat/events.cljs | 10 +- .../onboarding/enable_notifications/view.cljs | 3 +- .../contexts/profile/login/events.cljs | 20 +- .../contexts/push_notifications/effects.cljs | 59 ++++ .../contexts/push_notifications/events.cljs | 60 ++++ .../push_notifications/local/effects.cljs | 18 + .../push_notifications/local/events.cljs | 36 ++ src/status_im2/core.cljs | 4 +- src/status_im2/subs/root.cljs | 1 - src/status_im2/subs/wallet/transactions.cljs | 14 +- src/utils/re_frame.cljs | 2 + 29 files changed, 478 insertions(+), 696 deletions(-) create mode 100644 src/native_module/push_notifications.cljs create mode 100644 src/react_native/push_notification_ios.cljs delete mode 100644 src/status_im/notifications/android.cljs delete mode 100644 src/status_im/notifications/core.cljs delete mode 100644 src/status_im/notifications/local.cljs create mode 100644 src/status_im/notifications/wallet.cljs create mode 100644 src/status_im/ui/screens/notifications_settings/events.cljs create mode 100644 src/status_im2/contexts/push_notifications/effects.cljs create mode 100644 src/status_im2/contexts/push_notifications/events.cljs create mode 100644 src/status_im2/contexts/push_notifications/local/effects.cljs create mode 100644 src/status_im2/contexts/push_notifications/local/events.cljs diff --git a/src/mocks/js_dependencies.cljs b/src/mocks/js_dependencies.cljs index 2712704b92f..71ba47bc80a 100644 --- a/src/mocks/js_dependencies.cljs +++ b/src/mocks/js_dependencies.cljs @@ -323,7 +323,11 @@ (def react-native-permissions #js {:default #js {}}) -(def push-notification-ios #js {:default #js {:abandonPermissions identity}}) +(def push-notification-ios + #js + {:default #js + {:abandonPermissions identity + :removeAllDeliveredNotifications identity}}) (def rn-emoji-keyboard #js {:EmojiKeyboard #js {}}) diff --git a/src/native_module/core.cljs b/src/native_module/core.cljs index 855484bed7c..9967a33d2f6 100644 --- a/src/native_module/core.cljs +++ b/src/native_module/core.cljs @@ -3,7 +3,6 @@ [utils.validators :as validators] [taoensso.timbre :as log] [react-native.platform :as platform] - [react-native.core :as rn] [utils.transforms :as types] [clojure.string :as string])) @@ -14,7 +13,7 @@ (defn init [handler] - (.addListener ^js rn/device-event-emitter "gethEvent" #(handler (.-jsonEvent ^js %)))) + (.addListener ^js (.-DeviceEventEmitter ^js react-native) "gethEvent" #(handler (.-jsonEvent ^js %)))) (defn clear-web-data [] diff --git a/src/native_module/push_notifications.cljs b/src/native_module/push_notifications.cljs new file mode 100644 index 00000000000..40ba15dee40 --- /dev/null +++ b/src/native_module/push_notifications.cljs @@ -0,0 +1,42 @@ +(ns native-module.push-notifications + (:require ["react-native" :as react-native] + [taoensso.timbre :as log])) + +(defn push-notification + [] + (when (exists? (.-NativeModules react-native)) + (.-PushNotification ^js (.-NativeModules react-native)))) + +(defn present-local-notification + [opts] + (.presentLocalNotification ^js (push-notification) (clj->js opts))) + +(defn clear-message-notifications + [chat-id] + (.clearMessageNotifications ^js (push-notification) chat-id)) + +(defn clear-all-message-notifications + [] + (.clearAllMessageNotifications ^js (push-notification))) + +(defn create-channel + [{:keys [channel-id channel-name]}] + (.createChannel ^js (push-notification) + #js {:channelId channel-id :channelName channel-name} + #(log/info "Notifications create channel:" %))) + +(defn enable-notifications + [] + (.enableNotifications ^js (push-notification))) + +(defn disable-notifications + [] + (.disableNotifications ^js (push-notification))) + +(defn add-listener + [event callback] + (.addListener ^js (.-DeviceEventEmitter ^js react-native) + event + (fn [^js data] + (when (and data (.-dataJSON data) callback) + (callback (.-dataJSON data)))))) diff --git a/src/react_native/push_notification_ios.cljs b/src/react_native/push_notification_ios.cljs new file mode 100644 index 00000000000..5031592779b --- /dev/null +++ b/src/react_native/push_notification_ios.cljs @@ -0,0 +1,24 @@ +(ns react-native.push-notification-ios + (:require ["@react-native-community/push-notification-ios" :default pn-ios])) + +(defn present-local-notification + [title message user-info] + (.presentLocalNotification ^js pn-ios #js {:alertBody message :alertTitle title :userInfo user-info})) + +(defn add-listener + [event callback] + (.addEventListener ^js pn-ios event callback)) + +(defn request-permissions + [] + (-> (.requestPermissions ^js pn-ios) + (.then #()) + (.catch #()))) + +(defn abandon-permissions + [] + (.abandonPermissions ^js pn-ios)) + +(defn remove-all-delivered-notifications + [] + (.removeAllDeliveredNotifications ^js pn-ios)) diff --git a/src/status_im/chat/models/loading.cljs b/src/status_im/chat/models/loading.cljs index 1995bb0a4b1..edfc2282fb5 100644 --- a/src/status_im/chat/models/loading.cljs +++ b/src/status_im/chat/models/loading.cljs @@ -83,24 +83,26 @@ (rf/defn handle-mark-all-read {:events [:chat.ui/mark-all-read-pressed :chat/mark-all-as-read]} [{db :db} chat-id] - {:db (mark-chat-all-read db chat-id) - :clear-message-notifications [[chat-id] - (get-in db [:profile/profile :remote-push-notifications-enabled?])] - :json-rpc/call [{:method "wakuext_markAllRead" - :params [chat-id] - :on-success #(re-frame/dispatch [::mark-all-read-successful])}]}) + {:db (mark-chat-all-read db chat-id) + :effects/push-notifications-clear-message-notifications [chat-id] + :json-rpc/call [{:method "wakuext_markAllRead" + :params [chat-id] + :on-success + #(re-frame/dispatch + [::mark-all-read-successful])}]}) (rf/defn handle-mark-mark-all-read-in-community {:events [:chat.ui/mark-all-read-in-community-pressed]} [{db :db} community-id] (let [community-chat-ids (map #(str community-id %) (keys (get-in db [:communities community-id :chats])))] - {:clear-message-notifications [community-chat-ids - (get-in db [:profile/profile :remote-push-notifications-enabled?])] - :json-rpc/call [{:method "wakuext_markAllReadInCommunity" - :params [community-id] - :on-success #(re-frame/dispatch - [::mark-all-read-in-community-successful %])}]})) + {:effects/push-notifications-clear-message-notifications community-chat-ids + :json-rpc/call [{:method "wakuext_markAllReadInCommunity" + :params [community-id] + :on-success + #(re-frame/dispatch + [::mark-all-read-in-community-successful + %])}]})) (rf/defn messages-loaded "Loads more messages for current chat" diff --git a/src/status_im/communities/core.cljs b/src/status_im/communities/core.cljs index 09627e3a55d..6f37100690e 100644 --- a/src/status_im/communities/core.cljs +++ b/src/status_im/communities/core.cljs @@ -271,18 +271,20 @@ [{:keys [db]} community-id] (let [community-chat-ids (map #(str community-id %) (keys (get-in db [:communities community-id :chats])))] - {:clear-message-notifications [community-chat-ids - (get-in db [:profile/profile :remote-push-notifications-enabled?])] - :dispatch [:shell/close-switcher-card community-id] - :json-rpc/call [{:method "wakuext_leaveCommunity" - :params [community-id] - :js-response true - :on-success #(re-frame/dispatch [::left %]) - :on-error (fn [response] - (log/error "failed to leave community" - community-id - response) - (re-frame/dispatch [::failed-to-leave]))}]})) + {:effects/push-notifications-clear-message-notifications community-chat-ids + :dispatch [:shell/close-switcher-card community-id] + :json-rpc/call [{:method "wakuext_leaveCommunity" + :params [community-id] + :js-response true + :on-success #(re-frame/dispatch [::left + %]) + :on-error (fn [response] + (log/error + "failed to leave community" + community-id + response) + (re-frame/dispatch + [::failed-to-leave]))}]})) (rf/defn status-tag-pressed {:events [:communities/status-tag-pressed]} diff --git a/src/status_im/contact/block.cljs b/src/status_im/contact/block.cljs index 487b76e5732..4cb4ec6ceb3 100644 --- a/src/status_im/contact/block.cljs +++ b/src/status_im/contact/block.cljs @@ -41,17 +41,20 @@ (map #(->> (chats-store/<-rpc %) (clean-up-chat public-key)) (types/js->clj chats-js)))] - (apply rf/merge - cofx - {:db (-> db - (update :chats dissoc public-key) - (update :chats-home-list disj public-key) - (assoc-in [:contacts/contacts public-key :added?] false)) - :dispatch [:shell/close-switcher-card public-key] - :clear-message-notifications - [[public-key] (get-in db [:profile/profile :remote-push-notifications-enabled?])]} - (activity-center/notifications-fetch-unread-count) - fxs))) + (apply + rf/merge + cofx + {:db (-> + db + (update :chats dissoc public-key) + (update :chats-home-list disj public-key) + (assoc-in [:contacts/contacts public-key + :added?] + false)) + :dispatch [:shell/close-switcher-card public-key] + :effects/push-notifications-clear-message-notifications [public-key]} + (activity-center/notifications-fetch-unread-count) + fxs))) (rf/defn block-contact {:events [:contact.ui/block-contact-confirmed]} diff --git a/src/status_im/events.cljs b/src/status_im/events.cljs index 71c5d42e299..c0e5d7eab2e 100644 --- a/src/status_im/events.cljs +++ b/src/status_im/events.cljs @@ -60,7 +60,8 @@ status-im2.contexts.chat.home.events status-im2.contexts.communities.home.events status-im.ui.components.invite.events - [status-im2.common.biometric.events :as biometric])) + [status-im2.common.biometric.events :as biometric] + status-im.ui.screens.notifications-settings.events)) (re-frame/reg-fx :dismiss-keyboard diff --git a/src/status_im/multiaccounts/create/core.cljs b/src/status_im/multiaccounts/create/core.cljs index 2967824d792..cfabd634aab 100644 --- a/src/status_im/multiaccounts/create/core.cljs +++ b/src/status_im/multiaccounts/create/core.cljs @@ -165,7 +165,6 @@ :dapps-address (:address wallet-account) :latest-derived-path 0 :signing-phrase signing-phrase - :send-push-notifications? true :backup-enabled? true :installation-id (random-guid-generator) ;; default mailserver (history node) setting diff --git a/src/status_im/multiaccounts/logout/core.cljs b/src/status_im/multiaccounts/logout/core.cljs index ed931d7cf18..dcec2f0442f 100644 --- a/src/status_im/multiaccounts/logout/core.cljs +++ b/src/status_im/multiaccounts/logout/core.cljs @@ -2,7 +2,6 @@ (:require [native-module.core :as native-module] [re-frame.core :as re-frame] [status-im.multiaccounts.core :as multiaccounts] - [status-im.notifications.core :as notifications] [status-im.wallet.core :as wallet] [status-im2.common.keychain.events :as keychain] [status-im2.db :as db] @@ -46,14 +45,13 @@ (rf/defn logout {:events [:logout :multiaccounts.logout.ui/logout-confirmed :multiaccounts.update.callback/save-settings-success]} - [cofx] + [_] ;; we need to disable notifications before starting the logout process - (rf/merge cofx - {:dispatch-later [{:ms 100 - :dispatch [::logout-method - {:auth-method keychain/auth-method-none - :logout? true}]}]} - (notifications/logout-disable))) + {:effects/push-notifications-disable nil + :dispatch-later [{:ms 100 + :dispatch [::logout-method + {:auth-method keychain/auth-method-none + :logout? true}]}]}) (rf/defn show-logout-confirmation {:events [:multiaccounts.logout.ui/logout-pressed]} diff --git a/src/status_im/notifications/android.cljs b/src/status_im/notifications/android.cljs deleted file mode 100644 index 6e892465aff..00000000000 --- a/src/status_im/notifications/android.cljs +++ /dev/null @@ -1,37 +0,0 @@ -(ns status-im.notifications.android - (:require ["react-native" :as react-native] - [quo.platform :as platform] - [taoensso.timbre :as log])) - -(defn pn-android - [] - (when platform/android? - (.-PushNotification ^js (.-NativeModules react-native)))) - -(defn present-local-notification - [opts] - (.presentLocalNotification ^js (pn-android) (clj->js opts))) - -(defn clear-message-notifications - [chat-id] - (.clearMessageNotifications ^js (pn-android) chat-id)) - -(defn clear-all-message-notifications - [] - (.clearAllMessageNotifications ^js (pn-android))) - -(defn create-channel - [{:keys [channel-id channel-name]}] - (.createChannel ^js (pn-android) - #js - {:channelId channel-id - :channelName channel-name} - #(log/info "Notifications create channel:" %))) - -(defn enable-notifications - [] - (.enableNotifications ^js (pn-android))) - -(defn disable-notifications - [] - (.disableNotifications ^js (pn-android))) diff --git a/src/status_im/notifications/core.cljs b/src/status_im/notifications/core.cljs deleted file mode 100644 index bc05268d2d6..00000000000 --- a/src/status_im/notifications/core.cljs +++ /dev/null @@ -1,313 +0,0 @@ -(ns status-im.notifications.core - (:require ["@react-native-community/push-notification-ios" :default pn-ios] - [quo.platform :as platform] - [re-frame.core :as re-frame] - [status-im.multiaccounts.update.core :as multiaccounts.update] - [status-im.notifications.android :as pn-android] - [status-im.notifications.local :as local] - [status-im2.config :as config] - [utils.re-frame :as rf] - [taoensso.timbre :as log])) - -(def server-type-default 1) -(def server-type-custom 2) - -(def apn-token-type 1) -(def firebase-token-type 2) -(def listeners-added? (atom nil)) -(defn server<-rpc - [{:keys [type publicKey registered]}] - {:public-key publicKey - :type type - :registered registered}) - -(defn add-event-listeners - [] - (when-not @listeners-added? - (reset! listeners-added? true) - (.addEventListener - ^js pn-ios - "register" - (fn [token] - (re-frame/dispatch [:notifications/registered-for-push-notifications token]))) - (.addEventListener - ^js pn-ios - "registrationError" - (fn [error] - (re-frame/dispatch [:notifications/switch-error true error]))))) - -(defn enable-ios-notifications - [] - (add-event-listeners) - (-> (.requestPermissions ^js pn-ios) - (.then #()) - (.catch #()))) - -(defn disable-ios-notifications - [] - (.abandonPermissions ^js pn-ios) - (re-frame/dispatch [:notifications/unregistered-from-push-notifications])) - -(defn enable-android-notifications - [] - (pn-android/create-channel - {:channel-id "status-im-notifications" - :channel-name "Status push notifications"}) - (pn-android/enable-notifications)) - -(defn disable-android-notifications - [] - (pn-android/disable-notifications)) - -;; FIXME: Repalce with request permission from audio messages PR lib -(re-frame/reg-fx - ::request-permission - identity) - -(rf/defn request-permission - {:events [::request-permission]} - [_] - {::request-permission true}) - -(re-frame/reg-fx - ::local-notification - (fn [props] - (if platform/ios? - (local/local-push-ios props) - (local/local-push-android props)))) - -(re-frame/reg-fx - ::enable - (fn [] - (if platform/android? - (enable-android-notifications) - (enable-ios-notifications)))) - -(re-frame/reg-fx - ::disable - (fn [_] - (if platform/android? - (disable-android-notifications) - (disable-ios-notifications)))) - -(re-frame/reg-fx - ::logout-disable - (fn [_] - (if platform/android? - (pn-android/disable-notifications) - (.abandonPermissions ^js pn-ios)))) - -(re-frame/reg-fx - :clear-message-notifications - (fn [[chat-ids] remote-push-notifications-enabled?] - (if remote-push-notifications-enabled? - (if platform/android? - (pn-android/clear-all-message-notifications) - (.removeAllDeliveredNotifications ^js pn-ios)) - (when platform/android? - (doseq [chat-id chat-ids] - (pn-android/clear-message-notifications chat-id)))))) - -(rf/defn handle-enable-notifications-event - {:events [:notifications/registered-for-push-notifications]} - [cofx token] - {:json-rpc/call [{:method "wakuext_registerForPushNotifications" - :params [token (if platform/ios? config/apn-topic) - (if platform/ios? apn-token-type firebase-token-type)] - :on-success #(log/info "[push-notifications] register-success" %) - :on-error #(re-frame/dispatch [:notifications/switch-error true %])}]}) - -(rf/defn handle-disable-notifications-event - {:events [:notifications/unregistered-from-push-notifications]} - [cofx] - {:json-rpc/call [{:method "wakuext_unregisterFromPushNotifications" - :params [] - :on-success #(log/info "[push-notifications] unregister-success" %) - :on-error #(re-frame/dispatch [:notifications/switch-error false %])}]}) - -(rf/defn logout-disable - [cofx] - (merge {::logout-disable nil} - {:json-rpc/call [{:method "wakuext_unregisterFromPushNotifications" - :params [] - :on-success #(log/info "[push-notifications] unregister-success" %) - :on-error #(log/info "[push-notifications] unregister-error" %)}]})) - -(rf/defn notification-switch-error - {:events [:notifications/switch-error]} - [cofx enabled?] - (multiaccounts.update/multiaccount-update - cofx - :remote-push-notifications-enabled? - (not enabled?) - {})) - -(rf/defn notification-switch - {:events [::switch]} - [{:keys [db] :as cofx} enabled? remote-push-notifications?] - (rf/merge cofx - (if enabled? - {::enable remote-push-notifications?} - {::disable nil}) - (multiaccounts.update/multiaccount-update - :remote-push-notifications-enabled? - (and remote-push-notifications? enabled?) - {}) - (multiaccounts.update/multiaccount-update - :notifications-enabled? - (and (not remote-push-notifications?) enabled?) - {}))) - -(rf/defn notification-non-contacts-error - {:events [::non-contacts-update-error]} - [cofx enabled?] - (multiaccounts.update/optimistic cofx - :push-notifications-from-contacts-only? - (not (boolean enabled?)))) - -(rf/defn notification-block-mentions-error - {:events [::block-mentions-update-error]} - [cofx enabled?] - (multiaccounts.update/optimistic cofx :push-notifications-block-mentions? (not (boolean enabled?)))) - -(rf/defn notification-non-contacts - {:events [::switch-non-contacts]} - [{:keys [db] :as cofx} enabled?] - (let [method (if enabled? - "wakuext_enablePushNotificationsFromContactsOnly" - "wakuext_disablePushNotificationsFromContactsOnly")] - (rf/merge - cofx - {:json-rpc/call [{:method method - :params [] - :on-success #(log/info "[push-notifications] contacts-notification-success" %) - :on-error #(re-frame/dispatch [::non-contacts-update-error enabled? %])}]} - - (multiaccounts.update/optimistic :push-notifications-from-contacts-only? (boolean enabled?))))) - -(rf/defn notification-block-mentions - {:events [::switch-block-mentions]} - [{:keys [db] :as cofx} enabled?] - (let [method (if enabled? - "wakuext_enablePushNotificationsBlockMentions" - "wakuext_disablePushNotificationsBlockMentions")] - (log/info "USING METHOD" method enabled?) - (rf/merge cofx - {:json-rpc/call [{:method method - :params [] - :on-success #(log/info "[push-notifications] block-mentions-success" %) - :on-error #(re-frame/dispatch [::block-mentions-update-error enabled? - %])}]} - - (multiaccounts.update/optimistic :push-notifications-block-mentions? (boolean enabled?))))) - -(rf/defn switch-push-notifications-server-enabled - {:events [::switch-push-notifications-server-enabled]} - [{:keys [db] :as cofx} enabled?] - (let [method (if enabled? - "wakuext_startPushNotificationsServer" - "wakuext_stopPushNotificationsServer")] - (rf/merge - cofx - {:json-rpc/call [{:method method - :params [] - :on-success #(log/info "[push-notifications] switch-server-enabled successful" %) - :on-error #(re-frame/dispatch [::push-notifications-server-update-error - enabled? %])}]} - - (multiaccounts.update/optimistic :push-notifications-server-enabled? (boolean enabled?))))) - -(rf/defn switch-send-notifications - {:events [::switch-send-push-notifications]} - [{:keys [db] :as cofx} enabled?] - (let [method (if enabled? - "wakuext_enableSendingNotifications" - "wakuext_disableSendingNotifications")] - (rf/merge cofx - {:json-rpc/call [{:method method - :params [] - :on-success - #(log/info "[push-notifications] switch-send-notifications successful" - %) - :on-error #(re-frame/dispatch [::push-notifications-send-update-error - enabled? %])}]} - - (multiaccounts.update/optimistic :send-push-notifications? (boolean enabled?))))) - -(rf/defn handle-add-server-error - {:events [::push-notifications-add-server-error]} - [_ public-key error] - (log/error "failed to add server" public-key error)) - -(rf/defn add-server - {:events [::add-server]} - [{:keys [db] :as cofx} public-key] - (rf/merge cofx - {:json-rpc/call [{:method "wakuext_addPushNotificationsServer" - :params [public-key] - :on-success - #(do - (log/info "[push-notifications] switch-send-notifications successful" - %) - (re-frame/dispatch [::fetch-servers])) - :on-error #(re-frame/dispatch [::push-notifications-add-server-error - public-key %])}]})) - -(rf/defn handle-servers-fetched - {:events [::servers-fetched]} - [{:keys [db]} servers] - {:db (assoc db :push-notifications/servers (map server<-rpc servers))}) - -(rf/defn fetch-push-notifications-servers - {:events [::fetch-servers]} - [cofx] - {:json-rpc/call [{:method "wakuext_getPushNotificationsServers" - :params [] - :on-success #(do - (log/info "[push-notifications] servers fetched" %) - (re-frame/dispatch [::servers-fetched %]))}]}) - -;; Wallet transactions - -(rf/defn handle-preferences-load - {:events [::preferences-loaded]} - [{:keys [db]} preferences] - {:db (assoc db :push-notifications/preferences preferences)}) - -(rf/defn load-notification-preferences - {:events [::load-notification-preferences]} - [_] - {:json-rpc/call [{:method "localnotifications_notificationPreferences" - :params [] - :on-success #(re-frame/dispatch [::preferences-loaded %])}]}) - -(defn preference= - [x y] - (and (= (:service x) (:service y)) - (= (:event x) (:event y)) - (= (:identifier x) (:identifier y)))) - -(defn- update-preference - [all new-preference] - (conj (filter (comp not (partial preference= new-preference)) - all) - new-preference)) - -(rf/defn switch-transaction-notifications - {:events [::switch-transaction-notifications]} - [{:keys [db] :as cofx} enabled?] - {:db (update db - :push-notifications/preferences - update-preference - {:enabled (not enabled?) - :service "wallet" - :event "transaction" - :identifier "all"}) - :json-rpc/call [{:method "localnotifications_switchWalletNotifications" - :params [(not enabled?)] - :on-success #(log/info - "[push-notifications] switch-transaction-notifications successful" - %) - :on-error #(log/error - "[push-notifications] switch-transaction-notifications error" - %)}]}) diff --git a/src/status_im/notifications/local.cljs b/src/status_im/notifications/local.cljs deleted file mode 100644 index 8aa31d7d118..00000000000 --- a/src/status_im/notifications/local.cljs +++ /dev/null @@ -1,150 +0,0 @@ -(ns status-im.notifications.local - (:require ["@react-native-community/push-notification-ios" :default pn-ios] - [cljs-bean.core :as bean] - [clojure.string :as string] - [quo.platform :as platform] - [re-frame.core :as re-frame] - [react-native.async-storage :as async-storage] - [status-im.ethereum.decode :as decode] - [status-im.ethereum.tokens :as tokens] - [utils.i18n :as i18n] - [status-im.notifications.android :as pn-android] - [utils.re-frame :as rf] - [utils.money :as money] - [status-im.utils.deprecated-types :as types] - [status-im.utils.utils :as utils] - [react-native.core :as rn])) - -(def default-erc20-token - {:symbol :ERC20 - :decimals 18 - :name "ERC20"}) - -(def notification-event-ios "localNotification") -(def notification-event-android "remoteNotificationReceived") - -(defn local-push-ios - [{:keys [title message user-info body-type]}] - (when (not= body-type "message") - (.presentLocalNotification - pn-ios - #js - {:alertBody message - :alertTitle title - ;; NOTE: Use a special type to hide in Obj-C code other notifications - :userInfo (bean/->js (merge user-info - {:notificationType "local-notification"}))}))) - -(defn local-push-android - [notification] - (pn-android/present-local-notification notification)) - -(defn handle-notification-press - [{{deep-link :deepLink} :userInfo - interaction :userInteraction}] - (async-storage/set-item! (str :chat-id) nil) - (when (and deep-link - (or platform/ios? - (and platform/android? interaction))) - (re-frame/dispatch [:universal-links/handle-url deep-link]))) - -(defn listen-notifications - [] - (if platform/ios? - (.addEventListener ^js pn-ios - notification-event-ios - (fn [notification] - (handle-notification-press {:userInfo (bean/bean (.getData ^js - notification))}))) - (.addListener ^js rn/device-event-emitter - notification-event-android - (fn [^js data] - (when (and data (.-dataJSON data)) - (handle-notification-press (types/json->clj (.-dataJSON data)))))))) - -(defn create-transfer-notification - [{db :db} - {{:keys [state from to fromAccount toAccount value erc20 contract network]} - :body - :as notification}] - (let [token (if erc20 - (get-in db - [:wallet/all-tokens (string/lower-case contract)] - default-erc20-token) - (tokens/native-currency network)) - amount (money/wei->ether (decode/uint value)) - to (or (:name toAccount) (utils/get-shortened-address to)) - from (or (:name fromAccount) (utils/get-shortened-address from)) - title (case state - "inbound" (i18n/label :t/push-inbound-transaction - {:value amount - :currency (:symbol token)}) - "outbound" (i18n/label :t/push-outbound-transaction - {:value amount - :currency (:symbol token)}) - "failed" (i18n/label :t/push-failed-transaction - {:value amount - :currency (:symbol token)}) - nil) - description (case state - "inbound" (i18n/label :t/push-inbound-transaction-body - {:from from - :to to}) - "outbound" (i18n/label :t/push-outbound-transaction-body - {:from from - :to to}) - "failed" (i18n/label :t/push-failed-transaction-body - {:value amount - :currency (:symbol token) - :to to}) - nil)] - {:title title - :icon (get-in token [:icon :source]) - :deepLink (:deepLink notification) - :user-info notification - :message description})) - -(defn foreground-chat? - [{{:keys [current-chat-id view-id]} :db} chat-id] - (and (= current-chat-id chat-id) - (= view-id :chat))) - -(defn show-message-pn? - [{{:keys [app-state profile/profile]} :db :as cofx} - notification] - (let [chat-id (get-in notification [:body :chat :id]) - notification-author (get-in notification [:notificationAuthor :id])] - (and - (not= notification-author (:public-key profile)) - (or (= app-state "background") - (not (foreground-chat? cofx chat-id)))))) - -(defn create-notification - ([notification] - (create-notification nil notification)) - ([cofx {:keys [bodyType] :as notification}] - (assoc - (case bodyType - "message" (when (show-message-pn? cofx notification) notification) - "transaction" (create-transfer-notification cofx notification) - nil) - :body-type - bodyType))) - -(re-frame/reg-fx - ::local-push-ios - (fn [evt] - (-> evt create-notification local-push-ios))) - -(rf/defn local-notification-android - {:events [::local-notification-android]} - [cofx event] - (some->> event - (create-notification cofx) - local-push-android)) - -(rf/defn process - [cofx evt] - (if platform/ios? - {::local-push-ios evt} - (local-notification-android cofx evt))) diff --git a/src/status_im/notifications/wallet.cljs b/src/status_im/notifications/wallet.cljs new file mode 100644 index 00000000000..d629751d61f --- /dev/null +++ b/src/status_im/notifications/wallet.cljs @@ -0,0 +1,83 @@ +(ns status-im.notifications.wallet + (:require [utils.re-frame :as rf] + [taoensso.timbre :as log] + [clojure.string :as string] + [status-im.ethereum.tokens :as tokens] + [utils.money :as money] + [status-im.ethereum.decode :as decode] + [status-im.utils.utils :as utils] + [utils.i18n :as i18n])) + +(def default-erc20-token + {:symbol :ERC20 + :decimals 18 + :name "ERC20"}) + +(defn preference= + [x y] + (and (= (:service x) (:service y)) + (= (:event x) (:event y)) + (= (:identifier x) (:identifier y)))) + +(defn- update-preference + [all new-preference] + (conj (filter (comp not (partial preference= new-preference)) + all) + new-preference)) + +(rf/defn switch-transaction-notifications + {:events [:push-notifications.wallet/switch-transactions]} + [{:keys [db]} enabled?] + {:db (update db + :push-notifications/preferences + update-preference + {:enabled? enabled? + :service "wallet" + :event "transaction" + :identifier "all"}) + :json-rpc/call [{:method "localnotifications_switchWalletNotifications" + :params [enabled?] + :on-success #(log/info "[push-notifications] switch-transaction successful" %) + :on-error #(log/error "[push-notifications] switch-transaction error" %)}]}) + +(defn create-transfer-notification + [{db :db} + {{:keys [state from to fromAccount toAccount value erc20 contract network]} + :body + :as notification}] + (let [token (if erc20 + (get-in db + [:wallet/all-tokens (string/lower-case contract)] + default-erc20-token) + (tokens/native-currency network)) + amount (money/wei->ether (decode/uint value)) + to (or (:name toAccount) (utils/get-shortened-address to)) + from (or (:name fromAccount) (utils/get-shortened-address from)) + title (case state + "inbound" (i18n/label :t/push-inbound-transaction + {:value amount + :currency (:symbol token)}) + "outbound" (i18n/label :t/push-outbound-transaction + {:value amount + :currency (:symbol token)}) + "failed" (i18n/label :t/push-failed-transaction + {:value amount + :currency (:symbol token)}) + nil) + description (case state + "inbound" (i18n/label :t/push-inbound-transaction-body + {:from from + :to to}) + "outbound" (i18n/label :t/push-outbound-transaction-body + {:from from + :to to}) + "failed" (i18n/label :t/push-failed-transaction-body + {:value amount + :currency (:symbol token) + :to to}) + nil)] + {:title title + :icon (get-in token [:icon :source]) + :deepLink (:deepLink notification) + :user-info notification + :message description})) diff --git a/src/status_im/signals/core.cljs b/src/status_im/signals/core.cljs index fe62586a2a7..ff080b02fc0 100644 --- a/src/status_im/signals/core.cljs +++ b/src/status_im/signals/core.cljs @@ -2,7 +2,7 @@ (:require [status-im.chat.models.message :as models.message] [status-im.ethereum.subscriptions :as ethereum.subscriptions] [status-im.mailserver.core :as mailserver] - [status-im.notifications.local :as local-notifications] + [status-im2.contexts.push-notifications.local.events :as local-notifications] [status-im.transport.message.core :as transport.message] [status-im.visibility-status-updates.core :as visibility-status-updates] [utils.re-frame :as rf] diff --git a/src/status_im/ui/screens/notifications_settings/events.cljs b/src/status_im/ui/screens/notifications_settings/events.cljs new file mode 100644 index 00000000000..5add06a57c0 --- /dev/null +++ b/src/status_im/ui/screens/notifications_settings/events.cljs @@ -0,0 +1,55 @@ +(ns status-im.ui.screens.notifications-settings.events + (:require [status-im.multiaccounts.update.core :as multiaccounts.update] + [utils.re-frame :as rf] + [taoensso.timbre :as log])) + +(rf/defn notification-non-contacts-error + {:events [:push-notifications/non-contacts-update-error]} + [cofx enabled?] + (multiaccounts.update/optimistic cofx + :push-notifications-from-contacts-only? + (not (boolean enabled?)))) + +(rf/defn notification-block-mentions-error + {:events [:push-notifications/block-mentions-update-error]} + [cofx enabled?] + (multiaccounts.update/optimistic cofx :push-notifications-block-mentions? (not (boolean enabled?)))) + +(rf/defn notification-non-contacts + {:events [:push-notifications/switch-non-contacts]} + [{:keys [db] :as cofx} enabled?] + (let [method (if enabled? + "wakuext_enablePushNotificationsFromContactsOnly" + "wakuext_disablePushNotificationsFromContactsOnly")] + (rf/merge + cofx + {:json-rpc/call [{:method method + :params [] + :on-success #(log/info "[push-notifications] contacts-notification-success" %) + :on-error #(log/info "[push-notifications] contacts-notification-error" %)}]} + (multiaccounts.update/optimistic :push-notifications-from-contacts-only? (boolean enabled?))))) + +(rf/defn notification-block-mentions + {:events [:push-notifications/switch-block-mentions]} + [{:keys [db] :as cofx} enabled?] + (let [method (if enabled? + "wakuext_enablePushNotificationsBlockMentions" + "wakuext_disablePushNotificationsBlockMentions")] + (rf/merge cofx + {:json-rpc/call [{:method method + :params [] + :on-success #(log/info "[push-notifications] block-mentions-success" %) + :on-error #(rf/dispatch + [:push-notifications/block-mentions-update-error enabled? + %])}]} + + (multiaccounts.update/optimistic :push-notifications-block-mentions? (boolean enabled?))))) + +(rf/defn notification-switch + {:events [:push-notifications/switch]} + [{:keys [db] :as cofx} enabled?] + (rf/merge cofx + (if enabled? + {:effects/push-notifications-enable nil} + {:effects/push-notifications-disable nil}) + (multiaccounts.update/multiaccount-update :notifications-enabled? enabled? {}))) diff --git a/src/status_im/ui/screens/notifications_settings/views.cljs b/src/status_im/ui/screens/notifications_settings/views.cljs index e02c79f5169..3b500b3dacf 100644 --- a/src/status_im/ui/screens/notifications_settings/views.cljs +++ b/src/status_im/ui/screens/notifications_settings/views.cljs @@ -1,19 +1,15 @@ (ns status-im.ui.screens.notifications-settings.views - (:require-macros [status-im.utils.views :refer [defview letsubs]]) (:require [quo.core :as quo] [quo.design-system.colors :as quo-colors] [quo.platform :as platform] - [re-frame.core :as re-frame] - [reagent.core :as reagent] [utils.i18n :as i18n] - [status-im.notifications.core :as notifications] - [status-im.ui.components.react :as react])) - -(defonce server (reagent/atom "")) + [status-im.ui.components.react :as react] + [utils.re-frame :as rf])) (defn local-notifications [] - (let [{:keys [enabled]} @(re-frame/subscribe [:notifications/wallet-transactions])] + (let [{:keys [enabled?]} (rf/sub [:push-notifications/wallet-transactions]) + {:keys [notifications-enabled?]} (rf/sub [:profile/profile])] [:<> [quo/separator {:color (:ui-02 @quo-colors/theme) @@ -23,25 +19,24 @@ {:size :small :title (i18n/label :t/notifications-transactions) :accessibility-label :notifications-button - :active enabled - :on-press #(re-frame/dispatch - [::notifications/switch-transaction-notifications enabled]) + :active (and notifications-enabled? enabled?) + :on-press #(rf/dispatch [:push-notifications.wallet/switch-transactions + (not enabled?)]) :accessory :switch}]])) (defn notifications-settings-ios [] - (let [{:keys [remote-push-notifications-enabled? + (let [{:keys [notifications-enabled? push-notifications-block-mentions? push-notifications-from-contacts-only?]} - @(re-frame/subscribe [:profile/profile])] + (rf/sub [:profile/profile])] [:<> [quo/list-item {:size :small :title (i18n/label :t/show-notifications) :accessibility-label :notifications-button - :active remote-push-notifications-enabled? - :on-press #(re-frame/dispatch [::notifications/switch - (not remote-push-notifications-enabled?) true]) + :active notifications-enabled? + :on-press #(rf/dispatch [:push-notifications/switch (not notifications-enabled?)]) :accessory :switch}] [quo/separator {:color (:ui-02 @quo-colors/theme) @@ -51,35 +46,34 @@ {:size :small :title (i18n/label :t/notifications-non-contacts) :accessibility-label :notifications-button - :active (and remote-push-notifications-enabled? + :active (and notifications-enabled? (not push-notifications-from-contacts-only?)) - :on-press #(re-frame/dispatch - [::notifications/switch-non-contacts + :on-press #(rf/dispatch + [:push-notifications/switch-non-contacts (not push-notifications-from-contacts-only?)]) :accessory :switch}] [quo/list-item {:size :small :title (i18n/label :t/allow-mention-notifications) :accessibility-label :notifications-button - :active (and remote-push-notifications-enabled? + :active (and notifications-enabled? (not push-notifications-block-mentions?)) - :on-press #(re-frame/dispatch - [::notifications/switch-block-mentions + :on-press #(rf/dispatch + [:push-notifications/switch-block-mentions (not push-notifications-block-mentions?)]) :accessory :switch}] [local-notifications]])) (defn notifications-settings-android [] - (let [{:keys [notifications-enabled?]} @(re-frame/subscribe [:profile/profile])] + (let [{:keys [notifications-enabled?]} (rf/sub [:profile/profile])] [:<> [quo/list-item {:title (i18n/label :t/local-notifications) :accessibility-label :local-notifications-settings-button :subtitle (i18n/label :t/local-notifications-subtitle) :active notifications-enabled? - :on-press #(re-frame/dispatch - [::notifications/switch (not notifications-enabled?) false]) + :on-press #(rf/dispatch [:push-notifications/switch (not notifications-enabled?)]) :accessory :switch}] [local-notifications]])) @@ -91,81 +85,3 @@ (if platform/ios? [notifications-settings-ios] [notifications-settings-android])]) - -(defn notifications-advanced-settings - [] - (let [{:keys [remote-push-notifications-enabled? - send-push-notifications? - push-notifications-server-enabled?]} - @(re-frame/subscribe [:profile/profile])] - [react/scroll-view - {:style {:flex 1} - :content-container-style {:padding-vertical 8}} - [quo/list-item - {:size :small - :title (i18n/label :t/send-push-notifications) - :accessibility-label :send-push-notifications-button - :active send-push-notifications? - :on-press #(re-frame/dispatch - [::notifications/switch-send-push-notifications - (not send-push-notifications?)]) - :accessory :switch}] - [quo/list-footer - (i18n/label :t/send-push-notifications-description)] - [quo/separator {:style {:margin-vertical 8}}] - [quo/list-item - {:size :small - :title (i18n/label :t/push-notifications-server-enabled) - :accessibility-label :send-push-notifications-button - :active (and remote-push-notifications-enabled? - push-notifications-server-enabled?) - :on-press #(re-frame/dispatch - [::notifications/switch-push-notifications-server-enabled - (not push-notifications-server-enabled?)]) - :accessory :switch}] - [quo/list-item - {:size :small - :title (i18n/label :t/push-notifications-servers) - :accessibility-label :send-push-notifications-button - :chevron true - :on-press #(re-frame/dispatch - [:navigate-to :notifications-servers])}]])) - -(defn server-view - [{:keys [public-key type registered]}] - [quo/list-item - {:size :small - :title (str (subs public-key 0 8) - " " - (if (= type notifications/server-type-custom) - (i18n/label :t/custom) - (i18n/label :t/default)) - " " - (if registered - (i18n/label :t/registered) - (i18n/label :t/not-registered)))}]) - -(defview notifications-servers - [] - (letsubs [servers [:push-notifications/servers]] - {:component-did-mount #(re-frame/dispatch [::notifications/fetch-servers])} - [react/scroll-view - {:style {:flex 1} - :content-container-style {:padding-vertical 8}} - (map server-view servers) - [react/keyboard-avoiding-view {} - [react/view {:style {:padding-horizontal 20}} - [quo/text-input - {:label (i18n/label :t/server) - :placeholder (i18n/label :t/specify-server-public-key) - :value @server - :on-change-text #(reset! server %) - :auto-focus true}]] - [quo/button - {:type :secondary - :after :main-icon/next - :disabled (empty? @server) - :on-press #(do - (re-frame/dispatch [::notifications/add-server @server]) - (reset! server ""))} - (i18n/label :t/save)]]])) diff --git a/src/status_im/ui/screens/screens.cljs b/src/status_im/ui/screens/screens.cljs index 688bff28b8e..9a9a0525e87 100644 --- a/src/status_im/ui/screens/screens.cljs +++ b/src/status_im/ui/screens/screens.cljs @@ -312,10 +312,6 @@ :options {:topBar {:title {:text (i18n/label :t/notification-settings)}} :insets {:top? true}} :component notifications-settings/notifications-settings} - {:name :notifications-servers - :options {:topBar {:title {:text (i18n/label :t/notifications-servers)}} - :insets {:top? true}} - :component notifications-settings/notifications-servers} {:name :sync-settings :options {:topBar {:title {:text (i18n/label :t/sync-settings)}} :insets {:top? true}} @@ -475,17 +471,6 @@ :top? true}} :component notifications-settings/notifications-settings} - ;;TODO WHY MODAL? - ;[Profile] Notifications Advanced settings - {:name :notifications-advanced-settings - :options {:topBar {:title {:text (i18n/label :t/notification-settings)}} - :popGesture false - :hardwareBackButton {:dismissModalOnPress false - :popStackOnPress false} - :insets {:bottom? true - :top? true}} - :component notifications-settings/notifications-advanced-settings} - ;[Wallet] Prepare Transaction {:name :prepare-send-transaction :on-dissmiss [:wallet/cancel-transaction-command] diff --git a/src/status_im2/contexts/chat/events.cljs b/src/status_im2/contexts/chat/events.cljs index 0cf31d7c46d..d87e26e04ab 100644 --- a/src/status_im2/contexts/chat/events.cljs +++ b/src/status_im2/contexts/chat/events.cljs @@ -109,9 +109,7 @@ (update :chats #(apply dissoc % removed-chats)) (update :chats-home-list set/difference removed-chats)) :fx [(when (not-empty removed-chats) - [:clear-message-notifications - [removed-chats - (get-in db [:profile/profile :remote-push-notifications-enabled?])]]) + [:effects/push-notifications-clear-message-notifications removed-chats]) [:dispatch [:chat/leave-removed-chat]]]})) (re-frame/reg-event-fx :chat/ensure-chats ensure-chats) @@ -286,9 +284,9 @@ {:events [:chat.ui/remove-chat]} [{:keys [db now] :as cofx} chat-id] (rf/merge cofx - {:clear-message-notifications - [[chat-id] (get-in db [:profile/profile :remote-push-notifications-enabled?])] - :dispatch [:shell/close-switcher-card chat-id]} + {:effects/push-notifications-clear-message-notifications [chat-id] + :dispatch [:shell/close-switcher-card + chat-id]} (deactivate-chat chat-id) (offload-messages chat-id))) diff --git a/src/status_im2/contexts/onboarding/enable_notifications/view.cljs b/src/status_im2/contexts/onboarding/enable_notifications/view.cljs index b59324d7755..ad960b281c6 100644 --- a/src/status_im2/contexts/onboarding/enable_notifications/view.cljs +++ b/src/status_im2/contexts/onboarding/enable_notifications/view.cljs @@ -3,7 +3,6 @@ [react-native.core :as rn] [react-native.platform :as platform] [react-native.safe-area :as safe-area] - [status-im.notifications.core :as notifications] [status-im2.contexts.onboarding.enable-notifications.style :as style] [status-im2.contexts.shell.jump-to.utils :as shell.utils] [utils.i18n :as i18n] @@ -25,7 +24,7 @@ [quo/button {:on-press (fn [] (shell.utils/change-selected-stack-id :communities-stack true nil) - (rf/dispatch [::notifications/switch true platform/ios?]) + (rf/dispatch [:push-notifications/switch true platform/ios?]) (rf/dispatch [:navigate-to-within-stack [:welcome :enable-notifications]])) :type :primary diff --git a/src/status_im2/contexts/profile/login/events.cljs b/src/status_im2/contexts/profile/login/events.cljs index 86b3cfddb69..849db5819ed 100644 --- a/src/status_im2/contexts/profile/login/events.cljs +++ b/src/status_im2/contexts/profile/login/events.cljs @@ -9,7 +9,6 @@ [status-im2.common.biometric.events :as biometric] [status-im2.contexts.profile.config :as profile.config] [taoensso.timbre :as log] - [status-im.notifications.core :as notifications] [status-im2.config :as config] [status-im.data-store.settings :as data-store.settings] [status-im.communities.core :as communities] @@ -25,7 +24,8 @@ [status-im.data-store.visibility-status-updates :as visibility-status-updates-store] [status-im.data-store.switcher-cards :as switcher-cards-store] [status-im.browser.core :as browser] - [status-im.group-chats.core :as group-chats])) + [status-im.group-chats.core :as group-chats] + [status-im2.contexts.push-notifications.events :as notifications])) (re-frame/reg-fx ::login @@ -77,7 +77,7 @@ :networks/current-network current-network :networks/networks (merge networks config/default-networks-by-id) :profile/profile (merge profile settings))} - (notifications/load-notification-preferences) + (notifications/load-preferences) (data-store.chats/fetch-chats-preview {:on-success #(do (re-frame/dispatch [:chats-list/load-success %]) @@ -98,12 +98,10 @@ {:events [:profile.login/get-chats-callback]} [{:keys [db] :as cofx}] (let [{:networks/keys [current-network networks]} db - notifications-enabled? (get-in db [:profile/profile :notifications-enabled?]) - current-network-config (get networks current-network) - network-id (str (get-in networks - [current-network :config :NetworkId])) - remote-push-notifications-enabled? - (get-in db [:profile/profile :remote-push-notifications-enabled?])] + {:keys [notifications-enabled?]} (:profile/profile db) + current-network-config (get networks current-network) + network-id (str (get-in networks + [current-network :config :NetworkId]))] (rf/merge cofx (cond-> {:wallet/initialize-transactions-management-enabled nil :wallet/initialize-wallet @@ -114,8 +112,8 @@ accounts tokens custom-tokens favourites]))] :check-eip1559-activation {:network-id network-id} :chat/open-last-chat (get-in db [:profile/profile :key-uid])} - (or notifications-enabled? remote-push-notifications-enabled?) - (assoc ::notifications/enable remote-push-notifications-enabled?)) + notifications-enabled? + (assoc :effects/push-notifications-enable nil)) (transport/start-messenger) (contacts/initialize-contacts) (browser/initialize-browser) diff --git a/src/status_im2/contexts/push_notifications/effects.cljs b/src/status_im2/contexts/push_notifications/effects.cljs new file mode 100644 index 00000000000..e0c026892bf --- /dev/null +++ b/src/status_im2/contexts/push_notifications/effects.cljs @@ -0,0 +1,59 @@ +(ns status-im2.contexts.push-notifications.effects + (:require [react-native.push-notification-ios :as pn-ios] + [utils.re-frame :as rf] + [native-module.push-notifications :as native-module.pn] + [react-native.platform :as platform])) + +(def ios-listeners-added? (atom nil)) + +(defn enable-ios-notifications + [] + (when-not @ios-listeners-added? + (reset! ios-listeners-added? true) + (pn-ios/add-listener + "register" + (fn [token] + (rf/dispatch [:push-notifications/registered-for-push-notifications token]))) + (pn-ios/add-listener + "registrationError" + (fn [error] + (rf/dispatch [:push-notifications/switch-error true error])))) + (pn-ios/request-permissions)) + +(defn disable-ios-notifications + [] + (pn-ios/abandon-permissions) + (rf/dispatch [:push-notifications/unregistered-from-push-notifications])) + +(defn enable-android-notifications + [] + (native-module.pn/create-channel + {:channel-id "status-im-notifications" + :channel-name "Status push notifications"}) + (native-module.pn/enable-notifications)) + +(defn disable-android-notifications + [] + (native-module.pn/disable-notifications)) + +(rf/reg-fx + :effects/push-notifications-enable + (fn [] + (if platform/android? + (enable-android-notifications) + (enable-ios-notifications)))) + +(rf/reg-fx + :effects/push-notifications-disable + (fn [] + (if platform/android? + (disable-android-notifications) + (disable-ios-notifications)))) + +(rf/reg-fx + :effects/push-notifications-clear-message-notifications + (fn [chat-ids] + (if platform/android? + (doseq [chat-id chat-ids] + (native-module.pn/clear-message-notifications chat-id)) + (pn-ios/remove-all-delivered-notifications)))) diff --git a/src/status_im2/contexts/push_notifications/events.cljs b/src/status_im2/contexts/push_notifications/events.cljs new file mode 100644 index 00000000000..8564602f97d --- /dev/null +++ b/src/status_im2/contexts/push_notifications/events.cljs @@ -0,0 +1,60 @@ +(ns status-im2.contexts.push-notifications.events + (:require [react-native.push-notification-ios :as pn-ios] + [native-module.push-notifications :as native-module.pn] + [status-im2.config :as config] + [utils.re-frame :as rf] + [taoensso.timbre :as log] + [react-native.platform :as platform] + [react-native.async-storage :as async-storage] + [utils.transforms :as transforms] + [cljs-bean.core :as bean] + status-im2.contexts.push-notifications.effects)) + +(def server-type-default 1) +(def server-type-custom 2) + +(def apn-token-type 1) +(def firebase-token-type 2) + +(defn handle-notification-press + [{{deep-link :deepLink} :userInfo + interaction :userInteraction}] + (async-storage/set-item! (str :chat-id) nil) + (when (and deep-link (or platform/ios? (and platform/android? interaction))) + (rf/dispatch [:universal-links/handle-url deep-link]))) + +(defn listen-notifications + [] + (if platform/ios? + (pn-ios/add-listener "localNotification" + #(handle-notification-press {:userInfo (bean/bean (.getData ^js %))})) + (native-module.pn/add-listener "remoteNotificationReceived" + #(handle-notification-press (transforms/json->clj %))))) + +(rf/defn handle-enable-notifications-event + {:events [:push-notifications/registered-for-push-notifications]} + [_ token] + {:json-rpc/call [{:method "wakuext_registerForPushNotifications" + :params [token (if platform/ios? config/apn-topic) + (if platform/ios? apn-token-type firebase-token-type)] + :on-success #(log/info "[push-notifications] register-success" %) + :on-error #(log/info "[push-notifications] register-error" %)}]}) + +(rf/defn handle-disable-notifications-event + {:events [:push-notifications/unregistered-from-push-notifications]} + [_] + {:json-rpc/call [{:method "wakuext_unregisterFromPushNotifications" + :params [] + :on-success #(log/info "[push-notifications] unregister-success" %) + :on-error #(log/info "[push-notifications] unregister-error" %)}]}) + +(rf/defn handle-preferences-load + {:events [:push-notifications/preferences-loaded]} + [{:keys [db]} preferences] + {:db (assoc db :push-notifications/preferences preferences)}) + +(rf/defn load-preferences + [_] + {:json-rpc/call [{:method "localnotifications_notificationPreferences" + :params [] + :on-success #(rf/dispatch [:push-notifications/preferences-loaded %])}]}) diff --git a/src/status_im2/contexts/push_notifications/local/effects.cljs b/src/status_im2/contexts/push_notifications/local/effects.cljs new file mode 100644 index 00000000000..aa1b0dd60c2 --- /dev/null +++ b/src/status_im2/contexts/push_notifications/local/effects.cljs @@ -0,0 +1,18 @@ +(ns status-im2.contexts.push-notifications.local.effects + (:require [react-native.push-notification-ios :as pn-ios] + [cljs-bean.core :as bean] + [native-module.push-notifications :as native-module.pn] + [utils.re-frame :as rf])) + +(rf/reg-fx :effects/push-notifications-local-present-ios + (fn [{:keys [title message user-info body-type]}] + (when (not= body-type "message") + (pn-ios/present-local-notification title + message + (bean/->js (merge user-info + {:notificationType + "local-notification"})))))) + +(rf/reg-fx :effects/push-notifications-local-present-android + (fn [notification] + (native-module.pn/present-local-notification notification))) diff --git a/src/status_im2/contexts/push_notifications/local/events.cljs b/src/status_im2/contexts/push_notifications/local/events.cljs new file mode 100644 index 00000000000..5ed3fb3a616 --- /dev/null +++ b/src/status_im2/contexts/push_notifications/local/events.cljs @@ -0,0 +1,36 @@ +(ns status-im2.contexts.push-notifications.local.events + (:require [quo.platform :as platform] + [utils.re-frame :as rf] + [status-im.notifications.wallet :as notifications.wallet] + status-im2.contexts.push-notifications.local.effects)) + +(defn foreground-chat? + [{{:keys [current-chat-id view-id]} :db} chat-id] + (and (= current-chat-id chat-id) + (= view-id :chat))) + +(defn show-message-pn? + [{{:keys [app-state profile/profile]} :db :as cofx} + notification] + (let [chat-id (get-in notification [:body :chat :id]) + notification-author (get-in notification [:notificationAuthor :id])] + (and + (not= notification-author (:public-key profile)) + (or (= app-state "background") + (not (foreground-chat? cofx chat-id)))))) + +(defn create-notification + [cofx {:keys [bodyType] :as notification}] + (assoc + (case bodyType + "message" (when (show-message-pn? cofx notification) notification) + "transaction" (notifications.wallet/create-transfer-notification cofx notification) + nil) + :body-type + bodyType)) + +(rf/defn process + [cofx event] + (if platform/ios? + {:effects/push-notifications-local-present-ios (create-notification nil event)} + {:effects/push-notifications-local-present-android (create-notification cofx event)})) diff --git a/src/status_im2/core.cljs b/src/status_im2/core.cljs index f6188fc2bd8..9c38b0d2bae 100644 --- a/src/status_im2/core.cljs +++ b/src/status_im2/core.cljs @@ -18,12 +18,12 @@ [status-im2.setup.interceptors :as interceptors] [react-native.async-storage :as async-storage] [native-module.core :as native-module] - [status-im.notifications.local :as notifications] [status-im.utils.universal-links.core :as utils.universal-links] status-im.events status-im2.events status-im2.navigation.core - status-im2.subs.root)) + status-im2.subs.root + [status-im2.contexts.push-notifications.events :as notifications])) ;;;; re-frame RN setup (set! interop/next-tick js/setTimeout) diff --git a/src/status_im2/subs/root.cljs b/src/status_im2/subs/root.cljs index dc0dcc8bde4..0f7e2a44e18 100644 --- a/src/status_im2/subs/root.cljs +++ b/src/status_im2/subs/root.cljs @@ -236,7 +236,6 @@ (reg-root-key-sub :delete-profile/keep-keys-on-keycard? :delete-profile/keep-keys-on-keycard?) ;; push notifications -(reg-root-key-sub :push-notifications/servers :push-notifications/servers) (reg-root-key-sub :push-notifications/preferences :push-notifications/preferences) (reg-root-key-sub :buy-crypto/on-ramps :buy-crypto/on-ramps) diff --git a/src/status_im2/subs/wallet/transactions.cljs b/src/status_im2/subs/wallet/transactions.cljs index edceabf4f8e..bda2d0d6ce1 100644 --- a/src/status_im2/subs/wallet/transactions.cljs +++ b/src/status_im2/subs/wallet/transactions.cljs @@ -2,11 +2,11 @@ (:require [re-frame.core :as re-frame] [status-im.ethereum.transactions.core :as transactions] [utils.i18n :as i18n] - [status-im.notifications.core :as notifications] [utils.datetime :as datetime] [utils.money :as money] [status-im.wallet.db :as wallet.db] - [status-im.wallet.utils :as wallet.utils])) + [status-im.wallet.utils :as wallet.utils] + [status-im.notifications.wallet :as notifications.wallet])) (re-frame/reg-sub :wallet/accounts @@ -236,11 +236,11 @@ (* 100 (/ confirmations transactions/confirmations-count-threshold))))))) (re-frame/reg-sub - :notifications/wallet-transactions + :push-notifications/wallet-transactions :<- [:push-notifications/preferences] (fn [pref] - (first (filter #(notifications/preference= % - {:service "wallet" - :event "transaction" - :identifier "all"}) + (first (filter #(notifications.wallet/preference= % + {:service "wallet" + :event "transaction" + :identifier "all"}) pref)))) diff --git a/src/utils/re_frame.cljs b/src/utils/re_frame.cljs index bff7c1231d4..5857473a06e 100644 --- a/src/utils/re_frame.cljs +++ b/src/utils/re_frame.cljs @@ -78,3 +78,5 @@ (def sub (comp deref re-frame/subscribe)) (def dispatch re-frame/dispatch) + +(def reg-fx re-frame/reg-fx) From 65e37feb17627a8415d684cc3dd64efa036193ab Mon Sep 17 00:00:00 2001 From: BalogunofAfrica <45393944+BalogunofAfrica@users.noreply.github.com> Date: Fri, 13 Oct 2023 12:44:48 +0100 Subject: [PATCH 09/13] fix: chat over scroll (#17568) --- src/status_im2/contexts/chat/messages/list/view.cljs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/status_im2/contexts/chat/messages/list/view.cljs b/src/status_im2/contexts/chat/messages/list/view.cljs index 908bc369bac..3799121b55f 100644 --- a/src/status_im2/contexts/chat/messages/list/view.cljs +++ b/src/status_im2/contexts/chat/messages/list/view.cljs @@ -292,6 +292,7 @@ [rn/flat-list {:key-fn list-key-fn :ref list-ref + :bounces false :header [:<> [list-header insets (:able-to-send-message? context) theme] (when (= (:chat-type chat) constants/private-group-chat-type) From a2794a120abb7fef513d3a5f44783b01c2e243e3 Mon Sep 17 00:00:00 2001 From: Omar Basem Date: Fri, 13 Oct 2023 17:19:14 +0400 Subject: [PATCH 10/13] Wallet: Account Options (#17612) * wallet: account options --- .../drawers/drawer_top/component_spec.cljs | 2 +- .../components/drawers/drawer_top/view.cljs | 8 ++--- .../components/list_items/account/view.cljs | 11 +++++++ .../contexts/wallet/account/view.cljs | 32 ++++++++++++++++++- .../contexts/wallet/common/temp.cljs | 23 +++++++++++++ translations/en.json | 6 +++- 6 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/quo2/components/drawers/drawer_top/component_spec.cljs b/src/quo2/components/drawers/drawer_top/component_spec.cljs index 537b9fcccc0..7c8f7696028 100644 --- a/src/quo2/components/drawers/drawer_top/component_spec.cljs +++ b/src/quo2/components/drawers/drawer_top/component_spec.cljs @@ -56,7 +56,7 @@ {:title "Title" :type :account :account-avatar-emoji "🍿" - :networks [:ethereum] + :networks [{:name :ethereum :short :eth}] :description "0x62b...0a5" :customization-color :purple}]) (h/is-truthy (h/get-by-text "Title")) diff --git a/src/quo2/components/drawers/drawer_top/view.cljs b/src/quo2/components/drawers/drawer_top/view.cljs index 6ac0d779f1c..7222541c3e2 100644 --- a/src/quo2/components/drawers/drawer_top/view.cljs +++ b/src/quo2/components/drawers/drawer_top/view.cljs @@ -36,8 +36,8 @@ [text/text {:size :paragraph-2 :weight :regular - :style (style/network-text-color network)} - (str (subs (name network) 0 3) ":")]) + :style (style/network-text-color (:name network))} + (str (name (:short network)) ":")]) (defn- keypair-subtitle [{:keys [theme blur? keycard?]}] @@ -56,7 +56,7 @@ :size 16 :container-style style/keycard-icon}])]) -(defn- acocunt-subtitle +(defn- account-subtitle [{:keys [networks theme blur? description]}] [rn/view {:style style/row} (for [network networks] @@ -106,7 +106,7 @@ :keycard? keycard?}] (= :account type) - [acocunt-subtitle + [account-subtitle {:networks networks :theme theme :blur? blur? diff --git a/src/quo2/components/list_items/account/view.cljs b/src/quo2/components/list_items/account/view.cljs index fe69d826a58..d477d534071 100644 --- a/src/quo2/components/list_items/account/view.cljs +++ b/src/quo2/components/list_items/account/view.cljs @@ -8,6 +8,14 @@ [reagent.core :as reagent] [quo2.components.icon :as icon])) +(defn- network-view + [network] + [text/text + {:size :paragraph-2 + :weight :regular + :style {:color (colors/custom-color (:name network))}} + (str (name (:short network)) ":")]) + (defn- account-view [{:keys [account-props title-icon? blur? theme] :or {title-icon? false}}] @@ -30,6 +38,9 @@ colors/white-opa-40 (colors/theme-colors colors/neutral-50 colors/neutral-40 theme))}]])] [text/text {:size :paragraph-2} + (for [network (:networks account-props)] + ^{:key (str network)} + [network-view network]) [text/text {:size :paragraph-2 :weight :monospace diff --git a/src/status_im2/contexts/wallet/account/view.cljs b/src/status_im2/contexts/wallet/account/view.cljs index bd71e060625..ec6b04b254b 100644 --- a/src/status_im2/contexts/wallet/account/view.cljs +++ b/src/status_im2/contexts/wallet/account/view.cljs @@ -10,6 +10,35 @@ [utils.i18n :as i18n] [utils.re-frame :as rf])) +(defn account-options + [] + [:<> + [quo/drawer-top temp/account-data] + [quo/action-drawer + [[{:icon :i/edit + :accessibility-label :edit + :label (i18n/label :t/edit-account)} + {:icon :i/copy + :accessibility-label :copy-address + :label (i18n/label :t/copy-address)} + {:icon :i/share + :accessibility-label :share-account + :label (i18n/label :t/share-account)} + {:icon :i/delete + :accessibility-label :remove-account + :label (i18n/label :t/remove-account) + :danger? true}]]] + [quo/divider-line] + [rn/view + {:style {:padding-horizontal 20 + :padding-top 12 + :padding-bottom 8}} + [quo/section-label {:section (i18n/label :t/select-another-account)}]] + [rn/flat-list + {:data temp/other-accounts + :render-fn (fn [account] [quo/account-item {:account-props account}]) + :style {:margin-horizontal 8}}]]) + (def ^:private networks-list [{:source (quo.resources/get-network :ethereum)} {:source (quo.resources/get-network :optimism)} @@ -40,7 +69,8 @@ :networks-on-press #(js/alert "Pressed Networks") :right-side :account-switcher :account-switcher {:customization-color :purple - :on-press #(js/alert "Pressed Account Switcher") + :on-press #(rf/dispatch [:show-bottom-sheet + {:content account-options}]) :emoji "🍑"}}] [quo/account-overview temp/account-overview-state] [quo/wallet-graph {:time-frame :empty}] diff --git a/src/status_im2/contexts/wallet/common/temp.cljs b/src/status_im2/contexts/wallet/common/temp.cljs index 7fc960b43b0..308d80b9fe8 100644 --- a/src/status_im2/contexts/wallet/common/temp.cljs +++ b/src/status_im2/contexts/wallet/common/temp.cljs @@ -179,3 +179,26 @@ :state :default :action :icon :on-press-icon on-press-icon}]) + +(def account-data + {:title "Trip to Vegas" + :type :account + :networks [{:name :ethereum :short :eth} + {:name :optimism :short :opt} + {:name :arbitrum :short :arb1}] + :description "0x62b...0a5" + :account-avatar-emoji "🍑" + :customization-color :purple}) + +(def other-accounts + [{:customization-color :flamingo + :emoji "🍿" + :name "New House" + :address "0x21a...49e" + :networks [{:name :ethereum :short :eth} + {:name :optimism :short :opt}]} + {:customization-color :blue + :emoji "🎮" + :name "My savings" + :address "0x43c...98d" + :networks [{:name :ethereum :short :eth}]}]) diff --git a/translations/en.json b/translations/en.json index 438fe4d4579..763a50bf323 100644 --- a/translations/en.json +++ b/translations/en.json @@ -2344,5 +2344,9 @@ "show-address-qr": "Show address QR", "scan-sync-code-placeholder": "cs2:4FH...", "visit-dapp": "Visit dApp", - "disconnect-dapp": "Disconnect dApp" + "disconnect-dapp": "Disconnect dApp", + "edit-account": "Edit account", + "share-account": "Share account", + "remove-account": "Remove account", + "select-another-account": "Select another account" } From d1442b306ac20d63c82e8bf4cc51d99f79542b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Fri, 13 Oct 2023 14:18:40 +0200 Subject: [PATCH 11/13] nix: stop downloading POMs for Clojure dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clojure dependencies require only JARs to work. Downloading POMs is both a waste of time, space, and bandwidth. In addition POMs create edge cases that we would have to handle, an would rather avoid. For example, the `guice` package which shows up in the classpath includes a JAR named `guice-4.2.2-no_aop.jar`. The issue with that is that there is no corresponding POM in the directory: https://repo1.maven.org/maven2/com/google/inject/guice/4.2.2/ Either we have to make a special case for such packages, or we can just skip POMs entirely and avoid the mess. Signed-off-by: Jakub Sokołowski --- nix/deps/clojure/README.md | 5 +++-- nix/deps/clojure/default.nix | 22 +++------------------- nix/deps/clojure/generate.sh | 9 --------- 3 files changed, 6 insertions(+), 30 deletions(-) diff --git a/nix/deps/clojure/README.md b/nix/deps/clojure/README.md index 7f048904a9a..5e532669f65 100644 --- a/nix/deps/clojure/README.md +++ b/nix/deps/clojure/README.md @@ -12,12 +12,13 @@ By using the following command: ```sh shadow-cljs classpath --force-spawn ``` -We both download the necessary JARs and POMs into `~/.m2` folder, but also get the classpath printed into standard output. +We download the necessary JARs into `~/.m2` folder, but also get the classpath printed into standard output. +We skip POM files since they are not necessary, and add edge cases we don't want to handle. We then use the classpath in combination with contents of `~/.m2` folder to generate the following files: * `deps.list` - List of JARs relative to the `~/.m2` cache folder. -* `deps.json` - Full list of JARs and POMs including their SHAs. +* `deps.json` - Full list of JARs including their SHAs. The `deps.list` file is just intermediate and for debugging purposes. The `deps.json` is loaded by the derivation in [`default.nix`](./default.nix) and used to produce a derivation that contains all the necessary dependencies: diff --git a/nix/deps/clojure/default.nix b/nix/deps/clojure/default.nix index 0b08a6bb304..9bea02a99aa 100644 --- a/nix/deps/clojure/default.nix +++ b/nix/deps/clojure/default.nix @@ -8,9 +8,6 @@ let # load dependencies deps = importJSON ./deps.json; - # some .jar files have an `-aot` suffix that doesn't work for .pom files - getPOM = jarUrl: "${removeSuffix "-aot" jarUrl}.pom"; - script = writeShellScriptBin "create-local-maven-repo" ('' mkdir -p $out cd $out @@ -18,18 +15,11 @@ let (concatMapStrings (dep: let url = "${dep.host}/${dep.path}"; - pom = { - sha1 = attrByPath [ "pom" "sha1" ] "" dep; - sha256 = attrByPath [ "pom" "sha256" ] "" dep; - }; - pom-download = optionalString (pom.sha256 != "") ( - fetchurl { url = getPOM url; inherit (pom) sha256; } - ); jar = { sha1 = attrByPath [ "jar" "sha1" ] "" dep; sha256 = attrByPath [ "jar" "sha256" ] "" dep; }; - jar-download = optionalString (jar.sha256 != "") ( + jarFile = optionalString (jar.sha256 != "") ( fetchurl { url = "${url}.jar"; inherit (jar) sha256; } ); fileName = last (splitString "/" dep.path); @@ -38,14 +28,8 @@ let '' mkdir -p ${directory} - ${optionalString (pom-download != "") '' - ln -s "${pom-download}" "${getPOM dep.path}" - ''} - ${optionalString (pom.sha1 != "") '' - echo "${pom.sha1}" > "${getPOM dep.path}.sha1" - ''} - ${optionalString (jar-download != "") '' - ln -s "${jar-download}" "${dep.path}.jar" + ${optionalString (jarFile != "") '' + ln -s "${jarFile}" "${dep.path}.jar" ''} ${optionalString (jar.sha1 != "") '' echo "${jar.sha1}" > "${dep.path}.jar.sha1" diff --git a/nix/deps/clojure/generate.sh b/nix/deps/clojure/generate.sh index f2dca2397b4..42d34f73a71 100755 --- a/nix/deps/clojure/generate.sh +++ b/nix/deps/clojure/generate.sh @@ -53,8 +53,6 @@ function nix_entry_from_jar() { JAR_PATH="${MAVEN_CACHE_PATH}/${JAR_REL_PATH}" JAR_NAME=$(basename "${JAR_PATH}") JAR_DIR=$(dirname "${JAR_PATH}") - # POM might have a slightly different name - POM_PATH=$(echo ${JAR_DIR}/*.pom) REPO_NAME=$(get_repo_for_dir "${JAR_DIR}") REPO_URL=${REPOS[${REPO_NAME}]} @@ -62,18 +60,11 @@ function nix_entry_from_jar() { JAR_SHA1=$(cat "${JAR_PATH}.sha1") JAR_SHA256=$(get_nix_sha "${JAR_PATH}") - POM_SHA1=$(cat "${POM_PATH}.sha1") - POM_SHA256=$(get_nix_sha "${POM_PATH}") - # Format into a Nix attrset entry echo -n " { \"path\": \"${JAR_REL_NAME}\", \"host\": \"${REPO_URL}\", - \"pom\": { - \"sha1\": \"${POM_SHA1}\", - \"sha256\": \"${POM_SHA256}\" - }, \"jar\": { \"sha1\": \"${JAR_SHA1}\", \"sha256\": \"${JAR_SHA256}\" From d01c337a2cf79d411128f8b0dd6131afd84cbaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Fri, 13 Oct 2023 14:45:43 +0200 Subject: [PATCH 12/13] nix: update Clojure dependencies to remove POMs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakub Sokołowski --- nix/deps/clojure/deps.json | 480 ------------------------------------- 1 file changed, 480 deletions(-) diff --git a/nix/deps/clojure/deps.json b/nix/deps/clojure/deps.json index 14ea19caf86..c07f66f7301 100644 --- a/nix/deps/clojure/deps.json +++ b/nix/deps/clojure/deps.json @@ -2,10 +2,6 @@ { "path": "args4j/args4j/2.33/args4j-2.33", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "168b592340292d4410a1d000bb7fa7144967fc12", - "sha256": "046pab6gz1bh6w1jfbabgxvkrnvncrj93lnmaya5qs6a1z7mccn2" - }, "jar": { "sha1": "bd87a75374a6d6523de82fef51fc3cfe9baf9fc9", "sha256": "1mlyqrqyhijwkjx4sv2zfn2ciqfwpc08qq8w55rcxb941fxfmpci" @@ -15,10 +11,6 @@ { "path": "babashka/fs/0.2.16/fs-0.2.16", "host": "https://repo.clojars.org", - "pom": { - "sha1": "2c0c70c07cd9dddb57ddc070b7178c35416efaf1", - "sha256": "0imqngsycf1mx821yfdzahff8pxras01mbf5azaxk4c04qdp95rp" - }, "jar": { "sha1": "4e7ad43c9d5ab8907ef0064105e788e0e84f282a", "sha256": "1zhz4hnrzpnrz3d222py42xlhybwsk94bipmnm7ypb9vlf0p4m8y" @@ -28,10 +20,6 @@ { "path": "bidi/bidi/2.1.6/bidi-2.1.6", "host": "https://repo.clojars.org", - "pom": { - "sha1": "179b6a4d499f6830d8bf8ae030d82d8a49f61924", - "sha256": "1g3pzsal938f9s5xvfbkjplmprry33j0nc9x106z41jzzgqry37h" - }, "jar": { "sha1": "e17fa1c05ff99e99543c6d5328e293e933e15e06", "sha256": "1gld043c5qz7v9bp5s61vf1s5f8f1pbda9nzwqhy893dpm8xv0qb" @@ -41,10 +29,6 @@ { "path": "binaryage/env-config/0.2.2/env-config-0.2.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "8a8f0d726bb150b074dbaa92da5470f6144adb76", - "sha256": "07x1a046xcg9bbzwwgls8i036lzryv5ix29c8m0hf3pp742xa49v" - }, "jar": { "sha1": "ac36173f1802a5d7225be41faebedbf12949ae59", "sha256": "11j1bls84d8hn8gviawvxkbbnb0hcg1lvw6qqcjj356ap6xzxfic" @@ -54,10 +38,6 @@ { "path": "binaryage/oops/0.7.2/oops-0.7.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "bdce8b7dc9f2b569f5c42a4d6108325899970eb9", - "sha256": "1rc4slg4836pnxds447sam9hsiwd4x2al1ykazp6iglc10ix9igd" - }, "jar": { "sha1": "2f47298f9aa41ef6f2c4f2c49f472eb113e94ae7", "sha256": "0c9f7wylwl0lxcn4vqncprlzmdddqhxzb3vdaawdm0da0xh010hb" @@ -67,10 +47,6 @@ { "path": "borkdude/edamame/1.1.17/edamame-1.1.17", "host": "https://repo.clojars.org", - "pom": { - "sha1": "3c936dab997bb0c35b1df828cc689ac1b4a66a9d", - "sha256": "0q9yjnmxyiad6da982dqfvcmrlhn3fk93balqn38dgf941y7jklr" - }, "jar": { "sha1": "9087f7abf0104e0354d7db7fc4576608eac558f4", "sha256": "1n1872i240lakn4pzsag4grf7bv7lcsipmqllxd9m4k1zp3dgla1" @@ -80,10 +56,6 @@ { "path": "borkdude/sci.impl.reflector/0.0.1/sci.impl.reflector-0.0.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "eb3aff6c7db85d91f7e05b98e06d1354a4fce36c", - "sha256": "1bvr7cvpbvqi7swypzpbfrig16zipwvmg4m47y2x5chs5czwxv15" - }, "jar": { "sha1": "33dfc86102e0ea400498cbca47572459c1c43b00", "sha256": "0a5gxmj8kzc01y9bn7l4x7c1v5q9wcbvw5hdr525d3ylsyl6xfkw" @@ -93,10 +65,6 @@ { "path": "camel-snake-kebab/camel-snake-kebab/0.4.3/camel-snake-kebab-0.4.3", "host": "https://repo.clojars.org", - "pom": { - "sha1": "d8a86256bfd06736b84b6ee4c154a1b2518ab461", - "sha256": "1fxz1fdhppby21l4qkrci9kp38s508yn01z3cjspda56mj1plnid" - }, "jar": { "sha1": "5ae08f83ceb8959971e6334596bff0214bf6fdf2", "sha256": "1j627a99ccc4v0v83c8670vdnsp69cjk7ba0ga2xf433fwsz74c1" @@ -106,10 +74,6 @@ { "path": "cheshire/cheshire/5.11.0/cheshire-5.11.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "7d71b17336ff8d8cb685d9b4366b900b10b06a5c", - "sha256": "1sidfp7ln3v27r6san9703yhyvsqkjj68m8p70lhbl14j2gjfwgb" - }, "jar": { "sha1": "1a1231c65bfd6a2033148e88dcbd1ed8dede12a4", "sha256": "0iv2nidrz07qjsqhyh8r9n59hxc52jpagggj9ivxl7bbcyg0daqz" @@ -119,10 +83,6 @@ { "path": "cider/cider-nrepl/0.25.3/cider-nrepl-0.25.3", "host": "https://repo.clojars.org", - "pom": { - "sha1": "3a39a7a1690b4ee6b48a4f0c65d089eacf47e8a5", - "sha256": "1qhz6q1afg22j5d8zyxzqsbbinix3zh4lyy2acij8hrp02f274wj" - }, "jar": { "sha1": "5ae0efd9377a5e60c084bdaf4a2ce094f759ce23", "sha256": "0drxf9nm23i1pcgrkwbcr09msq37csilzww38709add0hz8spjhq" @@ -132,10 +92,6 @@ { "path": "cider/piggieback/0.4.1/piggieback-0.4.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "c432ffbdd51b67bf82e4a63f1f4f102ba55f4ddf", - "sha256": "191wpjlq78s08d509hq2yrxsdzm3qfkqf2zdiwxxlmmh14dg65rx" - }, "jar": { "sha1": "0a02a3e2ecd7a126ab60d8a44793342f20ced79b", "sha256": "142vl5np33akcrnn6pksi0rjfsmmi528villxsj6cwcndvybiw4m" @@ -145,10 +101,6 @@ { "path": "clj-kondo/clj-kondo/2023.09.07/clj-kondo-2023.09.07", "host": "https://repo.clojars.org", - "pom": { - "sha1": "3211d91a5054122df320329f29bf3aca0ef9d1b8", - "sha256": "0ryzba8fs1696hlxx37bh4lhc9rd078yn6aymngl24db4vil7cpx" - }, "jar": { "sha1": "9bf516b973a0b77d7dc5a3c6c84a884e3470e7b7", "sha256": "1qkw5ryqdzy4wl3xbr0r72ikrch75z5vh1dny569y3jlc888gkv8" @@ -158,10 +110,6 @@ { "path": "cljs-bean/cljs-bean/1.3.0/cljs-bean-1.3.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "2920ec4ae47eaa47c8a8aeecb4670a42cd412aab", - "sha256": "0xamxny72ymyjfnmzjbnxfc0b19rbbzsmxgm6x2d5z2fbsgv3hz7" - }, "jar": { "sha1": "eef0aae8057df9c538bf009fd82766d5e86848c7", "sha256": "0c6wlpyc1k5aavw5dixllycdnmr64rrhpc4q57wfyfymixz87d7w" @@ -171,10 +119,6 @@ { "path": "clout/clout/2.1.2/clout-2.1.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "2c8aec1449373bfc2e7651b454104e4dc8d70168", - "sha256": "1kphwll940nz53cjnfc9jlwxzbd0dkpzjfs5jaxrl4q95l0d845x" - }, "jar": { "sha1": "87cc1bd24ec39a8572e66103039955d7570ce077", "sha256": "1y3pp542ml5za3iyc5szqh2xn65dqmd8d6621mznmzg8bng1yscx" @@ -184,10 +128,6 @@ { "path": "com/andrewmcveigh/cljs-time/0.5.2/cljs-time-0.5.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "21a75819b0540486c66a48bd9119201c368221ba", - "sha256": "035awyqyifbgn28faz0q90hm66vngdcl9x6jgbmkh5zjnp1xmpfi" - }, "jar": { "sha1": "7d4274be169f54a03d4afcc40ea95f40d44ca0a2", "sha256": "061cjh2a6qpkib5v5mdrsbwhvcbqvh1igvp3b7jhcfj05pgplm1x" @@ -197,10 +137,6 @@ { "path": "com/bhauman/cljs-test-display/0.1.1/cljs-test-display-0.1.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "1a8259078974068be03b4318aab377119e09c6fd", - "sha256": "1n2pksy9dms0vzdzcqxsrz6nm15kl4as7wrzl440dyk1hz8hc3gh" - }, "jar": { "sha1": "64735aaf0401970524db37053b5dca19aa01f0a6", "sha256": "13099h797xp6wh0f4yly480q59xwkm63fba43y99ilzc647ipwn1" @@ -210,10 +146,6 @@ { "path": "com/cognitect/transit-clj/1.0.329/transit-clj-1.0.329", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "a9adb076d8c94d08846ee4134d78052a69445b50", - "sha256": "0x5ch9xrs7jb9i9gmk21d69c41yl5l5z9bfm2b6zw3mqmccfpy5b" - }, "jar": { "sha1": "e3bc004c0ca6bef0a0249147f57d5d741521cb11", "sha256": "0sn9m8sfmm3p5dr9gz95j8fbkk7xip0iqs8ld6j0pkrzvff476l1" @@ -223,10 +155,6 @@ { "path": "com/cognitect/transit-cljs/0.8.248/transit-cljs-0.8.248", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "ab6791b20ec49ba9fa07f388db80f2c0647544fd", - "sha256": "0qh56qq5vnb5mnwql3wfz1j2wb4km3176mxwv92ay963g1kbilpx" - }, "jar": { "sha1": "7c364a28138880b613981516528a4e3132059394", "sha256": "1j71f5l3mpy34w2p59i5nzbwwrndmknfl4nafialiag2s8ps6pmd" @@ -236,10 +164,6 @@ { "path": "com/cognitect/transit-java/1.0.362/transit-java-1.0.362", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "e8ca719611a06b5b238526716fb6cf7b4e71fe44", - "sha256": "1hg7dxdv90lcv8ppdqjqvpnviz5zcqrhdixas0nn9dmq2j03rmni" - }, "jar": { "sha1": "93775c7f592ccca35e1eba3a24ac807650dedc74", "sha256": "0m6bywis7l7g4vl049g9fsgfidgyhz1b3nb3rh0mda6x8qymfs7b" @@ -249,10 +173,6 @@ { "path": "com/cognitect/transit-js/0.8.846/transit-js-0.8.846", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "8ef0fbb4e15dd33a6f262e8cdc481f0f635592d3", - "sha256": "1r7991ljrh75f8622433sga70x8swcznycl2sczdqklg9iajqlhn" - }, "jar": { "sha1": "bc6e908a4a3ec8818b3de924cd3dce433dd3411f", "sha256": "01937017b9m3dw6s10drj2s76597ayjxdyvd102gnxmb031gynha" @@ -262,10 +182,6 @@ { "path": "com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "1a9b0ebfcda0063950c35f42c7fdce9a34e8b782", - "sha256": "1z6y1kh9vd4hd53whb3mkfjrkbapr7ghf4m6c0vv8bdz7528wg1x" - }, "jar": { "sha1": "a27014716e4421684416e5fa83d896ddb87002da", "sha256": "0gbara9dbk2khk1ksqbxsmm57gpvkf20p1qfphp4fsfclf79l4db" @@ -275,10 +191,6 @@ { "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.13.3/jackson-dataformat-cbor-2.13.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "823e0818ef8e6931c0ce693a38ad6df77658000e", - "sha256": "036wx9jf3rbx2lp6pdqfl4hbkp3v2sdqmhimqb5g063dv7394ii8" - }, "jar": { "sha1": "bf43eed9de0031521107dfea41d1e5d6bf1b9639", "sha256": "0q78lxy2sh9gdscnbqrjb3gkgjy1gf76gyf3yfqj353kb5vnhsla" @@ -288,10 +200,6 @@ { "path": "com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.13.3/jackson-dataformat-smile-2.13.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "ac3265b307f93810a9f5d286a0de0dd00aab3a1a", - "sha256": "1z6d1iqjbjhkmvxvda9xwj7rdvr6czlkw7xyc7wq5asc10m7li32" - }, "jar": { "sha1": "b4e03e361e2388e3a8a0b68e3b9988d3a07ee3f3", "sha256": "1d4zhxvr9zc01lzsa3fq1bww2bmwc06p213sr058z3g85j4gzm1j" @@ -301,10 +209,6 @@ { "path": "com/github/javaparser/javaparser-core/3.25.3/javaparser-core-3.25.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "f6a4ac459bffaf658f503ddce9abf2230be5e392", - "sha256": "1hfzrw81qzdmkkkv153k86naqmi1ldmiis0bz3zckrfkis9vm0dy" - }, "jar": { "sha1": "55a960eea36e9ae20e48c500c3dd356b33331f1f", "sha256": "09rca8alzi5av62sjsd4m0j6wpa0nprml0zjas87xb8dh8cbq93k" @@ -314,10 +218,6 @@ { "path": "com/google/auto/value/auto-value-annotations/1.6/auto-value-annotations-1.6", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "d10e43f4fe43c8f8383b1842c7b737ecf43b5c23", - "sha256": "15ya024j8fiir65axg667virayx97nkfpjlxw71kap47814bqqlk" - }, "jar": { "sha1": "da725083ee79fdcd86d9f3d8a76e38174a01892a", "sha256": "0sdf3y01nmj6kixvfqd8ljxm1vvw7r1ngaza3dkzqaig8dn975fh" @@ -327,10 +227,6 @@ { "path": "com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "8d93cdf4d84d7e1de736df607945c6df0730a10f", - "sha256": "1zldsximvzlag566i5r2i124d5vs2jw4brjy39hb4m5jy6yrv20r" - }, "jar": { "sha1": "25ea2e8b0c338a877313bd4672d3fe056ea78f0d", "sha256": "1iyh53li6y4b8gp8bl52fagqp8iqrkp4rmwa5jb8f9izg2hd4skn" @@ -340,10 +236,6 @@ { "path": "com/google/code/gson/gson/2.9.1/gson-2.9.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "f0cf3edcef8dcb74d27cb427544a309eb718d772", - "sha256": "00r9y2irlkglv0bc8kby214finn23gi7ksabgarp098lswin75p5" - }, "jar": { "sha1": "02cc2131b98ebfb04e2b2c7dfb84431f4045096b", "sha256": "00x67pi14r2kdpn3rhglwcdmvhgifsxkmyrn2w5xbrp677ik919p" @@ -353,10 +245,6 @@ { "path": "com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "5e902aae26ac5c36f6420f689f43333129dd69e2", - "sha256": "10vzlnl8vbjv2jqf818wdb7kgy9c6qjka7fjmmi3vdpg1mcn6pv6" - }, "jar": { "sha1": "c9ad4a0850ab676c5c64461a05ca524cdfff59f1", "sha256": "170rflxnqnah0265ik2aylmxkshyqbf2zas9bp2l32xqj9l6jsaf" @@ -366,10 +254,6 @@ { "path": "com/google/errorprone/error_prone_annotations/2.15.0/error_prone_annotations-2.15.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "dd12a10c4b267375dc32938dcec2c986793af9dc", - "sha256": "1rmisaislm0sjrnpibwqflws1hj6yq2wj0y2i6rbn7k869z63bkv" - }, "jar": { "sha1": "38c8485a652f808c8c149150da4e5c2b0bd17f9a", "sha256": "1sy40pwq5rk87zpa0mccn8g3m7xgq38xkynvbfd7irs98dqlfw06" @@ -379,10 +263,6 @@ { "path": "com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "e8160e78fdaaf7088621dc1649d9dd2dfcf8d0e8", - "sha256": "1ff40d0r4d54fbb3rzdmj6i40yy88wlm4r795gda1jzyg3744q79" - }, "jar": { "sha1": "1dcf1de382a0bf95a3d8b0849546c88bac1292c9", "sha256": "09na6vwxmpw4xcqszba15avzl6k6yjfvw5jbgs1xmljdfd6fwwd1" @@ -392,10 +272,6 @@ { "path": "com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "d0ec1628dcc04e4835721416103672384ea3136f", - "sha256": "15pkn904mhp97v67yfqiw936cxpzr9kpi0pjr9f0rii11j96dr9b" - }, "jar": { "sha1": "119ea2b2bc205b138974d351777b20f02b92704b", "sha256": "1fc7y1dan9jqfg7j27f9iywa6mdagd8x2fhrnfgj3gc7bvb99gnm" @@ -405,10 +281,6 @@ { "path": "com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "1b77ba79f9b2b7dfd4e15ea7bb0d568d5eb9cb8d", - "sha256": "16v7p0wgzi5wijl596ggcawcs1gyn5mzgqcw0xalwg8m4vdv3m0q" - }, "jar": { "sha1": "b421526c5f297295adef1c886e5246c39d4ac629", "sha256": "169zydsbk48cs370lpdq5l69qgqjsq7z7ppzprzsa2i3shvs0wmk" @@ -418,10 +290,6 @@ { "path": "com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "47e0dd93285dcc6b33181713bc7e8aed66742964", - "sha256": "0mghlfk0zwyv9qqd8x6p5yx4dspwnbypscrhhx2ywnqip8jaib2z" - }, "jar": { "sha1": "ba035118bc8bac37d7eff77700720999acd9986d", "sha256": "0ysaws2dawf41raccmprx8vilr5nrh6d5d70q0i63gb74b4k1br1" @@ -431,10 +299,6 @@ { "path": "com/google/javascript/closure-compiler-unshaded/v20230411/closure-compiler-unshaded-v20230411", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "7fa256146e50a569d2ca0395782015b5d8d9f71e", - "sha256": "1wgjsh94mgpydngk16ggpk2wpprwvf1pdhjkn620djqm1rlxdjnn" - }, "jar": { "sha1": "2f5d7ab921f9cc07ffeb4e1c0f156f164c650eeb", "sha256": "0gphdrrhr88bcqa1scndachvhbayh7m11zm9hcsmvzn9bw72pabw" @@ -444,10 +308,6 @@ { "path": "com/google/protobuf/protobuf-java/3.21.12/protobuf-java-3.21.12", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "78c539faf2fddf82de70e6d817a8cab6fe07b5d2", - "sha256": "1danw37m91ksjm8c979clmiya03p3g1zadxivl57alkhfx8qwy09" - }, "jar": { "sha1": "5589e79a33cb6509f7e681d7cf4fc59d47c51c71", "sha256": "11yzx7m9qq682n8r1xh820gjnnhddgfn3xgayf060946jbddngiz" @@ -457,10 +317,6 @@ { "path": "com/google/re2j/re2j/1.3/re2j-1.3", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "565024724e6527255f0ae38e507c7f90c55b21ce", - "sha256": "0bzj30pnw9bm7jfcwl5ypaqrgvvp3yndf9vdw0qjfyzr9xx39z2d" - }, "jar": { "sha1": "dc7de2b32fa8cc569ab44fb849abadbbc6983b91", "sha256": "06fypacl4jsbiddgby40fxxz6bpck7jvc5ch344f472cqnhhy16q" @@ -470,10 +326,6 @@ { "path": "commons-codec/commons-codec/1.15/commons-codec-1.15", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "c08f2dcdbba1a9466f3f9fa05e669fd61c3a47b7", - "sha256": "0n5b40x4wsmygna7fivix3cy9rs2yv5ikx30g141adsslfcf2vn8" - }, "jar": { "sha1": "49d94806b6e3dc933dacbd8acb0fdbab8ebd1e5d", "sha256": "0qzd8v96j4x7jjcfpvvdh9ar1xhwxpxi2rh51nzhj0br7bbgdsdk" @@ -483,10 +335,6 @@ { "path": "commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "65112009d674333c1acfafb4e198ff250d710764", - "sha256": "007nyd66fqp3fbrmnsbfp1fpkhmr2lk33qmkp3salqld3xd7qlc8" - }, "jar": { "sha1": "f95188e3d372e20e7328706c37ef366e5d7859b0", "sha256": "1xyyl54sfxsdcwxdyq6b0azmr31b4dwqns850jjkw9a9dwrh5v54" @@ -496,10 +344,6 @@ { "path": "commons-io/commons-io/2.11.0/commons-io-2.11.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "3fe5d6ebed1afb72c3e8c166dba0b0e00fdd1f16", - "sha256": "0ngg3s1kw6in8535dr71dr490ixajd6q7bdc40n5yjr4wgbny09f" - }, "jar": { "sha1": "a2503f302b11ebde7ebc3df41daebe0e4eea3689", "sha256": "020946yakki3qzc652arfndzi594drxanidz9bawbb6vhxnjy6wn" @@ -509,10 +353,6 @@ { "path": "compojure/compojure/1.5.2/compojure-1.5.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "9e8da477b6682094d56802cb155291a2acb829bd", - "sha256": "036z64iprypccz03iq7lqxvw99xjh4xlsfmfwbs37pmhfnfmbdnx" - }, "jar": { "sha1": "0b5258d0616ffc5f64c2b6d95f09de56d24df439", "sha256": "1s2k05lwnlm9a66mxnsss437i9gp70dny8y2rlfkl090s6mdqsaf" @@ -522,10 +362,6 @@ { "path": "com/taoensso/encore/3.21.0/encore-3.21.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "92b49be36d9701f17eac88e681d8c8c1b1a3296a", - "sha256": "12qcy1j859rni87kngxicp3a2nb361yiskqa61cr6l6yd7rw381n" - }, "jar": { "sha1": "2fd92b7a4ff59715cbbee0ebfd166e2feadfa9ce", "sha256": "0krgb7s28l12nzcgcj4601ajlpkx4wk7zij7b1ly479dxgsr03qx" @@ -535,10 +371,6 @@ { "path": "com/taoensso/timbre/4.10.0/timbre-4.10.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "79b9f08eb71f68de4a9e01e8899cd80313a6a2d2", - "sha256": "1a7xr3w667868wgdxfr5655i680ip47dmlw2khr87f70hc6d64nv" - }, "jar": { "sha1": "daf6b8826cb16aed7fb3e0dd7a5c5266d2a53854", "sha256": "1rza24rhkzjmik5rwfzqzywp9yvcwilj16him9n7h7p751y6klry" @@ -548,10 +380,6 @@ { "path": "com/taoensso/truss/1.6.0/truss-1.6.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "0bde0c47c89439c06406ae395f2f6c5e4e1b1b7a", - "sha256": "1w7kcf2d4xxn3m5f60rp4gs3fsa2bcizjd1jas0ly48hmpr1jki7" - }, "jar": { "sha1": "02c08dae83153a50eb946c4d742f574a24bb2a76", "sha256": "0z5mw41ikk2m09vv6rn9hiqjyqlcfkr99cy7kk074w78lryy9w2f" @@ -561,10 +389,6 @@ { "path": "com/taoensso/tufte/2.1.0/tufte-2.1.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "baf126a42d10c1eb81bbc735730f832a206c564a", - "sha256": "0p8b86y32597lq4g5xs06hc03bmn8847r3bvrd2d62834p1k7bvb" - }, "jar": { "sha1": "3bece3f233cf626ae373c349117531ccafb9dfde", "sha256": "0lx12szc2n2y21iqvrsjhdw90jiq9a9nkkdki5i80933rgwn9agv" @@ -574,10 +398,6 @@ { "path": "crypto-equality/crypto-equality/1.0.1/crypto-equality-1.0.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "36dc5bebe6a999f416c89ee1779f33951e71f871", - "sha256": "0jzlfh7618w59r34wwq8ssm19751c6if03d530yijmnksl15fbk3" - }, "jar": { "sha1": "26f76ad46f4a9881992c158118419dd9e7846b52", "sha256": "1psbxljxvqvjvvlz1cj0df50l5npzvpyj0kdr27kzxywfq5wq5gf" @@ -587,10 +407,6 @@ { "path": "crypto-random/crypto-random/1.2.1/crypto-random-1.2.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "e6274f0b2a95e58deabfb1e3ab3d6bbfbe94e5a3", - "sha256": "0j0hn9y5klzfji5lyflsm6jbk1xnk0arlr2lby85wcl5881hps6q" - }, "jar": { "sha1": "ded0350f88e6f0bcca276c73f3aaadde94dc09f3", "sha256": "0b75799a2lilbrm9j6k5zx22iq7pfaw76rvjx72m6vdnsx38h4jw" @@ -600,10 +416,6 @@ { "path": "day8/re-frame/test/0.1.5/test-0.1.5", "host": "https://repo.clojars.org", - "pom": { - "sha1": "a46bdc5a76e9309bcc25aebe6b2aaa40f303a4fe", - "sha256": "19438axf7jvn8vgaq17q79lxhx0q23qi12933pvnlvhc70nyr1gn" - }, "jar": { "sha1": "9e2d06c8564f0983098ddcc046a329c4faca46c2", "sha256": "11qsa9y006f6cg8s08zzsbbgxnpv0504xns9r9xdyvkjwi280wxl" @@ -613,10 +425,6 @@ { "path": "expound/expound/0.9.0/expound-0.9.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "54f6517c1931497f343c83cf65bf5714ba086e88", - "sha256": "1nf5jxlpjy94yhzxwbgdrc0v766qkrmhb07n18d4zg6c7l68x54h" - }, "jar": { "sha1": "5294f6b31a2cfa6ffbe5021d9390c738fb471927", "sha256": "0p7r33hglnl93v0sxbvspbl9khcbs69xd2vaz8dkbq0qk5h758yn" @@ -626,10 +434,6 @@ { "path": "fipp/fipp/0.6.26/fipp-0.6.26", "host": "https://repo.clojars.org", - "pom": { - "sha1": "e0944019d61c38794cfa9b06f35ca4e726690108", - "sha256": "0dambx7ijfii2hxdhqs3b4al8482xgpmfbvws0pi688kp1bn7v57" - }, "jar": { "sha1": "fde761cd9f5c9bd13e8c91e8b9724573a87f1449", "sha256": "10vjhnb9g9yzcgjsi1gi394nspvyki0l2m4dhd6dgbsmrrn6kjzp" @@ -639,10 +443,6 @@ { "path": "hiccup/hiccup/1.0.5/hiccup-1.0.5", "host": "https://repo.clojars.org", - "pom": { - "sha1": "ad8dca6233e4c76cfa408a6857c0fcf9b4939b0f", - "sha256": "0lp5q11li5wsr6gw70h801wklcqqcxcw54cpxabj4prbzva5jq1q" - }, "jar": { "sha1": "75940a400111bbb8f80e43325e23100b6e2227bc", "sha256": "1z07dh3qg9zzcwa8x31mnqxnkfsf2sbv315n43kxmnv1fkjagm0g" @@ -652,10 +452,6 @@ { "path": "hickory/hickory/0.7.1/hickory-0.7.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "5730f6d94df251fc3082ee7d0610a1a6b5327859", - "sha256": "0yhfpg8ivqyxg8615bvg3a0ljw0mxgqd2nis5gwhf9xn6p1id6x5" - }, "jar": { "sha1": "d9e6114592c434ca1df6022bbf4d5e97714666ee", "sha256": "021ag1b00821ma6mfl66ljyza1avjlpcld0zhnz1gvppwm5974xz" @@ -665,10 +461,6 @@ { "path": "http-kit/http-kit/2.2.0/http-kit-2.2.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "2ae358658936ae7d1bf5b929503e607d60c7d94c", - "sha256": "1p8kmih1x4fm21haacz80f5as52lg3q8i02n8qzh709iwx7za5xa" - }, "jar": { "sha1": "70b17515f43a0e74937cdc0dea270d4ef13c7f32", "sha256": "1nnvadcqc7mabyp0gp2kbic85ipnxx499w36984is3ajw8k2c47p" @@ -678,10 +470,6 @@ { "path": "instaparse/instaparse/1.4.0/instaparse-1.4.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "55e534aa45dc4b6a84fce2c2ea342c66070d7c2b", - "sha256": "0pjdm2js7rjgsbq6byrdbf8bqca66dg736jvw9imc3dzz9mvy4f6" - }, "jar": { "sha1": "ade13d743d1ec8a6c5103fd0f5701b0f997e2cc4", "sha256": "188325lqyc6p9fmrcsx5vwp4cydnaxf32034jqf2ch29mnax1gvh" @@ -691,10 +479,6 @@ { "path": "io/aviso/pretty/0.1.33/pretty-0.1.33", "host": "https://repo.clojars.org", - "pom": { - "sha1": "bd20d3111649da92524569882f0f9925740aac3e", - "sha256": "034rhbp6cqzbf9c4ql28n72vmqbxvh39ghf1b2axlnfza38w783b" - }, "jar": { "sha1": "2ebf75b7ff2a2260827453e7ea98e012a9eca3e2", "sha256": "06w7hpgccr7qy47cwzpq5h2fw27am1imc9cbpg3bc5bbydz9q4df" @@ -704,10 +488,6 @@ { "path": "io/methvin/directory-watcher/0.17.1/directory-watcher-0.17.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "fa5e42e2665cd9c8cdf9544f7d042e28730f7251", - "sha256": "09shgb0ds62fdd9ck2rs1xmwpbb1jfmqpwhzxna0fbyhwqj2kwmf" - }, "jar": { "sha1": "cf173a2fbca13eea5de68ea7b3434ce2c627fdeb", "sha256": "176sa5hglp358nswyfafqh98l79971h8qxncpmbb5y227v4qx4xd" @@ -717,10 +497,6 @@ { "path": "io/replikativ/datalog-parser/0.2.25/datalog-parser-0.2.25", "host": "https://repo.clojars.org", - "pom": { - "sha1": "43f39a5474e3767703a9722130b8ff7bc2e19fc2", - "sha256": "0digckysn4ndv14yikbcxphq5wb766nrf1rmnw4mzalmwdfq008d" - }, "jar": { "sha1": "4d59fde5929044463b0385e9161709a64a4f3d32", "sha256": "0lbwrpsgfg7ri7bqrh23w3fjkfc9jlh4s1nim8rd284pc42xhnhg" @@ -730,10 +506,6 @@ { "path": "io/undertow/undertow-core/2.2.4.Final/undertow-core-2.2.4.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "0c0f3b7a6b2c2b4e73d719362b4595e77fbe98cd", - "sha256": "14z0577jgx3r510zgjrzd2vcz9md3d5qpb81ir14zis9vdn5pwxf" - }, "jar": { "sha1": "78650b4029dd9280c4769d9425b5559f12cb83bf", "sha256": "1brpkd2l98byf76jga6hj5drv5sj2d93lxlq2xz0rxpqyqas1xm4" @@ -743,10 +515,6 @@ { "path": "javax/annotation/jsr250-api/1.0/jsr250-api-1.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "828184cb963d953865b5941e416999e376b1c82a jsr250-api-1.0.pom", - "sha256": "0kclcaa2zgvsadld82d5j4wgsf2g83cl0ldghcifymj3y3v0x2sl" - }, "jar": { "sha1": "5025422767732a1ab45d93abfea846513d742dcf jsr250-api-1.0.jar", "sha256": "07wl9bsxxh9id5rr8vwc1sgibsz1s40srpq073nq7ldnv7825ad1" @@ -756,10 +524,6 @@ { "path": "javax/servlet/servlet-api/2.5/servlet-api-2.5", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "a159fa05cce714c83deff647655dd53db064b21c", - "sha256": "07ma7yabvz3jkbxjm87wxdzljsf6hxqahv3a5ljk516dyc31axv9" - }, "jar": { "sha1": "5959582d97d8b61f4d154ca9e495aafd16726e34", "sha256": "1p6lk86qwrr8k2pgjs3pmfh44h9ff05ckcvgnsnyxykh18vfln66" @@ -769,10 +533,6 @@ { "path": "javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "61dab99f547e2110e42e35f659d9ba27bd00108c", - "sha256": "0yi9yv58skp6badj6hjfy1hhjs55jja0wkyj3ap55s81k5xnwvs6" - }, "jar": { "sha1": "99f802e0cb3e953ba3d6e698795c4aeb98d37c48", "sha256": "00rxpc0m30d3jc572ni01ryxq8gcbnr955xsabrijg9pknc0fc48" @@ -782,10 +542,6 @@ { "path": "medley/medley/0.8.2/medley-0.8.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "f59de194201b5e90166571ce4b3db1774fb576f4", - "sha256": "1vhy2634m07a2asz354sds2i7g6gwm8bxfpsmp8dfbr4226hi4m3" - }, "jar": { "sha1": "0c05ef36ae49925af44c781108ecf8b704a83a8f", "sha256": "1hf1jd60jshd1p8yknfnimfsbiz9x1kg8x1gb6939xxx6sk953c8" @@ -795,10 +551,6 @@ { "path": "mvxcvi/alphabase/1.0.0/alphabase-1.0.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "2cd07338e4e0a8f7f20d26c8212e5a3333c7acac", - "sha256": "1kan1lb3ckc0l447cj3l83lh6svz5bk514j0y9lxif6is07b2qxg" - }, "jar": { "sha1": "008785c0ff977d8132af4aaa931d88ffc44fca03", "sha256": "1g395and521h2q370vh7w0psx63a1zb5f2rcrafqgzw5s3nwlm4q" @@ -808,10 +560,6 @@ { "path": "net/cgrand/macrovich/0.2.1/macrovich-0.2.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "8b596c51c4d541ce1cc936bba18ef4d0b8d4aac1", - "sha256": "1ajpbx1bk2bp5f6zvs0yc6ikzx816l9jm2fchbn0mmlb4x4nmdxp" - }, "jar": { "sha1": "abcb26cbfe0f8eef363b25525210c0fe1eb1f693", "sha256": "119rmznkfsk1df3q9408dkd9kcqsbpffni19dzrjr7k05ijcl487" @@ -821,10 +569,6 @@ { "path": "net/java/dev/jna/jna/5.12.1/jna-5.12.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "28b38eb06d49cc01a0d779101788b0fe46d0973b", - "sha256": "0mjkp2r9qca6aad1w0z4k99b9bc9aqppj5q3nma9b1ddkf22bzv5" - }, "jar": { "sha1": "b1e93a735caea94f503e95e6fe79bf9cdc1e985d", "sha256": "1cskrxarxlrh7h73sh44g4cn4k47mnlf2hnqj7p0vmj09yn19a4i" @@ -834,10 +578,6 @@ { "path": "nrepl/bencode/1.1.0/bencode-1.1.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "5a950fae855b77e739c3f0a7d839fb166fd1d4c7", - "sha256": "0wkbmvxq8q4m8w2pdgmdqvkz7iklks2fpg76r8vkqzxd3c24aym3" - }, "jar": { "sha1": "48e0674aeb221294c8728ad68571c01b95df4f5b", "sha256": "0syyqsx376lxirv3prx27klvz1x98vxg6rqsaniz4ddi45vxlm2p" @@ -847,10 +587,6 @@ { "path": "nrepl/nrepl/1.0.0/nrepl-1.0.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "79b3e7030f2da9c4b8a20e4e5b44b401fbaccefc", - "sha256": "0wnsyd2vwikqljl8si3040s5b89fm8j9zfa4a1c8g3lzj4npjwvl" - }, "jar": { "sha1": "f47774c43493efdc879d36b95ebd67ea0d9c890a", "sha256": "1fx5ssmixgqmklliw0ng8fjz41kkhys56x8dbwv9yqrfzws9f2x3" @@ -860,10 +596,6 @@ { "path": "org/apache/ant/ant/1.10.11/ant-1.10.11", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "72f702c7d8de0de614e2b93409146197157e1d63", - "sha256": "1qqz9gxrvmfxdbma04d3xs7f2y2dzv62psvfpz7gbas6rgcr8a62" - }, "jar": { "sha1": "b875cd48a0bc955ae9c5c477ad991e1f26fb24d2", "sha256": "0m07pifkdpwghpp8wvqh14sbxazmjbkkpsfakw6ixq5apfdvih48" @@ -873,10 +605,6 @@ { "path": "org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "b7a6baf478827a41351061b89bde2fd23d0328f5", - "sha256": "07hwdm20mffm51yw8qxqlgqwr0nly4987cslxh46xsqv4s40capd" - }, "jar": { "sha1": "ea0a0475fb6dfcdcf48b30410fd9d4f5c80df07e", "sha256": "0mnj5v660qvmrsi1m6z0dnykw3df8f1213byzp45l2wqgbgk1dfs" @@ -886,10 +614,6 @@ { "path": "org/babashka/sci/0.7.38/sci-0.7.38", "host": "https://repo.clojars.org", - "pom": { - "sha1": "be9e6f6013428569313f502e5f10b6211eb7e6ba", - "sha256": "1h5kyhk7z9yac9fz77w3mm356gr3gbhk0mh875i9i00s3z058f9c" - }, "jar": { "sha1": "ef2d8c74065b9a7d685a11bff017676db308a923", "sha256": "04pkxwcgkd1p4f4rszsr6pp18fl0vni1az47a390llrhyyrjcckn" @@ -899,10 +623,6 @@ { "path": "org/babashka/sci.impl.types/0.0.2/sci.impl.types-0.0.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "6cd4c1666076647841f5033b2a0fc100ef6e37bc", - "sha256": "07ks8imcsxbmm7ahpjbba10fqvrx22kxr4vbgfsciwj9sp0z4s8v" - }, "jar": { "sha1": "45a05ece33609c3ad26a6ea4e05130560da82306", "sha256": "0pwwqq11rcknpcwbwsbw7pgbgnd7hqiawn0r8yvk14qfwa6p7z46" @@ -912,10 +632,6 @@ { "path": "org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "fb8dca6f40fcb30f7b89de269940bf3316fb9845", - "sha256": "1fa61xws48m9hpj7z3zlbywc82kwyfda66nwhqxhp0k2dviplnvp" - }, "jar": { "sha1": "d5692f0526415fcc6de94bb5bfbd3afd9dd3b3e5", "sha256": "1jzkwzdwd6wvrg0lrsh90df61frc5accp4y2x5fyqmx3q9d7h47z" @@ -925,10 +641,6 @@ { "path": "org/clojure/clojure/1.11.1/clojure-1.11.1", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "93e849eac614a76e22c3420e37247d5e20c3be48", - "sha256": "12nbzybdx343p108fbxk81kw220swc50adprmqhbxn6vpqd5mi10" - }, "jar": { "sha1": "2896bc72c90da8125026c0e61df0470a084f9ec3", "sha256": "1pml1iqzix0vzi51kf86c0yj8miss41lk52m2hanbd1s8blvd093" @@ -938,10 +650,6 @@ { "path": "org/clojure/clojurescript/1.11.60/clojurescript-1.11.60", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "ba6dfef1a22e5105ac0a2c157cff44e4c04cb1ac", - "sha256": "10ifpjbfqng1wc9vzgfmrkr44j4dlgygifp446v639a8y1z9nrzy" - }, "jar": { "sha1": "bc14df6666853ed869d7b88aaa864111c65d0c7f", "sha256": "104mwhda4k9mw7qdszxrzha1idy9yqsidssw4ljf4m58l3rpgkhl" @@ -951,10 +659,6 @@ { "path": "org/clojure/core.async/1.5.648/core.async-1.5.648", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "8b0935d4b1f04ce72d4a37664111292a7997f97c", - "sha256": "1b11p0x171w2nz7ccp8nd1ydpi2ms01xdxkd5gqdqgdzkwahq6lk" - }, "jar": { "sha1": "134b1e0eac15fdd1718f8a8ddacbb0902961558f", "sha256": "0b1krpckkc6ai85h32mfs3v7awgjcld38s7nwbklmjf7pxpv1fjd" @@ -964,10 +668,6 @@ { "path": "org/clojure/core.cache/1.0.225/core.cache-1.0.225", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "f5331187dbd5784553cd432eb41159b868d0bc54", - "sha256": "0ggl0kzl42zq6c6wnrlh8k57k9qry644j39rg3j97wzyggv43qrr" - }, "jar": { "sha1": "ddd58c0d29cf1515d13351cc0770634ecac884f0", "sha256": "1cd5yrlm80fqpjs0461isx57s0ymmgxwi0iqm7cdnp6sgsaally1" @@ -977,10 +677,6 @@ { "path": "org/clojure/core.memoize/1.0.253/core.memoize-1.0.253", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "ab3aa6203bb67af426099b8fcd44880c3b1d712f", - "sha256": "1b2yj8s2l8ywsnw7f3jq61xr8vjkpp4yr9j11kjc38rclfvzmhl4" - }, "jar": { "sha1": "bfa3ac940d93d50a14e4301b4cf8295e451b97c4", "sha256": "1mhy3s8yjzyx47042za3b1d3nmp1bcqk83d2s30jdcra322hb4aa" @@ -990,10 +686,6 @@ { "path": "org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "e9336ac820c5a7e07fe0aa431df981cbab6db3e3", - "sha256": "07q9qmxc7ggaxh27imgs34svn4j269rhslbnrs63ahrqzk5bmqlf" - }, "jar": { "sha1": "0404feea925608b921b56acd11d3b187a0d33fe4", "sha256": "13hkx1285f2imqlj6wbgyxki2yg8rmfr49iq1zijxm1cgfx8xyai" @@ -1003,10 +695,6 @@ { "path": "org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "561e998206e7d7facfb711bd467f72bb137046ad", - "sha256": "03ihgl3x8rsv533faxjvz04nisqvkn8rvgjlh05mj65x738vny0p" - }, "jar": { "sha1": "a2a7ea21a695561924bc8506f3feb5d8c8f894d5", "sha256": "1j6bsr1blcps3gw18d0jx538rg41jr1l7r37hlamrr5vf30aivh6" @@ -1016,10 +704,6 @@ { "path": "org/clojure/data.json/2.4.0/data.json-2.4.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "a5d68f02324c977919255ae29d6ee9fafa12692a", - "sha256": "1x0cg318jk8ddmpm2z5lqzxdxrbxj7x1naj9v1m6c5xm2w7sfbm4" - }, "jar": { "sha1": "d779823f78d614897df79cd1823cb1cef840fa5b", "sha256": "1pva908ndg2havnxyljipsbmqpwca6jjni9w64hd9v8y9scjygzc" @@ -1029,10 +713,6 @@ { "path": "org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "9a13dafcdcb8c97aa8516a4be63a5fccb481206d", - "sha256": "1znzylxfc43r26nlj2j2mz7h5yrgqvn0panp1y78dn2n9zwh0lj6" - }, "jar": { "sha1": "fc412d06788c1ea186117f8ea656d44fba654788", "sha256": "0k3gxah05i1pgfqvqx2sc7v2yh3na3jiv1zkcvyin3zsf92aylgy" @@ -1042,10 +722,6 @@ { "path": "org/clojure/google-closure-library/0.0-20230227-c7c0a541/google-closure-library-0.0-20230227-c7c0a541", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "79191fc01083724dd96eb482bb2736c36d641f24", - "sha256": "0xbmc87q395m91cdbcshfm9alz8hqhwp1q8861dgsqdhlrl6xpv1" - }, "jar": { "sha1": "533ce2bdbb7925db781449abb6527af1e6c5e782", "sha256": "0js19lw8bp9gym3pn47h867vhf65j18qc6x1pfn883vkwyasm18l" @@ -1055,10 +731,6 @@ { "path": "org/clojure/google-closure-library-third-party/0.0-20230227-c7c0a541/google-closure-library-third-party-0.0-20230227-c7c0a541", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "98206f2b09703fe8e37236ce2b54799c78e19a3d", - "sha256": "0mgh8bmc4hx89ix79glp3yspgscpxqz2pa1i46rzbvsm6pp765bn" - }, "jar": { "sha1": "f5ea82eb1309b81ada6a14371bb848323c65e38b", "sha256": "0jk9v4bfrxvz6wq1s86msry2mf47nwcjfplnn41yabqc44g82hva" @@ -1068,10 +740,6 @@ { "path": "org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "140a45467a1a6bc624dccdbc41115907609a33f9", - "sha256": "0n07x6gid7hkrgqkkfba3h1pfc47z4pmc2grbw67cxf8796f33bd" - }, "jar": { "sha1": "a7dad492f8d6cf657d82dcd6b31bda0899f1ac0e", "sha256": "1q5ax2bkpsz11lmqnrl7pnabjsrps62xsyajlmbsjrjwnn78kv37" @@ -1081,10 +749,6 @@ { "path": "org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "663c6280c3e5718c9f9c7f6235d9e7f94b532a1e", - "sha256": "01mpr6fyfxb8fx33c1wz8vpl2n7iddfl3vnhjifa6q97p4pp281p" - }, "jar": { "sha1": "692882a35d7b50947d6e4852fba8a51d8d5e3646", "sha256": "08fzw3srrppgq1d11sh1ghnyvi24ixa10kbqsncc7xyx7fybcs0k" @@ -1094,10 +758,6 @@ { "path": "org/clojure/tools.analyzer.jvm/1.2.2/tools.analyzer.jvm-1.2.2", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "d4c16b3f34d7f4d425e5c5d6852be52a13470fce", - "sha256": "0iwgn1xsc2snzs49h5gjd6p9nx7b88lz7pny37n5fg1s8kms5q8h" - }, "jar": { "sha1": "449691b55d7d526258ce02c69b4699f2897c494d", "sha256": "0phfs1z1scvdi00348zjh223xncmgrkmlrnbca4dh7lk701gy34i" @@ -1107,10 +767,6 @@ { "path": "org/clojure/tools.cli/1.0.206/tools.cli-1.0.206", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "2931f17ef36a5ba5e550b07d5876bd59967715d5", - "sha256": "17pl72xxpc5m0a06x26bli3jmxxs5m85dc2qd70zgjdmi85ws07x" - }, "jar": { "sha1": "5341b1ff68ec84e4ecff14c3611f81d36dba1041", "sha256": "05pns6pzb9kkpknicabk2wdbiv4hi9wyr3w99aafmf8r35lx55vb" @@ -1120,10 +776,6 @@ { "path": "org/clojure/tools.logging/1.1.0/tools.logging-1.1.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "44b6bd9ac74cb5e2254e1f0b258d53c1829b865d", - "sha256": "093jy29w5gm9rp9va6qlhb6096jpf5higyk7sgmbwb5nf53qi3qb" - }, "jar": { "sha1": "84cb5d00caa9df2ee504d46f6107f4708271f619", "sha256": "0x2zzivn38z179lxkw9wbi9n9qwsf466lrd9y27khdz7wbxhscb5" @@ -1133,10 +785,6 @@ { "path": "org/clojure/tools.macro/0.1.5/tools.macro-0.1.5", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "6a01a15b02728d2aab47c2cc07b05b07d4003b95", - "sha256": "0cfv243i97r38kay3rmwf9j2gk9f646bifgsl4byi3m5gps98q3h" - }, "jar": { "sha1": "925e200c906052e462e34a2c7e78a48ffec1dec4", "sha256": "0j428ic8aazgv9s27820ybnsmgwfv7j8ywpkxs72dych9hlxf517" @@ -1146,10 +794,6 @@ { "path": "org/clojure/tools.reader/1.3.6/tools.reader-1.3.6", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "25138a6f03c82b85464b0f1275982f07a949b224", - "sha256": "1shbjafy9l9mbkps0pljd5bhqd7z2259ynzlb0f4mcbwif1fxxdf" - }, "jar": { "sha1": "927809dcb44fa726e4969d993e3e733636d95ebb", "sha256": "1q5q7fmshybvp55f6qys8i5sbzfaix5v9f9b55dkbhv55hgv7l8i" @@ -1159,10 +803,6 @@ { "path": "org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "af3b2b71de5691126a16d00e3155576dcaa1e3dc", - "sha256": "03ysag9wb2binc8r7nkwhpsw97sdfhhg6isydba3apy4x1prbcas" - }, "jar": { "sha1": "d9a09f7732226af26bf99f19e2cffe0ae219db5b", "sha256": "0qk19ja8zv4jdxcmw4krcdax1j4iham9gszmjc7vp66hmwqi5drz" @@ -1172,10 +812,6 @@ { "path": "org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "9d82f8eea1b5ed484775517d7588e320f9f7797a", - "sha256": "1fcjr8qlilsqhmlcqzayhhkjs4dvr4i62i9kga0a8gmc2q7g84gp" - }, "jar": { "sha1": "40fd4d696c55793e996d1ff3c475833f836c2498", "sha256": "1f7f4kjn3v6vibhgsr3k8hl0r2xq0c2rbcl82dx0bqg5jdyqgzlf" @@ -1185,10 +821,6 @@ { "path": "org/jboss/threads/jboss-threads/3.1.0.Final/jboss-threads-3.1.0.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "95a6983bf04ecc982595c0f940a129943589d29f", - "sha256": "0gr3wmgj8am99r4jprspz9v11nqxgd7xcmaz27i8sxvhk32dfqcb" - }, "jar": { "sha1": "9b260c0302f637a84a52d3d118214a3c59217615", "sha256": "0yc0p71y7yjhqjhkvqqi9xqgljavp3aslnik2k7dppbxnkrnlff9" @@ -1198,10 +830,6 @@ { "path": "org/jboss/xnio/xnio-api/3.8.0.Final/xnio-api-3.8.0.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "96d871c0d3cc7db4f0937ce7d74529eae287e1e0", - "sha256": "0zfs8pai9fy12v6kal1yspi8kz2fwgx63idl7ff5a80z779ra6z5" - }, "jar": { "sha1": "e2c29acf42ac6f42c34f0b74ba089e3f3d1b2394", "sha256": "041qnvb74bkgmfxyd23vdl26il55cmfbhi6a4bm3fcmyrpapjfjl" @@ -1211,10 +839,6 @@ { "path": "org/jboss/xnio/xnio-nio/3.8.0.Final/xnio-nio-3.8.0.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "65b3bca2f547f1e7c9cc2b0e9f108c48c47bf295", - "sha256": "0yg6giqq33n9lwz4g5z3bw50jl61v03widfvfib45gizxpgxbanl" - }, "jar": { "sha1": "90c57dcf7f8c846b4da331d0e6e048c39842c92a", "sha256": "1zndnb5648wqw23gj80zjqk3yd8gq6grqhz9n4zrcqixx1z586jf" @@ -1224,10 +848,6 @@ { "path": "org/jsoup/jsoup/1.9.2/jsoup-1.9.2", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "72f6a64cd9cd47bb7aba05c84b9935650a098998", - "sha256": "0zh9xn8qcgjyhki5kbhb3rhbhd12avwqy6n9fqfzymdq3c41k8lk" - }, "jar": { "sha1": "5e3bda828a80c7a21dfbe2308d1755759c2fd7b4", "sha256": "0sm4s1a8plb8z5467799jvp0s37dr98q82z3y436w9c2n7qqa64w" @@ -1237,10 +857,6 @@ { "path": "org/jspecify/jspecify/0.2.0/jspecify-0.2.0", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "ca1feb3958e71984f65890acd328cb9168a4f7cb", - "sha256": "1m66wlrrnacdgs57agrry65y9z0478zf2v57h4j3lz6wcp275lqk" - }, "jar": { "sha1": "89ca55e02b85c959bd0c4c0c13a0b1885829af44", "sha256": "1bn0nw88v70i4sqxlfl3jsmfi0180426kh77dx07955ysbl9k8vx" @@ -1250,10 +866,6 @@ { "path": "org/msgpack/msgpack/0.6.12/msgpack-0.6.12", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "92138e8a6a64f25d226b6244f80dc22154d79fa7", - "sha256": "1vkd0p2rb1pdxh963235mkczamqg05p17mdplmcq3ppq0a7psjcl" - }, "jar": { "sha1": "6a0c88fe022993c490011c3dce7127b29f9a9b3b", "sha256": "0plvpp9ra9848sb3psx2yi0gvk5gm146hhnwln08wj10hmfsd770" @@ -1263,10 +875,6 @@ { "path": "org/ow2/asm/asm/9.4/asm-9.4", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "91bffd75aa63f199ab1a97746ae563d6099890b9", - "sha256": "1513k0r5vs96bbdjzz6q6c1xqvj6z87v0fmdc4yg9ldjizj52ds8" - }, "jar": { "sha1": "b4e0e2d2e023aa317b7cfcfc916377ea348e07d1", "sha256": "10gk2l71sfj4d0sgj971abh2d8cl19slay89kfh6bbs5vjry5l1r" @@ -1276,10 +884,6 @@ { "path": "org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "749f6995b1d6591a417ca4fd19cdbddabae16fd1", - "sha256": "1116vkg10llq7ljvs3764n5fnwypnp42fb8wn65r4dwl4af6l17v" - }, "jar": { "sha1": "6c62681a2f655b49963a5983b8b0950a6120ae14", "sha256": "1h512ry8g0nriazg3dqzs6s96502a77drw8vq26nfya97rg5gvyk" @@ -1289,10 +893,6 @@ { "path": "org/wildfly/client/wildfly-client-config/1.0.1.Final/wildfly-client-config-1.0.1.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "a70bef747156afdade33d9ece12f09e97c0bec77", - "sha256": "19mw1damqz6315ima64zhc16mf5jbg63zlr65whnfk8dcm6d2xg8" - }, "jar": { "sha1": "2a803b23c40a0de0f03a90d1fd3755747bc05f4b", "sha256": "1crv5kxfsbkmcfw504yqhzf26zrjgpkw1wmhxi1v1swlrriyk940" @@ -1302,10 +902,6 @@ { "path": "org/wildfly/common/wildfly-common/1.5.2.Final/wildfly-common-1.5.2.Final", "host": "https://repo1.maven.org/maven2", - "pom": { - "sha1": "c1b29b7e5445a2c0f4513155e70dade1ab24b04c", - "sha256": "0ab6aq17fc5smn30jb9g84lpg4ssy77lhq3z1xwc5p1rf35yfq5r" - }, "jar": { "sha1": "8eba40cfe86bcfcc223551e75201e6e7574c7c36", "sha256": "17rkkm9dqbxdzpamwl9jr8z285awsj6hzpavzmc87wcz9469hp5b" @@ -1315,10 +911,6 @@ { "path": "prismatic/schema/1.1.7/schema-1.1.7", "host": "https://repo.clojars.org", - "pom": { - "sha1": "d5bb7edbd1830e6400705c2b5797ced1737fb208", - "sha256": "0bmnmx53kjlcxx477wm7xvcnaf2vi95rr164xi49611kfbhh2dsd" - }, "jar": { "sha1": "289b571f1cbab59aef436fc0af56e7efc5322685", "sha256": "01zc13qhkyghhr4s1if9agbgz38gvrg8x62gn1g8fjll9nq7aca9" @@ -1328,10 +920,6 @@ { "path": "quoin/quoin/0.1.2/quoin-0.1.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "cdabd1b76f3a86c59260cd25be534a0a5b67c302", - "sha256": "0wv7m5l9hafc0ysxg7g7fqmdq94dxmv13cj37il69wvagqskarhc" - }, "jar": { "sha1": "0dbbb28df3e337233f934468915eb327ff488172", "sha256": "0b5rc1cmbgg8qpl80jyvh0ldgs7dv86c0qxixazdnz05limmnpb5" @@ -1341,10 +929,6 @@ { "path": "reagent/reagent/1.2.0/reagent-1.2.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "d2279922777793edfc0ae9e01d68a832eb5ce52d", - "sha256": "1h1gk4cykidm1jx75dq426lrgf8r7900fcir5jz59zp1ka2a0ywb" - }, "jar": { "sha1": "1b9a181b5c7ed3557768d2ea0c66f5616aef5e97", "sha256": "0scvkzfqjs613z10rngh7427v3pxdqablf0fcl65pbpkzz16wgav" @@ -1354,10 +938,6 @@ { "path": "re-com/re-com/2.8.0/re-com-2.8.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "50f13ab5d6d151b713d83a480aadb27daeae1c9e", - "sha256": "0yy5p9wvrikk2rz33xi75m10dzzcbvzb8ixcfgdb6czjbaj7mdln" - }, "jar": { "sha1": "fd038eef3c36c460613e94f2c70fc84c6eb35a66", "sha256": "0r431yq5hf8zc4j2k3lsi3vni60kk8ncinqrb7xv2qcyjw4qh178" @@ -1367,10 +947,6 @@ { "path": "refactor-nrepl/refactor-nrepl/2.5.0/refactor-nrepl-2.5.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "0bce30b420249ba7e4b90cbb3e046b4bb5416389", - "sha256": "0zmg5qc8d55pry7832isiwd2q237znfjqjpxchd2hvlpalh5qnva" - }, "jar": { "sha1": "6bc3441afc94f7ca024e41a864ca75e05df7e207", "sha256": "0w8hax99y98l53mixxzx2ja0vcnhjv8dnsaz1zj3vqk775ns5w6i" @@ -1380,10 +956,6 @@ { "path": "re-frame/re-frame/1.3.0/re-frame-1.3.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "b1f70463fba018c5464d3fc0843232fe955c1372", - "sha256": "0yqq1kg1si0akr7kx7w1l4vvkdai20na6h6627ibqkgwzivkc5n5" - }, "jar": { "sha1": "b7135a76432b8141027ba1f4eb6bb15a36acfb7c", "sha256": "16wi01z0j4wn04kldwzxvj0pd9dianjyb000nv5611ikhxk1qrps" @@ -1393,10 +965,6 @@ { "path": "re-frisk-remote/re-frisk-remote/1.6.0/re-frisk-remote-1.6.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "6b39ea7b345a81df08b80b411f9892b83f61890b", - "sha256": "0w577jvb7vgrdp29rfp85lvq3h3svycm6f0h29ln23j2qisqs7a8" - }, "jar": { "sha1": "dea48c4be6421c50c4bbf2c1be2ea3a6b2418d8d", "sha256": "1rkfyc5fwbafx56a6zhy0k9ygmlxp9asqzby09a5xzjsmkrx2jf1" @@ -1406,10 +974,6 @@ { "path": "re-frisk/sente/1.15.0/sente-1.15.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "4d11dff4814d1e90a548de53b373928123f74247", - "sha256": "1d2kvcf43mi9cp9ribrapgdvwmpwkq492nnsxkhdgfxyxh8cq270" - }, "jar": { "sha1": "d54aa873a848f624a282c2c2f7df947c976a77b5", "sha256": "0yhsqpi3d8x11pl1aq8z23fdyjspvq07dsyvrlkpbyx7rm64i21h" @@ -1419,10 +983,6 @@ { "path": "ring-cors/ring-cors/0.1.8/ring-cors-0.1.8", "host": "https://repo.clojars.org", - "pom": { - "sha1": "b59382655c98377c9280fe227c442e2705088ad8", - "sha256": "0qpagym9im5fjx1jmwc56abz4a9fpy7w4m0isv2lcbczy3g29k8i" - }, "jar": { "sha1": "4788dcaca6b2429bf823c1235dbb44cd5689584a", "sha256": "1382hxpgfpjdn0lcgq512yvbvq661skwd7lrakpnq9zs827jq9mc" @@ -1432,10 +992,6 @@ { "path": "ring/ring-codec/1.2.0/ring-codec-1.2.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "7ea08ae164a2464407a31ad26ffd4a819274471b", - "sha256": "1knsx5n9d803z0b459axpfqx0dqq9nvj1i94zdk8z3xkh8rfkvbm" - }, "jar": { "sha1": "fbcc4a141c638a3bd386df8ed04c05d0481be209", "sha256": "1hk58ln4vijf5zk2c61x8is5fhwgyrqhc49qnxbmn1b2002svn3g" @@ -1445,10 +1001,6 @@ { "path": "ring/ring-core/1.9.6/ring-core-1.9.6", "host": "https://repo.clojars.org", - "pom": { - "sha1": "70cbd181fb0840cd86bf2c0e5feda4c9988b6c3f", - "sha256": "0ral997rb95yclzh1myasmd33zy8gj0b7jyzyj49l23499dmj9yc" - }, "jar": { "sha1": "8ca97618f914401c4112e2fd28d24d47c4fc2815", "sha256": "1zj5dpcyvivvf7zsggvrd75ykr98pblv3bpfr01jbkwjwx1s2d4a" @@ -1458,10 +1010,6 @@ { "path": "status-im/timbre/4.10.0-2-status/timbre-4.10.0-2-status", "host": "https://repo.clojars.org", - "pom": { - "sha1": "a0ada642eec4fc748cc52988754ad5cdfa1865b1", - "sha256": "1h7hhxq1kqpm2g0sk811zigi8c66si72l141gh964ly4pldpc940" - }, "jar": { "sha1": "e630bd13a422d7dbedeeb26f17aca0a473a9e5d3", "sha256": "1ipakbl438xkj1qhp6lrmjk25vihk15v86k69qba4ny7i0jhyj21" @@ -1471,10 +1019,6 @@ { "path": "thheller/shadow-client/1.3.3/shadow-client-1.3.3", "host": "https://repo.clojars.org", - "pom": { - "sha1": "90634d975a4dd78a30d147c80bc381d8a9f5dff9", - "sha256": "0v5qf5aavp9q5i92q943qphsfa40al8q8b4j98i1pymy05al9rrl" - }, "jar": { "sha1": "cb2034364161b68d1994d374eb59d6d2b0613989", "sha256": "13avr26yxns3kcab46anf5z4lxmyn72qydvgppvv26vcf77acx0p" @@ -1484,10 +1028,6 @@ { "path": "thheller/shadow-cljs/2.25.0/shadow-cljs-2.25.0-aot", "host": "https://repo.clojars.org", - "pom": { - "sha1": "90c4338b4f9635264358477f1b918f3b3d842073", - "sha256": "1jpb5nwz906lyg57pd69xhh02k89iwiplqqzl4prwp0l9zq75d2y" - }, "jar": { "sha1": "013921db91ce4a3616aec9c72c1832a014a0fece", "sha256": "0ks380z7h8i2ylirvjgmlicq9jjpz9w71gjv521h4xs5fb273cl0" @@ -1497,10 +1037,6 @@ { "path": "thheller/shadow-cljsjs/0.0.22/shadow-cljsjs-0.0.22", "host": "https://repo.clojars.org", - "pom": { - "sha1": "16882933bd9f93459b983ae58ca8e122fe4ea779", - "sha256": "1sa99yzr7b99rjvs8gc374jf6yi4h8100nd6h3xkhdz9myhjfqyz" - }, "jar": { "sha1": "4323f8e603a952cae34c4c6db04141e97928434f", "sha256": "1bljcig3hkn1nhfbg2w6apz8lwm8qk74qcwd8l2mbw1plfxa0fzn" @@ -1510,10 +1046,6 @@ { "path": "thheller/shadow-undertow/0.3.1/shadow-undertow-0.3.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "e3c8f408c30298fe94b7e6658789fae876b25d0f", - "sha256": "0sihv9ik9qbbzx2zzws45ffrzdvdh30z5n4nbqhnwxjfz9s240ia" - }, "jar": { "sha1": "9be444bea4037bb80b451cc52a8e80359c4c45be", "sha256": "174s2rdxvp7d4jg9kvzjadps42bdsbi05rs2pjy5i0ssq9n23zwa" @@ -1523,10 +1055,6 @@ { "path": "thheller/shadow-util/0.7.0/shadow-util-0.7.0", "host": "https://repo.clojars.org", - "pom": { - "sha1": "a32192757c81c784866bbe0f07d40fc3e9595190", - "sha256": "1y20asa5pvfsilqyli2l8v3dfh62wlygqcy5qvc22w0npnl0p7l8" - }, "jar": { "sha1": "61a374c204d797a92d9daeb4b8d9effeb0d81183", "sha256": "10fdbqrz7zcfan8x4aikl2i532dk9dz0dfxrww91mgynf0g90rp5" @@ -1536,10 +1064,6 @@ { "path": "tigris/tigris/0.1.2/tigris-0.1.2", "host": "https://repo.clojars.org", - "pom": { - "sha1": "a630ae71c92c71eb0926a826ba9d9570569b840e", - "sha256": "1874zfm35hwsxnld5fib88ascdayzwza7rknmvadq83mb41mkm8z" - }, "jar": { "sha1": "a122db758561d995a83cbb40f252b64d8b0f506e", "sha256": "184p1wqcc6ikj9gpaygv4f1mf1p6mqg3j6x1jmqfa53cvf769aj9" @@ -1549,10 +1073,6 @@ { "path": "viebel/codox-klipse-theme/0.0.1/codox-klipse-theme-0.0.1", "host": "https://repo.clojars.org", - "pom": { - "sha1": "5e1a00ea2bbdfc8cae4083c41e12be5cf89c1449", - "sha256": "1qxd30dl06yahcgqnypnc71mhqzijpmnq9imybbkbvzk65i6y4r8" - }, "jar": { "sha1": "09af0b348e6253dcf9fd567d0d22ffebdea46176", "sha256": "1qg2iyblykfkzmplc2c46916b9m0h5ad6lxmvrk5qn3pdxqr8vw0" From 9078c3b61bd34af3c6be6a5edf861bed6df9d8ca Mon Sep 17 00:00:00 2001 From: Icaro Motta Date: Fri, 13 Oct 2023 17:10:38 +0000 Subject: [PATCH 13/13] Composer - Link previews - Adjust for upcoming API breaking changes in status-go (#17573) Adapt the JSON RPC response to the new shape returned by `wakuext_unfurlURLs` on v0.170.0. The changes were introduced PR https://github.com/status-im/status-go/pull/4033. There are no behavioral changes in the API as far as mobile is concerned at the moment. --- .../chat/composer/link_preview/events.cljs | 2 +- .../composer/link_preview/events_test.cljs | 18 ++++++++++-------- status-go-version.json | 6 +++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/status_im2/contexts/chat/composer/link_preview/events.cljs b/src/status_im2/contexts/chat/composer/link_preview/events.cljs index 5e1ce194588..806ee9dff0c 100644 --- a/src/status_im2/contexts/chat/composer/link_preview/events.cljs +++ b/src/status_im2/contexts/chat/composer/link_preview/events.cljs @@ -82,7 +82,7 @@ (rf/defn unfurl-parsed-urls-success {:events [:link-preview/unfurl-parsed-urls-success]} - [{:keys [db]} request-id new-previews] + [{:keys [db]} request-id {new-previews :linkPreviews}] (when (= request-id (get-in db [:chat/link-previews :request-id])) (let [new-previews (map data-store.messages/<-link-preview-rpc new-previews) curr-previews (get-in db [:chat/link-previews :unfurled]) diff --git a/src/status_im2/contexts/chat/composer/link_preview/events_test.cljs b/src/status_im2/contexts/chat/composer/link_preview/events_test.cljs index ddff60844e7..6ea012fbb65 100644 --- a/src/status_im2/contexts/chat/composer/link_preview/events_test.cljs +++ b/src/status_im2/contexts/chat/composer/link_preview/events_test.cljs @@ -139,7 +139,7 @@ {:request-id request-id :unfurled [] :cache {}}}}] - (is (nil? (events/unfurl-parsed-urls-success cofx "banana" [preview-github]))))) + (is (nil? (events/unfurl-parsed-urls-success cofx "banana" {:linkPreviews [preview-github]}))))) (testing "reconciles new previews with existing ones" (let [cofx {:db {:chat/link-previews @@ -147,9 +147,10 @@ :unfurled [preview-github {:url url-gitlab :loading? true}] :cache {url-github preview-github}}}} - {db :db} (events/unfurl-parsed-urls-success cofx - request-id - [preview-gitlab])] + {db :db} (events/unfurl-parsed-urls-success + cofx + request-id + {:linkPreviews [preview-gitlab]})] (is (= {:chat/link-previews {:request-id request-id :unfurled [preview-github preview-gitlab] @@ -165,10 +166,11 @@ preview-youtube {:url url-gitlab :loading? true}] :cache {(:url preview-youtube) preview-youtube}}}} - {db :db} (events/unfurl-parsed-urls-success cofx - request-id - [preview-github - preview-youtube])] + {db :db} (events/unfurl-parsed-urls-success + cofx + request-id + {:linkPreviews [preview-github + preview-youtube]})] (is (= {:chat/link-previews {:request-id request-id :unfurled [preview-github preview-youtube] diff --git a/status-go-version.json b/status-go-version.json index b7abc6385d7..0ba75ca5d6a 100644 --- a/status-go-version.json +++ b/status-go-version.json @@ -3,7 +3,7 @@ "_comment": "Instead use: scripts/update-status-go.sh ", "owner": "status-im", "repo": "status-go", - "version": "v0.168.1", - "commit-sha1": "9034f0a984601d71e40d0aa846fbc5e4d01017cd", - "src-sha256": "1niics10a0p3dnlfr011sqf5prrjilv6kjplnc2c51q2pw6fv35h" + "version": "v0.170.0", + "commit-sha1": "aded258ccb68f88dc995e22f8b4e06157bb642db", + "src-sha256": "1wdc814yx6qam2ngrh119hm63bgjigqi4cpiawy2i0ywk47qwdbg" }