parent
e493a2b79c
commit
9648f741b4
|
@ -31,7 +31,7 @@ reagent.dom/dom-node
|
|||
reagent.dom/force-update-all
|
||||
status-im.multiaccounts.create.core/get-new-key-code
|
||||
status-im.ethereum.decode/string
|
||||
status-im.network.ui.views/mainnet?
|
||||
status-im.ui.screens.network.views/mainnet?
|
||||
status-im.data-store.chats/event->string
|
||||
status-im.mailserver.constants/seven-days
|
||||
status-im.mailserver.constants/connection-timeout
|
||||
|
@ -65,7 +65,7 @@ mocks.js-dependencies/emoji-picker
|
|||
mocks.js-dependencies/i18n
|
||||
mocks.js-dependencies/qr-code
|
||||
mocks.js-dependencies/svg
|
||||
mocks.js-dependencies/vector-icons
|
||||
mocks.js-dependencies/icons
|
||||
mocks.js-dependencies/webview
|
||||
mocks.js-dependencies/desktop-linking
|
||||
mocks.js-dependencies/desktop-shortcuts
|
||||
|
|
|
@ -54,7 +54,6 @@ Core namespace must only contain functions that can be called outside of the mod
|
|||
|
||||
### db.cljs
|
||||
|
||||
- must contain specs for the app-db subpart the module modifies
|
||||
- must contain getter and setter functions used by fx producing functions and subscriptions
|
||||
- db logic called by other modules
|
||||
|
||||
|
@ -72,21 +71,8 @@ These guidelines make db.cljs namespaces the place to go when making changes to
|
|||
|
||||
### Events
|
||||
|
||||
- all events must be defined in the single `status-im.events` namespace which can be considered as an index of everything going on in the app
|
||||
- events must always be declared with `register-handler-fx`, no `register-handler-db`
|
||||
- events must never use the `trim-v` interceptor
|
||||
- events must only contain a function call defined in a module
|
||||
```clojure
|
||||
(handlers/register-handler-fx
|
||||
:notifications/handle-push-notification-open
|
||||
(fn [cofx [_ event]]
|
||||
(notifications/handle-push-notification-open event cofx)))
|
||||
```
|
||||
- events must use synthetic namespaces:
|
||||
|
||||
- `:module.ui/` for user triggered events
|
||||
- `:module.callback/` for callback events, which are events bringing back the result of an fx to the event loop, the name of the event should end with `-success` or `-error` most of the time. Other possibilities can be `-granted`, `-denied` for instance.
|
||||
- `:module/` for internal events, examples are time based events marked `-timed-out`, external changes marked `-changed` or reception of external events marked `-received`.
|
||||
- all events must be defined in the `core.cljs` namespaces
|
||||
- events must always be declared with `fx/defn` macro
|
||||
|
||||
## Testing flow
|
||||
- All PRs automatically go to "REVIEW" column on [Pipeline for QA](https://github.com/status-im/status-react/projects/7) project on Github. This is our main board for QA / devs interaction
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
`cd fiddle`
|
||||
|
||||
`yarn install`
|
||||
|
||||
`clj prepare.clj`
|
||||
|
||||
`clj -A:dev`
|
|
@ -1,17 +0,0 @@
|
|||
{:deps {org.clojure/clojurescript {:mvn/version "1.10.520"}
|
||||
com.bhauman/figwheel-main {:mvn/version "0.2.0"}
|
||||
org.clojure/core.async {:mvn/version "0.4.474"}
|
||||
reagent {:mvn/version "0.8.1" :exclusions [cljsjs/react cljsjs/react-dom]}
|
||||
re-frame {:git/url "https://github.com/status-im/re-frame"
|
||||
:sha "b0d3b0f016f217c6a397a54e5eba9486471fb172"
|
||||
:deps/manifest :deps}
|
||||
com.andrewmcveigh/cljs-time {:mvn/version "0.5.2"}
|
||||
status-im/timbre {:mvn/version "4.10.0-2-status"}
|
||||
com.taoensso/encore {:mvn/version "2.94.0"}
|
||||
hickory {:mvn/version "0.7.1"}
|
||||
cljs-bean {:mvn/version "1.3.0"}}
|
||||
|
||||
:paths ["src" "../src" "resources" "target" "../resources"]
|
||||
|
||||
:aliases {:dev {:extra-deps {re-frisk {:mvn/version "0.5.4.1"}}
|
||||
:main-opts ["-m" "figwheel.main" "-b" "dev" "-r"]}}}
|
|
@ -1,10 +0,0 @@
|
|||
{:main fiddle.core
|
||||
:output-to "resources/public/js/main.js"
|
||||
:preloads [re-frisk.preload]
|
||||
:infer-externs true
|
||||
:npm-deps false
|
||||
:foreign-libs [{:file "dist/index_bundle.js"
|
||||
:provides ["react" "react-dom" "react-native-web"]
|
||||
:global-exports {react React
|
||||
react-dom ReactDOM
|
||||
react-native-web ReactNativeWeb}}]}
|
File diff suppressed because one or more lines are too long
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"react": "^16.9.0",
|
||||
"react-dom": "^16.9.0",
|
||||
"react-native-web": "^0.11.6",
|
||||
"webpack": "^4.39.2",
|
||||
"webpack-cli": "^3.3.6"
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
(ns prepare
|
||||
(:require [clojure.string :as str]
|
||||
[clojure.java.io :as io]))
|
||||
|
||||
;;TODO copy dirs to have images
|
||||
;(io/copy (io/file "../resources/images") (io/file "./resources/public/images"))
|
||||
|
||||
(let [fls (file-seq (java.io.File. "../android/app/src/main/res/drawable-mdpi"))]
|
||||
(spit "./resources/public/icons.edn"
|
||||
(pr-str
|
||||
(remove nil?
|
||||
(map
|
||||
(fn [fl]
|
||||
(let [n (first (str/split (.getName fl) #".png"))]
|
||||
(when (.isFile fl)
|
||||
(io/copy (io/file (.getPath fl)) (io/file (str "./resources/public/" (str/replace n #"_" "-"))))
|
||||
(str/replace n #"_" "-"))))
|
||||
fls)))))
|
|
@ -1,25 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<meta content="ie=edge" http-equiv="x-ua-compatible" />
|
||||
<title>Fiddle</title>
|
||||
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
||||
|
||||
<style>
|
||||
@import url('https://rsms.me/inter/inter.css');
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" class="app"></div>
|
||||
<script src="js/main.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
fiddle.core.init();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,17 +0,0 @@
|
|||
(ns ^:figwheel-hooks fiddle.core
|
||||
(:require [reagent.core :as reagent]
|
||||
[re-frame.core :as re-frame]
|
||||
[fiddle.views.main :as main]
|
||||
fiddle.subs
|
||||
fiddle.events))
|
||||
|
||||
(defn mount-root []
|
||||
(reagent/render [main/main] (js/document.getElementById "app")))
|
||||
|
||||
(defn ^:export init []
|
||||
(re-frame/dispatch-sync [:initialize-db])
|
||||
(re-frame/dispatch [:load-icons])
|
||||
(mount-root))
|
||||
|
||||
(defn ^:after-load on-reload []
|
||||
(mount-root))
|
|
@ -1,33 +0,0 @@
|
|||
(ns fiddle.events
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[cljs.reader :as reader]))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
:initialize-db
|
||||
(fn [_ _]
|
||||
{:db {:view-id :colors}}))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:load-icons-fx
|
||||
(fn []
|
||||
(let [cl (js/XMLHttpRequest.)]
|
||||
(.open cl "GET" "./icons.edn")
|
||||
(set! (.-onreadystatechange cl) #(when (= (.-status cl) 200)
|
||||
(re-frame/dispatch [:set :icons (reader/read-string (.-responseText cl))])))
|
||||
(.send cl))))
|
||||
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
:load-icons
|
||||
(fn [_ _]
|
||||
{:load-icons-fx nil}))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
:set
|
||||
(fn [{:keys [db]} [_ k v]]
|
||||
{:db (assoc db k v)}))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
:set-in
|
||||
(fn [{:keys [db]} [_ path v]]
|
||||
{:db (assoc-in db path v)}))
|
|
@ -1,13 +0,0 @@
|
|||
(ns fiddle.frame
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(def width 375)
|
||||
(def height 568) ;667
|
||||
|
||||
(re-frame/reg-sub :dimensions/window-width (fn [_] width))
|
||||
(re-frame/reg-sub :dimensions/window (fn [_] {:width width :height height}))
|
||||
|
||||
(defn frame [content]
|
||||
[react/view {:style {:width width :height height :border-color :black :border-width 1}}
|
||||
content])
|
|
@ -1,16 +0,0 @@
|
|||
(ns fiddle.snippets)
|
||||
|
||||
(defmacro code-snippet [code & [white?]]
|
||||
(let [show? (gensym 'show)]
|
||||
`[(fn []
|
||||
(let [~show? (reagent/atom false)]
|
||||
(fn []
|
||||
[react/view
|
||||
(when @~show?
|
||||
[react/text {:style {:font-family "monospace" :background-color :black :color "#44d058"
|
||||
:max-width 400 }}
|
||||
(with-out-str (cljs.pprint/pprint '~code))])
|
||||
[react/view {:align-items :flex-end :background-color (when-not ~white? colors/gray-lighter)}
|
||||
[react/touchable-highlight {:on-press #(swap! ~show? not)}
|
||||
[react/text {:style {:font-size 14 :color :blue :padding 3}} (if @~show? "Hide" "Code")]]]
|
||||
~code])))]))
|
|
@ -1,6 +0,0 @@
|
|||
(ns fiddle.subs
|
||||
(:require [re-frame.core :as re-frame]))
|
||||
|
||||
(re-frame/reg-sub :view-id (fn [db] (get db :view-id)))
|
||||
|
||||
(re-frame/reg-sub :icons (fn [db] (get db :icons)))
|
|
@ -1,38 +0,0 @@
|
|||
(ns fiddle.views.colors
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.colors :as colors]))
|
||||
|
||||
(defn color [name color color-name usage & [bg?]]
|
||||
[react/view {:margin 10 :padding 10 :border-radius 8 :background-color (when bg? colors/blue)}
|
||||
[react/text {:style {:typography :main-medium :color (when bg? colors/white)}} name]
|
||||
[react/view {:margin-vertical 24 :width 156 :height 156 :border-radius 80 :background-color color
|
||||
:border-width 1 :border-color colors/gray}]
|
||||
[react/text {:style {:color (when bg? colors/white)}} color-name]
|
||||
[react/text {:style {:color (when bg? colors/white)}} color]
|
||||
[react/text {:style {:margin-top 6 :color (if bg? colors/white-transparent colors/gray) :font-size 12}} usage]])
|
||||
|
||||
(defn colors-arr [title colors]
|
||||
[react/view
|
||||
[react/text title]
|
||||
[react/view {:flex-direction :row :flex-wrap :wrap :flex 1 :margin-vertical 24}
|
||||
(for [color colors]
|
||||
[react/view {:margin-left 10 :width 40 :height 40 :border-radius 20 :background-color color}])]])
|
||||
|
||||
(defn colors []
|
||||
[react/scroll-view
|
||||
[react/view {:flex-direction :row :flex-wrap :wrap :flex 1}
|
||||
[color "Accent Blue" colors/blue "blue" "Links, buttons"]
|
||||
[color "Light Blue" colors/blue-light "blue-light" "Button background"]
|
||||
[color "White" colors/white "white" "Background, icons"]
|
||||
[color "Dark Grey" colors/gray "gray" "Secondary text"]
|
||||
[color "Light Grey" colors/gray-lighter "gray-lighter" "Background, inputs, dividers"]
|
||||
[color "Black" colors/black "black" "Icons"]
|
||||
[color "Red" colors/red "red" "Errors"]
|
||||
[color "Green" colors/green "green" "Success"]
|
||||
[color "40% of Dark Grey" colors/gray-transparent-40 "gray-transparent-40" "Chevrons in lists (>) "]
|
||||
[color "10% of Black" colors/black-transparent "black-transparent" ""]
|
||||
[color "70% of White" colors/white-transparent-70 "white-transparent-70" "Secondary text on blue background" true]
|
||||
[color "40% of White" colors/white-transparent "white-transparent" "Chevrons in lists (>) on the\nblue background\nText in Wallet\n\n" true]
|
||||
[color "10% of White" colors/white-transparent-10 "white-transparent-10" "Backgrounds behind icons" true]]
|
||||
[colors-arr "Chat colors" colors/chat-colors]
|
||||
[colors-arr "Account colors" colors/account-colors]])
|
|
@ -1,16 +0,0 @@
|
|||
(ns fiddle.views.icons
|
||||
(:require-macros [status-im.utils.views :as views])
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.icons.vector-icons :as vector-icons]
|
||||
[status-im.ui.components.colors :as colors]))
|
||||
|
||||
(views/defview icons []
|
||||
(views/letsubs [icons [:icons]]
|
||||
(if icons
|
||||
[react/view {:flex-direction :row :flex-wrap :wrap :flex 1 :background-color colors/gray-transparent-40}
|
||||
(for [icon icons]
|
||||
[react/view {:padding 20}
|
||||
[react/text {:srtle {:margin-bottom 5}} icon]
|
||||
[vector-icons/icon icon]])]
|
||||
[react/view
|
||||
[react/text "To see all icons please run `clj prepare.clj` command in terminal"]])))
|
|
@ -1,214 +0,0 @@
|
|||
(ns fiddle.views.list-items
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.list-item.views :as list-item]
|
||||
[fiddle.frame :as frame]
|
||||
[status-im.ui.components.badge :as badge]
|
||||
cljs.pprint
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.button :as button])
|
||||
(:require-macros [fiddle.snippets :as snippets]))
|
||||
|
||||
(defn item [name content]
|
||||
[react/view
|
||||
[react/text {:style {:color colors/gray :margin-bottom 10 :margin-top 40}} name]
|
||||
[react/view {:background-color :white :width frame/width}
|
||||
content]])
|
||||
|
||||
(defn list-header []
|
||||
[react/view
|
||||
{:background-color colors/gray-lighter
|
||||
:flex 1
|
||||
:padding 20
|
||||
:flex-direction :row
|
||||
:flex-wrap :wrap}
|
||||
[react/view {:width 375}
|
||||
[react/view {:background-color :white}
|
||||
(snippets/code-snippet [list-item/list-item {:type :section-header :title "Header title"}])]]])
|
||||
|
||||
(defn list-items []
|
||||
[react/view
|
||||
{:background-color colors/gray-lighter
|
||||
:flex 1
|
||||
:padding 20
|
||||
:flex-direction :row
|
||||
:flex-wrap :wrap}
|
||||
[react/view {:margin-right 10}
|
||||
[item "Default with Image"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "George"
|
||||
:on-press #()
|
||||
:icon [react/view
|
||||
{:width 40
|
||||
:height 40
|
||||
:border-radius 20
|
||||
:background-color colors/green}]}])]
|
||||
[item "Default with Image, icon"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "George"
|
||||
:on-press #()
|
||||
:icon [react/view
|
||||
{:width 40
|
||||
:height 40
|
||||
:border-radius 20
|
||||
:background-color colors/green}]
|
||||
:accessories [:main-icons/more]}])]
|
||||
[item "With radio button (TODO!)"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "George"
|
||||
:on-press #()
|
||||
:icon [react/view
|
||||
{:width 40
|
||||
:height 40
|
||||
:border-radius 20
|
||||
:background-color colors/green}]}])]]
|
||||
[react/view {:margin-right 10}
|
||||
[item "Default wIth icon in circle"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Clear History"
|
||||
:theme :action
|
||||
:icon :main-icons/close
|
||||
:on-press #()}])]
|
||||
[item "Default wIth icon in circle, chevron"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Get a ENS username?"
|
||||
:icon :main-icons/address
|
||||
:on-press #()
|
||||
:accessories [:chevron]}])]
|
||||
[item "Default wIth icon in circle, chevron and accessory"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Contacts"
|
||||
:icon :main-icons/in-contacts
|
||||
:on-press #()
|
||||
:accessories [[react/text {:style {:color colors/gray}} "4"]
|
||||
:chevron]}])]
|
||||
[item "Default wIth icon in circle, chevron and badge"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Privacy and Security"
|
||||
:icon :main-icons/profile
|
||||
:on-press #()
|
||||
:accessories [[badge/badge "333"] :chevron]}])]
|
||||
[item "Default wIth icon in circle, switch"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Notifications"
|
||||
:icon :main-icons/notification
|
||||
:on-press #()
|
||||
:accessories
|
||||
[[react/switch {}]]}])]
|
||||
[item "Default wIth icon in circle, red"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Delete and Leave"
|
||||
:theme :action-red
|
||||
:icon :main-icons/delete
|
||||
:on-press #()}])]]
|
||||
[react/view {:margin-right 10}
|
||||
[item "Two lines with icon in circle, chevron"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "alex.stateofus.eth"
|
||||
:subtitle "ENS name"
|
||||
:icon :main-icons/address
|
||||
:accessories [:chevron]
|
||||
:on-press #()}])]
|
||||
[item "Two lines with icon in circle"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "alex.stateofus.eth"
|
||||
:subtitle "ENS name"
|
||||
:icon :main-icons/address
|
||||
:on-press #()}])]
|
||||
[item "Two lines with icon in circle, blue title"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Add or Create a Profile"
|
||||
:subtitle "Requires signout"
|
||||
:theme :action
|
||||
:icon :main-icons/address
|
||||
:on-press #()}])]
|
||||
[item "Two lines with dapp icon,title and subtitle"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "CryptoKitties"
|
||||
:subtitle "https://cryptokitties.co"
|
||||
:icon [react/view {:width 40
|
||||
:height 40
|
||||
:border-radius 20
|
||||
:background-color colors/green}]
|
||||
:on-press #()}])]]
|
||||
[react/view {:margin-right 10}
|
||||
[item "Default Small"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Everybody"
|
||||
:type :small
|
||||
:on-press #()}])]
|
||||
[item "Default Small button"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Change Passcode"
|
||||
:type :small
|
||||
:theme :action
|
||||
:on-press #()}])]
|
||||
[item "Default Small red button"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Delete all Contacts"
|
||||
:type :small
|
||||
:theme :action-red
|
||||
:on-press #()}])]
|
||||
[item "Default Small with chevron"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Recovery Phrase"
|
||||
:type :small
|
||||
:on-press #()
|
||||
:accessories [:chevron]}])]
|
||||
[item "Default Small with chevron and accessory"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Main Currency"
|
||||
:type :small
|
||||
:on-press #()
|
||||
:accessories [[react/text {:style {:color colors/gray}} "USD"]
|
||||
:chevron]}])]
|
||||
[item "Default Small with chevron, badge"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "Recovery Phrase"
|
||||
:type :small
|
||||
:on-press #()
|
||||
:accessories [[badge/badge "2"] :chevron]}])]]
|
||||
[react/view {:margin-right 10}
|
||||
[item "Long title"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "loooooooooong loooooooooooooong looooooong title"
|
||||
:subtitle "ENS name"
|
||||
:icon :main-icons/address
|
||||
:accessories [:chevron]
|
||||
:on-press #()}])]
|
||||
[item "Long subtitle"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title "alex.stateofus.eth"
|
||||
:subtitle "loooooooooooooooong loooooong looooooong subtitle"
|
||||
:icon :main-icons/address
|
||||
:accessories [:chevron]
|
||||
:on-press #()}])]
|
||||
[item "Title-prefix + long title"
|
||||
(snippets/code-snippet
|
||||
[list-item/list-item
|
||||
{:title-prefix "From"
|
||||
:title-prefix-width 45
|
||||
:title "title-prefix and loooooong title really loooonglooo00oooong"
|
||||
:type :small
|
||||
:on-press #()}])]]])
|
|
@ -1,52 +0,0 @@
|
|||
(ns fiddle.views.main
|
||||
(:require-macros [status-im.utils.views :as views])
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.button :as button]
|
||||
[fiddle.views.colors :as colors]
|
||||
[fiddle.views.screens :as screens]
|
||||
[fiddle.views.typography :as typography]
|
||||
[fiddle.views.icons :as icons]
|
||||
[fiddle.views.list-items :as list-items]
|
||||
[fiddle.views.ui :as ui]
|
||||
[fiddle.views.toolbar :as toolbar]
|
||||
[fiddle.views.topbar :as topbar]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(defn btn [id label view-id]
|
||||
[react/view {:margin-bottom 5}
|
||||
[button/button
|
||||
{:label label
|
||||
:disabled? (= id view-id)
|
||||
:type :secondary
|
||||
:on-press #(re-frame/dispatch [:set :view-id id])}]])
|
||||
|
||||
(views/defview main []
|
||||
(views/letsubs [view-id [:view-id]]
|
||||
[react/view {:flex 1 :flex-direction :row :padding 10}
|
||||
[react/view {:padding-right 20}
|
||||
[btn :colors "Colors" view-id]
|
||||
[btn :icons "Icons" view-id]
|
||||
[btn :typography "Typography" view-id]
|
||||
[btn :list-header "List Header" view-id]
|
||||
[btn :list-items "List Items" view-id]
|
||||
[btn :top-bar "Top Bar" view-id]
|
||||
[btn :ui "UI elements" view-id]
|
||||
[btn :tooltip "Tooltips" view-id]
|
||||
[btn :bottom "Bottom Sheet" view-id]
|
||||
[btn :popover "Popover" view-id]
|
||||
[btn :input "Text input" view-id]
|
||||
[btn :tabbar "Tab Bar" view-id]
|
||||
[btn :toolbar "Toolbar" view-id]
|
||||
[btn :snack "Snackbar" view-id]
|
||||
[btn :screens "Screens" view-id]]
|
||||
(case view-id
|
||||
:colors [colors/colors]
|
||||
:icons [icons/icons]
|
||||
:screens [screens/screens]
|
||||
:typography [typography/typography]
|
||||
:list-items [list-items/list-items]
|
||||
:toolbar [toolbar/toolbar-view]
|
||||
:top-bar [topbar/topbar-view]
|
||||
:list-header [list-items/list-header]
|
||||
:ui [ui/ui]
|
||||
[react/text "TODO"])]))
|
|
@ -1,11 +0,0 @@
|
|||
(ns fiddle.views.screens
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.screens.wallet.add-new.views :as add-new]
|
||||
[fiddle.frame :as frame]))
|
||||
|
||||
|
||||
(defn screens []
|
||||
[react/view {:flex-direction :row}
|
||||
[frame/frame
|
||||
[add-new/add-account]]])
|
|
@ -1,29 +0,0 @@
|
|||
(ns fiddle.views.toolbar
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.toolbar :as toolbar]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
cljs.pprint
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.button :as button])
|
||||
(:require-macros [fiddle.snippets :as snippets]))
|
||||
|
||||
(defn toolbar-view []
|
||||
[react/view
|
||||
{:background-color colors/gray-lighter
|
||||
:flex 1
|
||||
:padding 20
|
||||
:flex-direction :row
|
||||
:flex-wrap :wrap}
|
||||
[react/view {:width 375}
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:center {:type :secondary :label "Label"}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:left {:type :previous :label "Label"} :right {:type :next :label "Label"}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:left {:type :secondary :label "Label"} :right {:label "Label"}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:left {:type :previous :label "Label"}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:right {:type :next :label "Label"}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [toolbar/toolbar {:center {:label "Label"}}])]]])
|
|
@ -1,33 +0,0 @@
|
|||
(ns fiddle.views.topbar
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.topbar :as topbar]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
cljs.pprint
|
||||
[reagent.core :as reagent])
|
||||
(:require-macros [fiddle.snippets :as snippets]))
|
||||
|
||||
(defn topbar-view []
|
||||
[react/view
|
||||
{:background-color colors/gray-lighter
|
||||
:flex 1
|
||||
:padding 20
|
||||
:flex-direction :row
|
||||
:flex-wrap :wrap}
|
||||
[react/view {:width 375}
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Chat Invites"}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Chat Invites tile tile title tile tile title tile tile title tile tile title tile tile title tile tile title 3"}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Chat" :navigation :none :show-border? true}])
|
||||
[react/view {:height 10}]]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Blocked Users" :accessories [{:label "Done" :handler #(js/alert "Done")}]}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Blocked Users" :accessories [{:label "Done" :handler #(js/alert "Done")}] :navigation {:label "Cancel" :handler #(js/alert "Cancel")}}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Chat Invites" :accessories [{:icon :more :handler #(js/alert "More")}]}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "Title" :accessories [{:icon :more :handler #(js/alert "More")} {:icon :share :handler #(js/alert "Share")}]}])]
|
||||
[react/view {:background-color :white :margin 10}
|
||||
(snippets/code-snippet [topbar/topbar {:title "test"}])]]])
|
|
@ -1,21 +0,0 @@
|
|||
(ns fiddle.views.typography
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.typography :as typography]))
|
||||
|
||||
(defn typo [name key]
|
||||
[react/view {:flex-direction :row :align-items :center :margin-bottom 40}
|
||||
[react/text {:style {:typography key :margin-right 20 :width 200}} name]
|
||||
[react/text {:style {:margin-right 20 :width 200}} (str key)]
|
||||
[react/text {:style {:color colors/gray}} (get typography/typography-styles key)]])
|
||||
|
||||
(defn typography []
|
||||
[react/view {:flex-direction :row :flex 1}
|
||||
[react/view {:padding 20}
|
||||
[typo "Header" :header]
|
||||
[typo "Title Bold" :title-bold]
|
||||
[typo "Title" :title]
|
||||
[typo "Main Medium" :main-medium]
|
||||
[typo "Main" nil]
|
||||
[typo "Caption" :caption]
|
||||
[typo "TIMESTAMP" :timestamp]]])
|
|
@ -1,82 +0,0 @@
|
|||
(ns fiddle.views.ui
|
||||
(:require [status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.button :as button]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.badge :as badge]
|
||||
[status-im.ui.components.checkbox.view :as checkbox]
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.radio :as radio]
|
||||
cljs.pprint)
|
||||
(:require-macros [fiddle.snippets :as snippets]))
|
||||
|
||||
(def sw (reagent/atom true))
|
||||
(def ch (reagent/atom true))
|
||||
(def ch2 (reagent/atom false))
|
||||
|
||||
(defn ui []
|
||||
[react/view {:flex-direction :row :flex-wrap :wrap :flex 1}
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Main button"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20}
|
||||
(snippets/code-snippet [button/button {:label "Label"}] true)
|
||||
(snippets/code-snippet [button/button {:label "Label" :disabled? true}] true)]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Secondary button"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20}
|
||||
(snippets/code-snippet [button/button {:label "Label" :type :secondary}] true)
|
||||
(snippets/code-snippet [button/button {:label "Label" :type :secondary :disabled? true}] true)]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Next and previous buttons"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20 :flex-direction :row}
|
||||
[react/view
|
||||
(snippets/code-snippet [button/button {:label "Label" :type :next}] true)
|
||||
(snippets/code-snippet [button/button {:label "Label" :type :previous}] true)]
|
||||
[react/view
|
||||
(snippets/code-snippet [button/button {:label "Label" :type :next :disabled? true}] true)
|
||||
(snippets/code-snippet [button/button {:label "Label2" :type :previous :disabled? true}] true)]]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Switch"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20}
|
||||
(snippets/code-snippet
|
||||
[react/switch
|
||||
{:track-color #js {:true colors/blue :false nil}
|
||||
:value @sw
|
||||
:on-value-change #(swap! sw not)
|
||||
:disabled false}]
|
||||
true)
|
||||
[react/view {:height 20}]
|
||||
(snippets/code-snippet
|
||||
[react/switch
|
||||
{:track-color #js {:true colors/blue :false nil}
|
||||
:value false
|
||||
:disabled true}]
|
||||
true)]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Badge"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20 :flex-direction :row :flex-wrap :wrap}
|
||||
[react/view {:margin 10}
|
||||
(snippets/code-snippet [badge/badge "8"] true)]
|
||||
[react/view {:margin 10}
|
||||
[badge/badge "8" true]]
|
||||
[react/view {:margin 10}
|
||||
[badge/badge "128"]]
|
||||
[react/view {:margin 10}
|
||||
[badge/badge "338" true]]]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Checkbox"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20}
|
||||
(snippets/code-snippet
|
||||
[checkbox/checkbox
|
||||
{:checked? @ch :on-value-change #(swap! ch not)}]
|
||||
true)
|
||||
[react/view {:height 20}]
|
||||
(snippets/code-snippet
|
||||
[checkbox/checkbox
|
||||
{:checked? @ch2 :on-value-change #(swap! ch2 not)}]
|
||||
true)]]
|
||||
[react/view
|
||||
[react/text {:style {:typography :main-medium}} "Radio button"]
|
||||
[react/view {:padding 40 :background-color :while :border-radius 20}
|
||||
(snippets/code-snippet [radio/radio true] true)
|
||||
[react/view {:height 20}]
|
||||
(snippets/code-snippet [radio/radio false] true)]]])
|
|
@ -1,6 +0,0 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
window.deps = {'react-native-web' : require('react-native-web') };
|
||||
window.React = React;
|
||||
window.ReactDOM = ReactDOM;
|
||||
window.ReactNativeWeb = window.deps['react-native-web'];
|
|
@ -1,20 +0,0 @@
|
|||
(ns status-im.i18n-resources
|
||||
(:require-macros [status-im.i18n :as i18n])
|
||||
(:require [status-im.utils.types :as types]
|
||||
[clojure.string :as string]))
|
||||
|
||||
(def default-device-language
|
||||
:en)
|
||||
|
||||
;; translations
|
||||
(def translations-by-locale
|
||||
(->> (i18n/translations [:en :es_419 :fa :ko :ms :pl :ru :zh_Hans_CN])
|
||||
(map (fn [[k t]]
|
||||
(let [k' (-> (name k)
|
||||
(string/replace "_" "-")
|
||||
keyword)]
|
||||
[k' (types/json->clj t)])))
|
||||
(into {})))
|
||||
|
||||
;; API compatibility
|
||||
(defn load-language [lang])
|
|
@ -1,43 +0,0 @@
|
|||
(ns status-im.react-native.js-dependencies)
|
||||
|
||||
(def action-button (fn [] #js {:default #js {:Item #js {}}}))
|
||||
(def config (fn [] #js {:default #js {}}))
|
||||
(def camera (fn [] #js {:default #js {:constants #js {}}}))
|
||||
(def dialogs (fn [] #js {}))
|
||||
(def dismiss-keyboard (fn [] #js {}))
|
||||
(def emoji-picker (fn [] #js {:default #js {}}))
|
||||
(def fs (fn [] #js {}))
|
||||
(def i18n #js {:locale "en"})
|
||||
(def react-native-languages #js {:language "en", :addEventListener (fn []), :removeEventListener (fn [])})
|
||||
(def image-crop-picker (fn [] #js {}))
|
||||
(def image-resizer (fn [] #js {}))
|
||||
(def qr-code (fn [] #js {}))
|
||||
(def react-native
|
||||
#js {:NativeModules #js {}
|
||||
:Animated #js {:View #js {}
|
||||
:FlatList #js {}
|
||||
:Text #js {}}
|
||||
:DeviceEventEmitter #js {:addListener (fn [])}
|
||||
:Dimensions #js {:get (fn [])}})
|
||||
(def vector-icons (fn [] #js {:default #js {}}))
|
||||
(def webview (fn [] #js {:WebView #js {}}))
|
||||
(def touchid (fn [] #js {}))
|
||||
(def svg (fn [] #js {:default #js {}}))
|
||||
(def status-keycard (fn [] #js {:default #js {}}))
|
||||
|
||||
(def snoopy (fn [] #js {:default #js {}}))
|
||||
(def snoopy-filter (fn [] #js {:default #js {}}))
|
||||
(def snoopy-bars (fn [] #js {:default #js {}}))
|
||||
(def snoopy-buffer (fn [] #js {:default #js {}}))
|
||||
|
||||
(def fetch (fn [_ _] #js {}))
|
||||
|
||||
(def background-timer (fn [] #js {:setTimeout js/setTimeout
|
||||
:setInterval js/setInterval
|
||||
:clearTimeout js/clearTimeout
|
||||
:clearInterval js/clearInterval}))
|
||||
|
||||
(def keychain (fn [] #js {:setGenericPassword (constantly (.resolve js/Promise true))}))
|
||||
(def react-navigation #js {:NavigationActions #js {}})
|
||||
(def react-native-mail (fn [] #js {:mail #js {}}))
|
||||
(def react-native-navigation-twopane #js {})
|
|
@ -1,33 +0,0 @@
|
|||
(ns status-im.react-native.resources)
|
||||
|
||||
(def ui
|
||||
{:lock "images/ui/lock.png"
|
||||
:tribute-to-talk "images/ui/tribute-to-talk.png"
|
||||
:hardwallet-card "images/ui/hardwallet-card.png"
|
||||
:secret-keys "images/ui/secret-keys.png"
|
||||
:keycard-lock "images/ui/keycard-lock.png"
|
||||
:keycard "images/ui/keycard.png"
|
||||
:keycard-logo "images/ui/keycard-logo.png"
|
||||
:keycard-logo-blue "images/ui/keycard-logo-blue.png"
|
||||
:keycard-logo-gray "images/ui/keycard-logo-gray.png"
|
||||
:keycard-key "images/ui/keycard-key.png"
|
||||
:keycard-empty "images/ui/keycard-empty.png"
|
||||
:keycard-phone "images/ui/keycard-phone.png"
|
||||
:keycard-connection "images/ui/keycard-connection.png"
|
||||
:keycard-wrong "images/ui/keycard-wrong.png"
|
||||
:not-keycard "images/ui/not-keycard.png"
|
||||
:status-logo "images/ui/status-logo.png"
|
||||
:hold-card-animation "images/ui/hold-card-animation.gif"
|
||||
:warning-sign "images/ui/warning-sign.png"
|
||||
:phone-nfc-on "images/ui/phone-nfc-on.png"
|
||||
:phone-nfc-off "images/ui/phone-nfc-off.png"
|
||||
:dapp-store "images/ui/dapp-store.png"
|
||||
:ens-header "images/ui/ens-header.png"})
|
||||
|
||||
(def loaded-images (atom {}))
|
||||
|
||||
(defn get-image [k]
|
||||
(if (contains? @loaded-images k)
|
||||
(get @loaded-images k)
|
||||
(get (swap! loaded-images assoc k
|
||||
(get ui k)) k)))
|
|
@ -1,328 +0,0 @@
|
|||
(ns status-im.ui.components.react
|
||||
(:require-macros [status-im.utils.views :as views])
|
||||
(:require [goog.object :as object]
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.styles :as styles]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.typography :as typography]
|
||||
[status-im.utils.platform :as platform]
|
||||
[react-native-web :as rnw]))
|
||||
|
||||
(defn adapt-class [class]
|
||||
(when class
|
||||
(reagent/adapt-react-class class)))
|
||||
|
||||
(defn get-web-class [name]
|
||||
(fn []
|
||||
(adapt-class (goog.object/get rnw name))))
|
||||
|
||||
(defn get-class [name] (get-web-class name))
|
||||
|
||||
(def device-event-emitter nil)
|
||||
(defn dismiss-keyboard! [] ())
|
||||
(def splash-screen nil)
|
||||
|
||||
;; React Components
|
||||
|
||||
(def app-registry nil)
|
||||
(def app-state nil)
|
||||
(def net-info nil)
|
||||
(def view-class ((get-web-class "View")))
|
||||
|
||||
(defn view [& props]
|
||||
(into []
|
||||
(concat
|
||||
[view-class]
|
||||
(cond-> (into [] props)
|
||||
(and (map? (first props)) (not (contains? (first props) :style)))
|
||||
(assoc 0 {:style (first props)})))))
|
||||
|
||||
(def safe-area-view (get-web-class "SafeAreaView"))
|
||||
(def progress-bar (get-web-class "ProgressBarAndroid"))
|
||||
|
||||
(def status-bar-class (get-web-class "StatusBar"))
|
||||
|
||||
(def scroll-view-class (get-web-class "ScrollView"))
|
||||
(def keyboard-avoiding-view-class (get-web-class "KeyboardAvoidingView"))
|
||||
|
||||
(def text-class ((get-web-class "Text")))
|
||||
(def text-input-class (get-web-class "TextInput"))
|
||||
(def image-class (get-web-class "Image"))
|
||||
(def picker-obj nil)
|
||||
(def animated-flat-list-class #())
|
||||
(defn picker-class [] )
|
||||
(defn picker-item-class [] )
|
||||
|
||||
(defn valid-source? [source]
|
||||
(or (not (map? source))
|
||||
(not (contains? source :uri))
|
||||
(and (contains? source :uri)
|
||||
(:uri source))))
|
||||
|
||||
(defn image [{:keys [source] :as props}]
|
||||
(when (valid-source? source)
|
||||
(let [source (if (fn? source) (source) source)]
|
||||
[(image-class) (assoc props :source source)])))
|
||||
|
||||
(def switch-class (get-web-class "Switch"))
|
||||
|
||||
(defn switch [props]
|
||||
[(switch-class) props])
|
||||
|
||||
(def touchable-highlight ((get-web-class "TouchableOpacity")))
|
||||
(def touchable-opacity-class (get-web-class "TouchableOpacity"))
|
||||
(def activity-indicator-class (get-web-class "ActivityIndicator"))
|
||||
|
||||
(defn activity-indicator [props]
|
||||
[(activity-indicator-class) props])
|
||||
|
||||
(def modal nil)
|
||||
|
||||
(def pan-responder nil)
|
||||
(def animated (get-web-class "Animated"))
|
||||
|
||||
(defn animated-view-class []
|
||||
(reagent/adapt-react-class (.-View (animated))))
|
||||
|
||||
(defn animated-view [props & content]
|
||||
(vec (conj content props (animated-view-class))))
|
||||
|
||||
(def dimensions nil)
|
||||
(def keyboard nil)
|
||||
(def linking nil)
|
||||
|
||||
(def max-font-size-multiplier 1.25)
|
||||
|
||||
(defn prepare-text-props [props]
|
||||
(-> props
|
||||
(update :style typography/get-style)
|
||||
(update-in [:style :font-family] #(or % "Inter"))
|
||||
(assoc :max-font-size-multiplier max-font-size-multiplier)))
|
||||
|
||||
(defn prepare-nested-text-props [props]
|
||||
(-> props
|
||||
(update :style typography/get-nested-style)
|
||||
(assoc :parseBasicMarkdown true)
|
||||
(assoc :nested? true)))
|
||||
|
||||
;; Accessor methods for React Components
|
||||
(defn text
|
||||
"For nested text elements, use nested-text instead"
|
||||
([text-element]
|
||||
(text {} text-element))
|
||||
([options text-element]
|
||||
[text-class (prepare-text-props options) text-element]))
|
||||
|
||||
(defn nested-text
|
||||
"Returns nested text elements with proper styling and typography
|
||||
Do not use the nested? option, it is for internal usage of the function only"
|
||||
[options & nested-text-elements]
|
||||
(let [options-with-style (if (:nested? options)
|
||||
(prepare-nested-text-props options)
|
||||
(prepare-text-props options))]
|
||||
(reduce (fn [acc text-element]
|
||||
(conj acc
|
||||
(if (string? text-element)
|
||||
text-element
|
||||
(let [[options & nested-text-elements] text-element]
|
||||
(apply nested-text (prepare-nested-text-props options)
|
||||
nested-text-elements)))))
|
||||
[text-class (dissoc options-with-style :nested?)]
|
||||
nested-text-elements)))
|
||||
|
||||
(defn text-input
|
||||
[options text]
|
||||
[(text-input-class)
|
||||
(merge
|
||||
{:underline-color-android :transparent
|
||||
:max-font-size-multiplier max-font-size-multiplier
|
||||
:placeholder-text-color colors/text-gray
|
||||
:placeholder (i18n/label :t/type-a-message)
|
||||
:value text}
|
||||
(-> options
|
||||
(update :style typography/get-style)
|
||||
(update :style dissoc :line-height)))])
|
||||
|
||||
(defn i18n-text
|
||||
[{:keys [style key]}]
|
||||
[text {:style style} (i18n/label key)])
|
||||
|
||||
(defn icon
|
||||
([n] (icon n styles/icon-default))
|
||||
([n style]
|
||||
[image {:source {:uri (keyword (str "icon_" (name n)))}
|
||||
:resizeMode "contain"
|
||||
:style style}]))
|
||||
|
||||
(defn touchable-opacity [props content]
|
||||
[(touchable-opacity-class) props content])
|
||||
|
||||
#_(defn touchable-highlight [props content]
|
||||
[(touchable-highlight-class)
|
||||
(merge {:underlay-color :transparent} props)
|
||||
content])
|
||||
|
||||
(defn touchable-without-feedback [props content]
|
||||
nil)
|
||||
|
||||
(defn get-dimensions [name]
|
||||
(js->clj (.get (dimensions) name) :keywordize-keys true))
|
||||
|
||||
(defn list-item [component]
|
||||
(reagent/as-element component))
|
||||
|
||||
(defn value->picker-item [{:keys [value label]}]
|
||||
[(picker-item-class) {:value (or value "") :label (or label value "")}])
|
||||
|
||||
(defn picker [{:keys [style on-change selected enabled data]}]
|
||||
(into
|
||||
[(picker-class) (merge (when style {:style style})
|
||||
(when enabled {:enabled enabled})
|
||||
(when on-change {:on-value-change on-change})
|
||||
(when selected {:selected-value selected}))]
|
||||
(map value->picker-item data)))
|
||||
|
||||
;; Image picker
|
||||
|
||||
(def image-picker-class nil)
|
||||
|
||||
(defn show-access-error [o]
|
||||
(when (= "E_PERMISSION_MISSING" (object/get o "code"))
|
||||
(utils/show-popup (i18n/label :t/error)
|
||||
(i18n/label :t/photos-access-error))))
|
||||
|
||||
(defn show-image-picker
|
||||
([images-fn]
|
||||
(show-image-picker images-fn nil))
|
||||
([images-fn media-type]
|
||||
(let [image-picker (.-default (image-picker-class))]
|
||||
(-> image-picker
|
||||
(.openPicker (clj->js {:multiple false :mediaType (or media-type "any")}))
|
||||
(.then images-fn)
|
||||
(.catch show-access-error)))))
|
||||
|
||||
;; Clipboard
|
||||
|
||||
(def sharing
|
||||
nil)
|
||||
|
||||
(defn copy-to-clipboard [text]
|
||||
nil)
|
||||
|
||||
(defn get-from-clipboard [clbk]
|
||||
nil)
|
||||
|
||||
;; HTTP Bridge
|
||||
|
||||
(def http-bridge nil)
|
||||
|
||||
;; KeyboardAvoidingView
|
||||
|
||||
(defn keyboard-avoiding-view [props & children]
|
||||
(let [view-element (if platform/ios?
|
||||
[(keyboard-avoiding-view-class) (merge {:behavior :padding} props)]
|
||||
[view props])]
|
||||
(vec (concat view-element children))))
|
||||
|
||||
(defn scroll-view [props & children]
|
||||
(vec (conj children props (scroll-view-class))))
|
||||
|
||||
(views/defview with-activity-indicator
|
||||
[{:keys [timeout style enabled? preview]} comp]
|
||||
(views/letsubs
|
||||
[loading (reagent/atom true)]
|
||||
{:component-did-mount (fn []
|
||||
(if (or (nil? timeout)
|
||||
(> 100 timeout))
|
||||
(reset! loading false)
|
||||
(utils/set-timeout #(reset! loading false)
|
||||
timeout)))}
|
||||
(if (and (not enabled?) @loading)
|
||||
(or preview
|
||||
[view {:style (or style {:justify-content :center
|
||||
:align-items :center})}
|
||||
[activity-indicator {:animating true}]])
|
||||
comp)))
|
||||
|
||||
(defn navigation-wrapper
|
||||
"Wraps component so that it will be shown only when current-screen is one of views"
|
||||
[{:keys [component views current-view hide?]
|
||||
:or {hide? false}}]
|
||||
(let [current-view? (if (set? views)
|
||||
(views current-view)
|
||||
(= views current-view))
|
||||
|
||||
style (if current-view?
|
||||
{:flex 1
|
||||
:zIndex 0}
|
||||
{:opacity 0
|
||||
:flex 0
|
||||
:zIndex -1})
|
||||
|
||||
component' (if (fn? component) [component] component)]
|
||||
|
||||
(when (or (not hide?) (and hide? current-view?))
|
||||
(if hide?
|
||||
component'
|
||||
[view style (if (fn? component) [component] component)]))))
|
||||
|
||||
(defn with-empty-preview [comp]
|
||||
[with-activity-indicator
|
||||
{:preview [view {}]}
|
||||
comp])
|
||||
|
||||
;; Platform-specific View
|
||||
|
||||
(defmulti create-main-screen-view #(cond
|
||||
platform/iphone-x? :iphone-x
|
||||
platform/ios? :ios
|
||||
platform/android? :android))
|
||||
|
||||
(defmethod create-main-screen-view :iphone-x [current-view]
|
||||
(fn [props & children]
|
||||
(let [props (merge props
|
||||
{:background-color
|
||||
(case current-view
|
||||
(:wallet-send-transaction
|
||||
:wallet-request-transaction
|
||||
:wallet-send-assets
|
||||
:wallet-request-assets
|
||||
:choose-recipient
|
||||
:recent-recipients
|
||||
:select-account
|
||||
:wallet-send-transaction-request
|
||||
:contact-code
|
||||
:wallet-settings-hook)
|
||||
colors/blue
|
||||
|
||||
(:qr-viewer
|
||||
:recipient-qr-code)
|
||||
"#2f3031"
|
||||
|
||||
colors/white)})
|
||||
bottom-background (when (#{:recent-recipients
|
||||
:select-account
|
||||
:wallet-send-assets
|
||||
:wallet-request-assets} current-view)
|
||||
[view {:background-color colors/white
|
||||
:position :absolute
|
||||
:bottom 0
|
||||
:right 0
|
||||
:left 0
|
||||
:height 100
|
||||
:z-index -1000}])
|
||||
children (conj children bottom-background)]
|
||||
(apply vector (safe-area-view) props children))))
|
||||
|
||||
(defmethod create-main-screen-view :default [_]
|
||||
view)
|
||||
|
||||
(views/defview main-screen-modal-view [current-view & components]
|
||||
(views/letsubs []
|
||||
(let [main-screen-view (create-main-screen-view current-view)]
|
||||
[main-screen-view styles/flex
|
||||
[keyboard-avoiding-view
|
||||
{:flex 1 :flex-direction :column}
|
||||
(apply vector view styles/flex components)]])))
|
|
@ -1,6 +0,0 @@
|
|||
module.exports = {
|
||||
entry: './src/js/index.js',
|
||||
output: {
|
||||
filename: 'index_bundle.js'
|
||||
}
|
||||
}
|
|
@ -69,15 +69,6 @@ PODS:
|
|||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- libwebp (1.1.0):
|
||||
- libwebp/demux (= 1.1.0)
|
||||
- libwebp/mux (= 1.1.0)
|
||||
- libwebp/webp (= 1.1.0)
|
||||
- libwebp/demux (1.1.0):
|
||||
- libwebp/webp
|
||||
- libwebp/mux (1.1.0):
|
||||
- libwebp/demux
|
||||
- libwebp/webp (1.1.0)
|
||||
- OpenSSL-Universal (1.0.2.20):
|
||||
- OpenSSL-Universal/Static (= 1.0.2.20)
|
||||
- OpenSSL-Universal/Static (1.0.2.20)
|
||||
|
@ -351,10 +342,6 @@ PODS:
|
|||
- React
|
||||
- RNDeviceInfo (5.6.1):
|
||||
- React
|
||||
- RNFastImage (8.3.4):
|
||||
- React-Core
|
||||
- SDWebImage (~> 5.8)
|
||||
- SDWebImageWebPCoder (~> 0.6.1)
|
||||
- RNFS (2.16.6):
|
||||
- React
|
||||
- RNGestureHandler (1.8.0):
|
||||
|
@ -382,12 +369,6 @@ PODS:
|
|||
- React
|
||||
- RNSVG (9.13.6):
|
||||
- React
|
||||
- SDWebImage (5.10.0):
|
||||
- SDWebImage/Core (= 5.10.0)
|
||||
- SDWebImage/Core (5.10.0)
|
||||
- SDWebImageWebPCoder (0.6.1):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.7)
|
||||
- SQLCipher (3.4.2):
|
||||
- SQLCipher/standard (= 3.4.2)
|
||||
- SQLCipher/common (3.4.2)
|
||||
|
@ -470,7 +451,6 @@ DEPENDENCIES:
|
|||
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
|
||||
- "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)"
|
||||
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
|
||||
- RNFastImage (from `../node_modules/react-native-fast-image`)
|
||||
- RNFS (from `../node_modules/react-native-fs`)
|
||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
|
||||
|
@ -498,10 +478,7 @@ SPEC REPOS:
|
|||
- Flipper-PeerTalk
|
||||
- Flipper-RSocket
|
||||
- FlipperKit
|
||||
- libwebp
|
||||
- OpenSSL-Universal
|
||||
- SDWebImage
|
||||
- SDWebImageWebPCoder
|
||||
- SQLCipher
|
||||
- SSZipArchive
|
||||
- TOCropViewController
|
||||
|
@ -602,8 +579,6 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/@react-native-community/push-notification-ios"
|
||||
RNDeviceInfo:
|
||||
:path: "../node_modules/react-native-device-info"
|
||||
RNFastImage:
|
||||
:path: "../node_modules/react-native-fast-image"
|
||||
RNFS:
|
||||
:path: "../node_modules/react-native-fs"
|
||||
RNGestureHandler:
|
||||
|
@ -646,7 +621,6 @@ SPEC CHECKSUMS:
|
|||
FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
glog: cee4319f395bad5865ef3f32466c2e0ae677432c
|
||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||
OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd
|
||||
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
|
||||
Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c
|
||||
|
@ -689,7 +663,6 @@ SPEC CHECKSUMS:
|
|||
RNCMaskedView: 71fc32d971f03b7f03d6ab6b86b730c4ee64f5b6
|
||||
RNCPushNotificationIOS: c145c6253ea016e5efeff604f2720736b4a596f7
|
||||
RNDeviceInfo: b6e650fbd234732c759544218657d549b4339038
|
||||
RNFastImage: d4870d58f5936111c56218dbd7fcfc18e65b58ff
|
||||
RNFS: 2bd9eb49dc82fa9676382f0585b992c424cd59df
|
||||
RNGestureHandler: 7a5833d0f788dbd107fbb913e09aa0c1ff333c39
|
||||
RNImageCropPicker: 38865ab4af1b0b2146ad66061196bc0184946855
|
||||
|
@ -700,8 +673,6 @@ SPEC CHECKSUMS:
|
|||
RNReanimated: 89f5e0a04d1dd52fbf27e7e7030d8f80a646a3fc
|
||||
RNScreens: b748efec66e095134c7166ca333b628cd7e6f3e2
|
||||
RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f
|
||||
SDWebImage: 9169792e9eec3e45bba2a0c02f74bf8bd922d1ee
|
||||
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
|
||||
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
|
||||
SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9
|
||||
TOCropViewController: da59f531f8ac8a94ef6d6c0fc34009350f9e8bfe
|
||||
|
|
|
@ -405,20 +405,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/databinding/databinding-common/3.4.0/databinding-common-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "2853715477959d9c44169d570dd9add271b114af",
|
||||
"sha256": "1rx6l013gjvvzkyl5yyh1mjpxmx93f73z30kx05aw3b5ca473irb"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "0265b8ca5d867c32dd0b9032bd7e7bf49a1af199",
|
||||
"sha256": "0rmnw8mk47qyc61fm3q3h0iwrmc1kgs5k4qzs9l9jmp5c5yhl95f"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/databinding/databinding-common/3.5.3/databinding-common-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -461,20 +447,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/databinding/databinding-compiler-common/3.4.0/databinding-compiler-common-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "9ca08ae6fc9410da3b1b5134ee541682893d4ba7",
|
||||
"sha256": "1v6pximinv8242rhmhk2w48r13a66fgx3lzc943dkgnapqawddin"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "9a080792ea0c78422230c02bc8f457e7a6c19f17",
|
||||
"sha256": "0nphxaqd8kqdd30hxq83sqj820fdkapq8fp51jj1xxpi6rwl3q99"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/databinding/databinding-compiler-common/3.5.3/databinding-compiler-common-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -517,20 +489,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/exifinterface/exifinterface/1.0.0/exifinterface-1.0.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "aar",
|
||||
"pom": {
|
||||
"sha1": "33b6860f537daa47cfc3184f6e592b5271a71958",
|
||||
"sha256": "1czjzcvh9w0xg2702dh725d2vvphvsim77k490pbg2ps76vwq5gf"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "1ab12ceadd49f94006e1ec0ea5fa51b701169cd5",
|
||||
"sha256": "04fcaly958lpy9myzmbr8gpfxf8h3v8pfjy1ykzlxxdqm88bwj7f"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "androidx/exifinterface/exifinterface/1.1.0-beta01/exifinterface-1.1.0-beta01",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -1273,20 +1231,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/databinding/baseLibrary/3.4.0/baseLibrary-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "12823b42714e1bae1864e6b7c067986cd68eef8d",
|
||||
"sha256": "0bbq57aa9b0a5rb3dj6vndapknmndvfj5mddzldlw5c7x281ai0i"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "767805331463128dfb118a15813e6ff65290dda6",
|
||||
"sha256": "1s0b94xlfi4nmiz73g2yw1y9k0d4g5a3bdyw3xi984mfh5416jc5"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/databinding/baseLibrary/3.5.3/baseLibrary-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -1665,20 +1609,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/crash/26.4.0/crash-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "1ca1832d9c698cc28dba3d1717fe784cee98dbd9",
|
||||
"sha256": "1v2nyvy9hgjs8a0rnrlcnk7sa98frmpllkbvvrpcv4x6zqpd78f4"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "45f30743b0d2fb45f1e1458e56baa104221f5501",
|
||||
"sha256": "09k1ciqzspbhji5701a20j64nly9rclmypjyjy82q4ad0dvrr8fi"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/crash/26.5.3/crash-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -1763,20 +1693,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/protos/26.4.0/protos-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "d3238191160aaf3ac9b80bc57fa83a000ec1f8ab",
|
||||
"sha256": "0jch7nrb0v3cibhb16vp2kbk19xi8wzm2r9gcahdpjza0ykan3if"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "850cd51c9aa8ab2e39a2a0cb8d7e90282d4d18db",
|
||||
"sha256": "0pqkn8gn6rf99063wgjqxns3pzwb6xxq60pl369x75v7b0ahjxmd"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/protos/26.5.3/protos-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -1861,20 +1777,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/shared/26.4.0/shared-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "15b359d285679b9632d86f4f65528a70475e7b46",
|
||||
"sha256": "044p4n17idswizlw257j8lc0cblpr0g538c2sb6rvzb4yhracjly"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "2d083560f501898bcd0c42e704abcfb7746ef20f",
|
||||
"sha256": "1lhf7mf9n2iv0z399cvx921kxpj6950rx316h6f90j2xj1m10chk"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/shared/26.5.3/shared-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -1959,20 +1861,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/tracker/26.4.0/tracker-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "eb46dc11ac785fe37e5b8083cb403e14106d479e",
|
||||
"sha256": "0l7nd0s64f5rip725wc719d580ph030gyrvs9dsn9rr5ar8592fy"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "b3f28a0cfe0b5424e280f97123e4f7d4b7aa2ce9",
|
||||
"sha256": "15kpsdyj34v0g4mfzwzn1nhx8h4q10j6lbcpy8smkmsczpxhq0nh"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/analytics-library/tracker/26.5.3/tracker-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2057,20 +1945,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/annotations/26.4.0/annotations-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "175eaca5e1a643ceb1a97763b1e16346cb80e9f1",
|
||||
"sha256": "14hdx981jn4dkg8jr19qhk8dwzhmcf7pmm88q6izwx64xnkvcnc5"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "99ccefd34e8488ece2098165d0ae1eedb6491797",
|
||||
"sha256": "06nckr1ryvsw4czfx21126lnxm60nxc3m97ssrhsi8n33675p5d7"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/annotations/26.5.3/annotations-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2197,20 +2071,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/apksig/3.4.0/apksig-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "cbb9693c9eee84f7ee77161a083276e17c9ebe50",
|
||||
"sha256": "0d2f7i49yywiggpkbjgm96zad64m4ac6liv9xd82cjy8ghrzylva"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "5f67d13c63f838b3add79f01e7bb7ffe0e1c2e66",
|
||||
"sha256": "0zijfwhhz8a59w8q05c42q2rsqad3gvacm8351b9giirc63a3mci"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/apksig/3.5.3/apksig-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2253,20 +2113,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/apkzlib/3.4.0/apkzlib-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "c7a6ed9e7ae21b3970484bfcfc65b998f9b8e6f1",
|
||||
"sha256": "0d9bqc8cqclx2wl8m06f2mbh25qkk0i98jw8vhqmxqkzqw187x40"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "3cd3ade50ba5b812f77e24cb24e5fa9c567cf156",
|
||||
"sha256": "14jmac360qar023bahg5cr5w6ygbd8wzg2lb1s2dw7fzbxgwhlw6"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/apkzlib/3.5.3/apkzlib-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2351,20 +2197,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder-model/3.4.0/builder-model-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "5e3739c81b3d3d740c2fd9b4ab1e6a191ea50505",
|
||||
"sha256": "1wiwsgab5d7l82aijyis0sqdn7js34aqsxx4fb8xhnxivz313xi4"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "768154ff0029313694e6b7d1576ef79dfe7e2b7e",
|
||||
"sha256": "0fw5xbclskq1wiz50mpdvv3nabshk8sn0iyb1fkidw594j0i73x8"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder-model/3.5.3/builder-model-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2449,20 +2281,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder-test-api/3.4.0/builder-test-api-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "051d1fa13112ad9a7bd3234e7689e5fbfca92245",
|
||||
"sha256": "1vrppzcj1n0y0xxnlrw6gj51ybgxh99w8jwdnknh3c0by5sqwjrq"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "c7b44da938640cb249dcc719ede09c2e9896711d",
|
||||
"sha256": "0vzj9mfpn97l0sbrf9l2bf03ql8770ppv1hhl23pdjhrxjqrl21i"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder-test-api/3.5.3/builder-test-api-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2547,20 +2365,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder/3.4.0/builder-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "3365268f89e9135371e597098eaf988a3a70a502",
|
||||
"sha256": "1aq4y97vyxx6hmay6y56xvlcw8qnca1k7qzqcdszr233x2mw9mby"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "b237d03672bae54a1013deab3bbd936d78f07e79",
|
||||
"sha256": "0y96j838dmdg2mwa3w0f0bsvcd0a02ayv1gikc450zrs42sj2qj7"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/builder/3.5.3/builder-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2617,20 +2421,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/bundletool/0.7.2/bundletool-0.7.2",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "b9bed5ad5d87c480dea482f713dd72af621a0546",
|
||||
"sha256": "0n9lgg8kljnd8j7ji0k6v3lqny0yg13hxahsgh832kpg7gyga5z9"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "31f71b66edcbe41de0268e14c961a7799a03d42a",
|
||||
"sha256": "153qkzflw3s2k9dyg982v4p0pnrisd5bp47shcak9qy98i6b62s2"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/bundletool/0.9.0/bundletool-0.9.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2715,20 +2505,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/gradle-api/3.4.0/gradle-api-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "6cfc754464acd2820b4c434818a7f0951ff3dea8",
|
||||
"sha256": "0d527z8plycsdjdrbkh4p1cvi5aycb5rda1zy3q84ild0gb6br0m"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "ac85b2c363dbcad0303df561c8c4f99a925c2878",
|
||||
"sha256": "0a2n2w06vinhmsighwcqdk37c5nirliddd4jyk1174kiyqwclpi1"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/gradle-api/3.5.3/gradle-api-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -2855,20 +2631,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/gradle/3.4.0/gradle-3.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "a228bd2aeb317dc19aa497461270ab0f5782df86",
|
||||
"sha256": "1d8skgmra728gsjwbv8jzy2k3lcbj86p44x19r073hdffi0hk5y6"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "016af40a504b8f8ff572c8c2bbf4ace3dccd2f5b",
|
||||
"sha256": "1jn6ncrrmmz6bw8bmj79k5rds1r9qlk8kzilcqvrr0j854mdwdlc"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/gradle/3.5.3/gradle-3.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3037,20 +2799,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/manifest-merger/26.4.0/manifest-merger-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "0927e963177f6d980c0ae6056a1adcb9f30213ac",
|
||||
"sha256": "0js5hkbzscpzfhp9wjw9w5n3mf7byigx3kkzs8pbx713d6ik054v"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "97ad7348b1c018f304378c9b72094fb9cbfe6433",
|
||||
"sha256": "087jns1aasb6lbd11cmn2vnd82sdm4n1rhlpbq1nblgd1mlmxr19"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/build/manifest-merger/26.5.3/manifest-merger-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3135,20 +2883,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/common/26.4.0/common-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "958cdd943cfb7082f79079e1214567c7c7fd6a08",
|
||||
"sha256": "18qnpywh83vaxyv8ag656w3lphlbz1x4jkz9mqqad0khfvlbya92"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "539939e284fba9fe343b890a6e21c9333767c886",
|
||||
"sha256": "0lj8k1bwbcr22y4h5ndbcqx3da065673h4gh01vym10j7i5vjh7a"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/common/26.5.3/common-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3233,20 +2967,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/ddms/ddmlib/26.4.0/ddmlib-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "0a1a50723a483648400f69573e3ceb5e807b1820",
|
||||
"sha256": "1cm59lil1yjyk4cn97ihis5gymm2snznfffaydizb28m4i072w2g"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "889c2419aefceeb31749d49615eb64e798747458",
|
||||
"sha256": "0h69i0g0gkgxcl8mpfh73fwsp5idc2xxflbcpnnncc8ccgj6zxck"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/ddms/ddmlib/26.5.3/ddmlib-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3331,20 +3051,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/dvlib/26.4.0/dvlib-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "756956e60531e4f00986f603622a0b670facd2ae",
|
||||
"sha256": "1izz6p97dzb886v33ij0aarqqir0lg07jfa0n9bf9dmwb4q127lx"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "48ac12dd54ff16487d3553861e108d9e38d5b2f7",
|
||||
"sha256": "1k2hmpnij1fzvvbkqr2fcax4x0bjnq4v7dnixrna66xh6p2qkbr3"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/dvlib/26.5.3/dvlib-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3527,20 +3233,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/layoutlib/layoutlib-api/26.4.0/layoutlib-api-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "f9dfbc2282e922fb5489d901c66c379a5ff8d8de",
|
||||
"sha256": "0d6a1pr3f4h59y96vvchfhmcsbbm3zs6i05llsf2d46i5xpg15ky"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "c76e05e0c19ae0f5fffe2dcc190bd5a0aa7b546b",
|
||||
"sha256": "1qqjg86nn15zvgf4s9mp1945jvj1zndr2qg35c3j9clky9f8y4jj"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/layoutlib/layoutlib-api/26.5.3/layoutlib-api-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3681,20 +3373,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/lint/lint-gradle-api/26.4.0/lint-gradle-api-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "c68f16527b8f34cf5a0586d7353d4f2a9a6b8424",
|
||||
"sha256": "0d174g8imwpz17nrzm8r82vjjqhfl1ynrlznarv9badf2cpj9arx"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "931c6d23146c4d8286aa814eb8d5d8af9b69af11",
|
||||
"sha256": "03wd85q6hifs450g59r80yfna32kwygrcvmixbd11anjqy2pljvi"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/lint/lint-gradle-api/26.5.3/lint-gradle-api-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3835,20 +3513,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/repository/26.4.0/repository-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "22274a4c32383b81da5b64777b35fbbad4c28c9a",
|
||||
"sha256": "1vhnzqmgm40f3i2inwgsml9bb9l7wy0wff2qwrjppknqf71my5cv"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "d91be89a520ae1e1d0abcc41e87afa5f905a8dad",
|
||||
"sha256": "0sqp1fjbr2l9qhx1mj72axc1s3y726x9n4lldpf794qr8smn65rx"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/repository/26.5.3/repository-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -3933,20 +3597,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/sdklib/26.4.0/sdklib-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "33931ab73e3d1335f1c9924616f9be58b724915c",
|
||||
"sha256": "1bj8k1369rgfy1wsa2sbyf7amda4fmpnib7mzj3h6igqa1qy753j"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "2249d66f8d8392630a03f59e23f0eef871f795a5",
|
||||
"sha256": "0cn1wibglab86m50zlb90knkiq7k5k3p3w0wfrnk4fh1j8wc4m5q"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/sdklib/26.5.3/sdklib-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -4031,20 +3681,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/sdk-common/26.4.0/sdk-common-26.4.0",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "6fc0cc23504ccda715f3015e95901054ba1233d5",
|
||||
"sha256": "1w34gqfljrsff7pw8cn0k9q7pn9fvz5p1k6k4adbnqyicp2sjfyv"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "7cda5b1442edfbd2f81c0b525f80d72ef960bc07",
|
||||
"sha256": "03qvlgpvmsajyzw7hj4zibv8bqscs8qwi68jpyvwdzrhbd9259bq"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/android/tools/sdk-common/26.5.3/sdk-common-26.5.3",
|
||||
"host": "https://dl.google.com/dl/android/maven2",
|
||||
|
@ -5753,90 +5389,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/annotations/4.11.0/annotations-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "08445189d31e761a6006cde3bb72542a7a6a23dc",
|
||||
"sha256": "123whb07rzgp7bycdsdmgfcdz8yla4fqk85w7w9vja6m2z9p2pn9"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "c57bae5a18147f8ae22f4da49baac875c6b6f84f",
|
||||
"sha256": "0glv8zqdcj7ss2jihsic6kzdrpdwi9qd8ab22xi4k0kd00wd46fj"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/compiler/4.11.0/compiler-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "63ca5a3bb1eb0c1ef5d3fbde26a794d2a22170ff",
|
||||
"sha256": "0q73n4d498g90k2z1xcc6kwqj4im40xpp38qhsq9ybpx2gff5azc"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "2be868cd9ce1b7dcd7f6152c7345cf42e658eb8c",
|
||||
"sha256": "0w471sc62qzdxljn9535m2pr1hif69fb0j1la8fin9inbhkdz359"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/disklrucache/4.11.0/disklrucache-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "947bbfe64d4645c07ab022daf20030a8bd2d05d0",
|
||||
"sha256": "1rmidh9x46jkynf0myvr2s2qvq7syr61w8c8kbkzbfd8gnx9brhr"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "ed93d2e20549ad85f692d964788ec77520d78a8b",
|
||||
"sha256": "067gsnqgclyrvxs5anx3vl03zghx9bfv07h3vfiplxqv2yjparyh"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/gifdecoder/4.11.0/gifdecoder-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "fa549921eb02e2eedc4a96a54b1d71d951b6a982",
|
||||
"sha256": "0nw9v5mcihm8hahmczsdp0h9v9bmhvgk5lmf8213v4dw0p1d185v"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "5cdb23974646b860c48cca81327960c3593f8879",
|
||||
"sha256": "1iwn2lj0cdh09xpp109nb8iprqfdnfq2xbrrmpswnrig7n2z77wf"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/glide/4.11.0/glide-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "86a47dbf0e23ff171c04ede1d34f61a0d6577f44",
|
||||
"sha256": "15lyrkca1hg8nn8n5c48k90jway1m98rhwk837d2afywzai619xm"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "26b70ede6fde7c4aeb7333c3e72be7bdee081f75",
|
||||
"sha256": "0fqi5w5h3i130x7cz46crbxw6fvwn91d0hz9qmmdzass9ffwgrch"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/github/bumptech/glide/okhttp3-integration/4.11.0/okhttp3-integration-4.11.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "a708e6d659d80f64d63e836bded1247322ed67ff",
|
||||
"sha256": "1x6k9kd35v3q431xqw45p50mwxc0dg6zaksn18lkcppky2n2m3wq"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "570be0c0a843bbe4f1d20f6f497f10f8da298845",
|
||||
"sha256": "0knirllm3h0bm96b2w3rkksjby3d9fk7qxlyb1gs4wapnak8z4vw"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/googlecode/json-simple/json-simple/1.1/json-simple-1.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -6534,26 +6086,26 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "com/google/truth/truth-parent/1.1/truth-parent-1.1",
|
||||
"path": "com/google/truth/truth-parent/1.1.2/truth-parent-1.1.2",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "pom",
|
||||
"pom": {
|
||||
"sha1": "3cbf9ceaf6ef05428e90896fccae392e603995c0",
|
||||
"sha256": "0glydydivdc1n5ib3r9hbsxyrvdy16qp7a1553rmm8sn8b50h8qz"
|
||||
"sha1": "487d2acd34ac5f8987f443497856cd93c51f1e79",
|
||||
"sha256": "0xg70v08sfwch9sfy8a4549k82z58j0hn17wp347kdn2rb3g1k87"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/truth/truth/1.1/truth-1.1",
|
||||
"path": "com/google/truth/truth/1.1.2/truth-1.1.2",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "b7bcc00a1490dcdac703f101097a1462fdeb8e1f",
|
||||
"sha256": "0vx0jk1j260gj29vsn23gwv00s937z7469v0xsdgdg89186r8x1z"
|
||||
"sha1": "390514856a5e29e0ce91b7a1a695761f47374336",
|
||||
"sha256": "0b7pgsnhas3kqy11xhxgqlwyf17b77la2jzk6k5d67f9srjn9xs0"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "6a096a16646559c24397b03f797d0c9d75ee8720",
|
||||
"sha256": "07lr2g01bk7hh6zajwzxjbi0qahf95bbab3qxdvk131rf640rbj2"
|
||||
"sha1": "90621af08df4be0c1619645707460c7065c81c45",
|
||||
"sha256": "063m7hqq7im9dpma56cgh195y6rx198dkpngc3q811xfnsw06pm8"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -6665,20 +6217,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "7a34bfe0899e4b1a4b84f4e9e79c221bd37e9808",
|
||||
"sha256": "1vjwzaf5y4qfc5pvbsa79m11zjvzhn1b3rszvv6xxky1rpha3hdw"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "84b4b7d1c4a238e7899972b7446c250691e65f1f",
|
||||
"sha256": "0pkqnz1dmfrhvr17qbv1dr5nylvfnf5l8vgw0zjjdfiblhbi1l50"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -6708,26 +6246,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okhttp3/okhttp/4.10.0-RC1/okhttp-4.10.0-RC1",
|
||||
"path": "com/squareup/okhttp3/okhttp/5.0.0-alpha.2/okhttp-5.0.0-alpha.2",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "8d708879a928532a5a33c5fc3b8549bbcc8b56f6",
|
||||
"sha256": "1pvvzfnmfw4d17cclp5mh3paldzyy152x18m3sfvs18libzvph63"
|
||||
"sha1": "afe00f17c08b21b7e356667a05f18b948bd64b95",
|
||||
"sha256": "0kqa21fl17l9l9s5kncvsz92wayp6i285qqf1v23fkb58ig20m4l"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "5380afa5a75a340c470b194e10fdf5c2499b81ed",
|
||||
"sha256": "09x0lfq6vfppmcf69d9mx0hyij2q6mrapynynaxs9g7ka2zkvhcz"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okhttp3/parent/3.9.1/parent-3.9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "pom",
|
||||
"pom": {
|
||||
"sha1": "e55ee2b70a7a64431236eac139096e369db69bb6",
|
||||
"sha256": "0lqm0gpbxfkw7n530hfr2jxr7r4cgiia2ahd0m1kb6kwdfzf05gm"
|
||||
"sha1": "bf7bed2b2469e05290e258813396114ef080f574",
|
||||
"sha256": "1zzmw406i776k076cmrx9g52s7slqw93nq4zga9da7g6q3fwlp7a"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -8406,16 +7934,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/checkerframework/checker-qual/3.9.1/checker-qual-3.9.1",
|
||||
"path": "org/checkerframework/checker-qual/3.10.0/checker-qual-3.10.0",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "a81dd752dcacf18628a82ca8303c9c801a532e5f",
|
||||
"sha256": "1abmx1cvi9ki1gl36s3yxq3qd3c2hrgxmf5ax4m5yh7xhppr155j"
|
||||
"sha1": "c390f25c63524b5c05da6fa6d446c3a593a40e89",
|
||||
"sha256": "0a6ra0sazc6ab8r6jn1h4spp1d4gq1zhxxnfxlslblz0ihh4x5m3"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "4fccadf37f1c61a0895bac3d42fe0c530438826c",
|
||||
"sha256": "0xp7x9syd9v2lq9m3w5q19k8gn0bjv20v9k1bzj2mfrmpaqnh15b"
|
||||
"sha1": "710fd6abff4b26b40dc0917050dc4c67efcf60b6",
|
||||
"sha256": "04i5rcbvpwb8jfn3xg04n21m9i040vmybrc16g9rdi5alqn8ip54"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -8472,16 +8000,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/codehaus/mojo/animal-sniffer-annotations/1.19/animal-sniffer-annotations-1.19",
|
||||
"path": "org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "45a124d1de95705d6d8e7547e131ebdb3a99fada",
|
||||
"sha256": "1lpidi60kl17mn45c7r00kw2s2msd1qbshg6r32ikk0dv09m379s"
|
||||
"sha1": "4daa545f375cc4e539a97425fb75aa52f856d5e4",
|
||||
"sha256": "149f92fjjr21y0hv0sxfwaayl3dwgm8sadi472i6dchvpaj6wdz6"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "1536e1a8fd552dc05f12b5f0827fbb2ee3d5a89b",
|
||||
"sha256": "17gf2dy2rjlccw3g1n82ipdv8hacak6dnpygaifsn4xgxryc4zp6"
|
||||
"sha1": "0d98c2b001fcb9031859ec9d21914c2ce78912a5",
|
||||
"sha256": "1b12fpkw0gz0d04jd0bpqr70jx6fw3qddlccq3svihidrbgl9pdy"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -8506,12 +8034,12 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/codehaus/mojo/animal-sniffer-parent/1.19/animal-sniffer-parent-1.19",
|
||||
"path": "org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "pom",
|
||||
"pom": {
|
||||
"sha1": "dd4912ea50c7ed0941f713e49457212e83eab926",
|
||||
"sha256": "1f4m3si7bnbdgrl11w5v7r7n99rnj2mkj19awwdyyf5dywkmgav7"
|
||||
"sha1": "a1725fa054a1b943fa3a8e7ee72f1b57b507488d",
|
||||
"sha256": "1bqwv253zjjgm0fdm3hinqmbmvgj8vpwh650cvfrvcg6mdsfd4y4"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -8536,12 +8064,12 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/codehaus/mojo/mojo-parent/50/mojo-parent-50",
|
||||
"path": "org/codehaus/mojo/mojo-parent/61/mojo-parent-61",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "pom",
|
||||
"pom": {
|
||||
"sha1": "8caf7f67d94e762418df68f034c88b6f18433860",
|
||||
"sha256": "0fs9vpgg1lip8pdhfn1rh535wxikvrmyj0dnr28pfsjvn78wl6gq"
|
||||
"sha1": "11fdf4908dbf89fc128efc868ad990ad0a0a8b8a",
|
||||
"sha256": "1bh5g5nzl8624prasq9r4r8i3r7cw7b7bwa9g7342rghbjsl4cvm"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -9143,20 +8671,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/1.3.21/kotlin-reflect-1.3.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "4f1b4f4073d5e72115beca8daa2434c71a57ca6c",
|
||||
"sha256": "1k0b2w4zkvs24xqbsx1g3zjgpbml7dmc2s5xnwg9cfr2jkwymm22"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "d0d5ff2ac2ebd8a42697af41e20fc225a23c5d3b",
|
||||
"sha256": "0sn2w3ly7k28xy3vp9k4515zqd62pqljmq9y7q51w69k4s15q1m3"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9283,20 +8797,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.21/kotlin-stdlib-common-1.3.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "bbd836209881cb60c42ece1fe1fb0f73d6d104dc",
|
||||
"sha256": "0gc7szhlsph3d99xqbhnlv9qr8fd7f1b27ik2bfq645bl4q36i0y"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "f30e4a9897913e53d778f564110bafa1fef46643",
|
||||
"sha256": "19sjvl52mkp060ciw887y61dbc0azibrg6jnb17yd58qc5xiz9nf"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.31/kotlin-stdlib-common-1.3.31",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9353,6 +8853,20 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21/kotlin-stdlib-common-1.4.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "079977f80977960cfc8bc34ddd3d12f9d198682e",
|
||||
"sha256": "1gay55x737xvn3af5dddlai0mgy6j81r69bfnw7ayf7qh2w0m16d"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "7f48a062aa4b53215998780f7c245a4276828e1d",
|
||||
"sha256": "1zxwrhz7fl4qzrxn2q252b8z005nm5r2sppr8wgpxin4v6bz2b41"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9381,20 +8895,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.21/kotlin-stdlib-jdk7-1.3.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "988e21086849c2d0a5a7019e2b0ebd0b0f2b0007",
|
||||
"sha256": "0xjs018bbgcznw413qvkgp9znydqjgfq1dl906jzhgg7di0vlir6"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "d207ce2c9bcf17dc8e51bab4dbfdac4d013e7138",
|
||||
"sha256": "1bwql4kbdf0m4rnzqvjkh921y231xqslvbiqd7d408fl9xh7ay58"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9437,20 +8937,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.21/kotlin-stdlib-jdk8-1.3.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "412a6443082420a3ed1060e1c8ab85a11c9e5a56",
|
||||
"sha256": "11wrz5mzlp7s4xyg4lns4nrqh0kqphydb9l2j53dsvfdzp6c2bap"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "d0634d54452abc421db494ad32dd215e6591c49f",
|
||||
"sha256": "1m3lgzjd5ww7lwqxqbjngzccqhx816iabg1f8iaiqahjmikfs8sq"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9577,20 +9063,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.21/kotlin-stdlib-1.3.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "01cbb529302e235c1bc873de00a85e970335aa61",
|
||||
"sha256": "19drzlj9ykx1cxckdyf8f6fr1k0yav6s04l4xi4gwnvc74rymqcw"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "4bcc2012b84840e19e1e28074284cac908be0295",
|
||||
"sha256": "0d5hf8y7kavrc2911x454wp3qiwlbdvwmch67r1m0vzhv5q27fiq"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.31/kotlin-stdlib-1.3.31",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9647,6 +9119,20 @@
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotlin-stdlib-1.4.21",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "65b290e29135432a1cd6bd364407d39b271f09ff",
|
||||
"sha256": "1gp23b2hbl287xd29r8wf3bihsrxg03j7qaj1c2s56x7nwlmlv07"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "4a668382d7c38688d3490afde93b6a113ed46698",
|
||||
"sha256": "06yh6zhs73imf9mg0ldisw4g5pak7cydx8c3mc95k66v1665v37p"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
|
@ -9836,16 +9322,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0",
|
||||
"path": "org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "34da681c919e0f467c0e53aeefa6516b2715c266",
|
||||
"sha256": "1pa7mgmvhm868lcgjs9dw2m244m6zabqy3bd3i5i0fqbks5svy2a"
|
||||
"sha1": "e30004dc53274dc96d0b9c6a3ac06bdcf6d23d86",
|
||||
"sha256": "0mkiyjq3mvfaayvrb7wpyq6wii68hr7gnwfza6liqhq33g0m8m5c"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "4630afefbb43939c739445dde0af1a5729a0fb4e",
|
||||
"sha256": "19n2r4nk0nsy8189h479hh2vhzi8nyd4ad55kandm92nz1nxwiid"
|
||||
"sha1": "4f61b83b81d8b659958f4bcc48907e93ecea55a0",
|
||||
"sha256": "0d5yqddg5gwayvg4j31772ap0j3c0jc60r4ri9ddmgmqn50q1a41"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -9878,16 +9364,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/ow2/asm/asm-commons/9.0/asm-commons-9.0",
|
||||
"path": "org/ow2/asm/asm-commons/9.1/asm-commons-9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "14fd7f7242906f78ad5a7d6639e6b59f9d57ded5",
|
||||
"sha256": "0xppnddjs7v6rdppjaf7br8mlhw68g9nknwpy3i98x4282277rqh"
|
||||
"sha1": "5914a98fed0e76a0ce92a75704cacaf2454ae90a",
|
||||
"sha256": "0zqv32hxgws5hanbbi3vg0f7npybx9k04yidc479rzlagfr53xm0"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "5a34a3a9ac44f362f35d1b27932380b0031a3334",
|
||||
"sha256": "0bq90arz3xy4gk87n8yfrb77jv9icch01yrc5znx8yz6nyn9140v"
|
||||
"sha1": "8b971b182eb5cf100b9e8d4119152d83e00e0fdd",
|
||||
"sha256": "0360f2s9csaljbpgbjl8qkgihbnqin8719mdk550qb613zf2djxg"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -10012,16 +9498,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/ow2/asm/asm-tree/9.0/asm-tree-9.0",
|
||||
"path": "org/ow2/asm/asm-tree/9.1/asm-tree-9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "e6eca3c6573a118b219a71487fa3f508b4ae1eaf",
|
||||
"sha256": "1rx4k1jkpngiy3gs4892fgzw72b6wdngb402bhghw492zffp0pb3"
|
||||
"sha1": "aeef4f505fe557517394dc29e404fba6ba98c428",
|
||||
"sha256": "0k5ra36zylih3bx4bv9bclbd5w2k2ba0xmy7h47lcdf00y90v85n"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "9df939f25c556b0c7efe00701d47e77a49837f24",
|
||||
"sha256": "03g0fv44wiwsxgl1m5pys10d2xsymidf8s457a462n5r5qrmzhp2"
|
||||
"sha1": "c333f2a855069cb8eb17a40a3eb8b1b67755d0eb",
|
||||
"sha256": "0wsa9dq9rgzpp1cjsvx01gzshxm7nkn9rc05c9jdg5cmksjay07x"
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -10096,16 +9582,16 @@
|
|||
},
|
||||
|
||||
{
|
||||
"path": "org/ow2/asm/asm/9.0/asm-9.0",
|
||||
"path": "org/ow2/asm/asm/9.1/asm-9.1",
|
||||
"host": "https://repo.maven.apache.org/maven2",
|
||||
"type": "jar",
|
||||
"pom": {
|
||||
"sha1": "938b82b2a78eb9b1d383a5fcb243a1801c6e2ea0",
|
||||
"sha256": "1bcl7bh8bl42ssddpkla4rayhwi9k6p2946pr36wrgyi1mcma0yy"
|
||||
"sha1": "927153d04a920d5f06a9a4aefd5f6be60726117d",
|
||||
"sha256": "13fyrv9l97fkiygij71pbf9gapj0m5z69i6zrf41fawgsq6sk0y6"
|
||||
},
|
||||
"jar": {
|
||||
"sha1": "af582ff60bc567c42d931500c3fdc20e0141ddf9",
|
||||
"sha256": "1q48g3afm40a1yshp7i35idx8i9k1zhb834x6kyr5vjaj5s7by8d"
|
||||
"sha1": "a99500cf6eea30535eeac6be73899d048f8d12a8",
|
||||
"sha256": "18pbdf9z11m9jjh31z3ska2xxm27jiiv8j3wrc5zyj5bbx2xx96d"
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -21,15 +21,12 @@ androidx.cursoradapter:cursoradapter:1.0.0
|
|||
androidx.customview:customview:1.0.0
|
||||
androidx.databinding:databinding-common:3.2.1
|
||||
androidx.databinding:databinding-common:3.3.1
|
||||
androidx.databinding:databinding-common:3.4.0
|
||||
androidx.databinding:databinding-common:3.5.3
|
||||
androidx.databinding:databinding-compiler-common:3.2.1
|
||||
androidx.databinding:databinding-compiler-common:3.3.1
|
||||
androidx.databinding:databinding-compiler-common:3.4.0
|
||||
androidx.databinding:databinding-compiler-common:3.5.3
|
||||
androidx.documentfile:documentfile:1.0.0
|
||||
androidx.drawerlayout:drawerlayout:1.0.0
|
||||
androidx.exifinterface:exifinterface:1.0.0
|
||||
androidx.exifinterface:exifinterface:1.1.0-beta01
|
||||
androidx.exifinterface:exifinterface:1.1.0-rc01
|
||||
androidx.fragment:fragment:1.0.0
|
||||
|
@ -85,35 +82,35 @@ com.afollestad.material-dialogs:core:0.9.6.0
|
|||
com.android.databinding:baseLibrary:1.0-rc5
|
||||
com.android.databinding:baseLibrary:3.0.0
|
||||
com.android.databinding:baseLibrary:3.0.1
|
||||
com.android.databinding:baseLibrary:3.1.4
|
||||
com.android.databinding:baseLibrary:3.2.1
|
||||
com.android.databinding:baseLibrary:3.3.1
|
||||
com.android.databinding:baseLibrary:3.4.0
|
||||
com.android.databinding:baseLibrary:3.5.3
|
||||
com.android.databinding:compilerCommon:1.0-rc5
|
||||
com.android.databinding:compilerCommon:3.0.0
|
||||
com.android.databinding:compilerCommon:3.0.1
|
||||
com.android.databinding:compilerCommon:3.1.4
|
||||
com.android.installreferrer:installreferrer:1.1.2
|
||||
com.android.tools.analytics-library:crash:26.2.1
|
||||
com.android.tools.analytics-library:crash:26.3.1
|
||||
com.android.tools.analytics-library:crash:26.4.0
|
||||
com.android.tools.analytics-library:crash:26.5.3
|
||||
com.android.tools.analytics-library:protos:26.0.0
|
||||
com.android.tools.analytics-library:protos:26.0.1
|
||||
com.android.tools.analytics-library:protos:26.1.4
|
||||
com.android.tools.analytics-library:protos:26.2.1
|
||||
com.android.tools.analytics-library:protos:26.3.1
|
||||
com.android.tools.analytics-library:protos:26.4.0
|
||||
com.android.tools.analytics-library:protos:26.5.3
|
||||
com.android.tools.analytics-library:shared:26.0.0
|
||||
com.android.tools.analytics-library:shared:26.0.1
|
||||
com.android.tools.analytics-library:shared:26.1.4
|
||||
com.android.tools.analytics-library:shared:26.2.1
|
||||
com.android.tools.analytics-library:shared:26.3.1
|
||||
com.android.tools.analytics-library:shared:26.4.0
|
||||
com.android.tools.analytics-library:shared:26.5.3
|
||||
com.android.tools.analytics-library:tracker:26.0.0
|
||||
com.android.tools.analytics-library:tracker:26.0.1
|
||||
com.android.tools.analytics-library:tracker:26.1.4
|
||||
com.android.tools.analytics-library:tracker:26.2.1
|
||||
com.android.tools.analytics-library:tracker:26.3.1
|
||||
com.android.tools.analytics-library:tracker:26.4.0
|
||||
com.android.tools.analytics-library:tracker:26.5.3
|
||||
com.android.tools.build.jetifier:jetifier-core:1.0.0-alpha10
|
||||
com.android.tools.build.jetifier:jetifier-core:1.0.0-beta02
|
||||
|
@ -121,77 +118,78 @@ com.android.tools.build.jetifier:jetifier-core:1.0.0-beta04
|
|||
com.android.tools.build.jetifier:jetifier-processor:1.0.0-alpha10
|
||||
com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02
|
||||
com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta04
|
||||
com.android.tools.build:aapt2-proto:0.1.0
|
||||
com.android.tools.build:aapt2-proto:0.3.1
|
||||
com.android.tools.build:aapt2-proto:0.4.0
|
||||
com.android.tools.build:apksig:3.0.0
|
||||
com.android.tools.build:apksig:3.0.1
|
||||
com.android.tools.build:apksig:3.1.4
|
||||
com.android.tools.build:apksig:3.2.1
|
||||
com.android.tools.build:apksig:3.3.1
|
||||
com.android.tools.build:apksig:3.4.0
|
||||
com.android.tools.build:apksig:3.5.3
|
||||
com.android.tools.build:apkzlib:3.2.1
|
||||
com.android.tools.build:apkzlib:3.3.1
|
||||
com.android.tools.build:apkzlib:3.4.0
|
||||
com.android.tools.build:apkzlib:3.5.3
|
||||
com.android.tools.build:builder-model:1.1.3
|
||||
com.android.tools.build:builder-model:1.3.1
|
||||
com.android.tools.build:builder-model:1.5.0
|
||||
com.android.tools.build:builder-model:3.0.0
|
||||
com.android.tools.build:builder-model:3.0.1
|
||||
com.android.tools.build:builder-model:3.1.4
|
||||
com.android.tools.build:builder-model:3.2.1
|
||||
com.android.tools.build:builder-model:3.3.1
|
||||
com.android.tools.build:builder-model:3.4.0
|
||||
com.android.tools.build:builder-model:3.5.3
|
||||
com.android.tools.build:builder-test-api:1.1.3
|
||||
com.android.tools.build:builder-test-api:1.3.1
|
||||
com.android.tools.build:builder-test-api:1.5.0
|
||||
com.android.tools.build:builder-test-api:3.0.0
|
||||
com.android.tools.build:builder-test-api:3.0.1
|
||||
com.android.tools.build:builder-test-api:3.1.4
|
||||
com.android.tools.build:builder-test-api:3.2.1
|
||||
com.android.tools.build:builder-test-api:3.3.1
|
||||
com.android.tools.build:builder-test-api:3.4.0
|
||||
com.android.tools.build:builder-test-api:3.5.3
|
||||
com.android.tools.build:builder:1.1.3
|
||||
com.android.tools.build:builder:1.3.1
|
||||
com.android.tools.build:builder:1.5.0
|
||||
com.android.tools.build:builder:3.0.0
|
||||
com.android.tools.build:builder:3.0.1
|
||||
com.android.tools.build:builder:3.1.4
|
||||
com.android.tools.build:builder:3.2.1
|
||||
com.android.tools.build:builder:3.3.1
|
||||
com.android.tools.build:builder:3.4.0
|
||||
com.android.tools.build:builder:3.5.3
|
||||
com.android.tools.build:bundletool:0.1.0-alpha01
|
||||
com.android.tools.build:bundletool:0.5.0
|
||||
com.android.tools.build:bundletool:0.6.0
|
||||
com.android.tools.build:bundletool:0.7.2
|
||||
com.android.tools.build:bundletool:0.9.0
|
||||
com.android.tools.build:gradle-api:3.0.0
|
||||
com.android.tools.build:gradle-api:3.0.1
|
||||
com.android.tools.build:gradle-api:3.1.4
|
||||
com.android.tools.build:gradle-api:3.2.1
|
||||
com.android.tools.build:gradle-api:3.3.1
|
||||
com.android.tools.build:gradle-api:3.4.0
|
||||
com.android.tools.build:gradle-api:3.5.3
|
||||
com.android.tools.build:gradle-core:1.1.3
|
||||
com.android.tools.build:gradle-core:1.3.1
|
||||
com.android.tools.build:gradle-core:1.5.0
|
||||
com.android.tools.build:gradle-core:3.0.0
|
||||
com.android.tools.build:gradle-core:3.0.1
|
||||
com.android.tools.build:gradle-core:3.1.4
|
||||
com.android.tools.build:gradle:1.1.3
|
||||
com.android.tools.build:gradle:1.3.1
|
||||
com.android.tools.build:gradle:1.5.0
|
||||
com.android.tools.build:gradle:3.0.0
|
||||
com.android.tools.build:gradle:3.0.1
|
||||
com.android.tools.build:gradle:3.1.4
|
||||
com.android.tools.build:gradle:3.2.1
|
||||
com.android.tools.build:gradle:3.3.1
|
||||
com.android.tools.build:gradle:3.4.0
|
||||
com.android.tools.build:gradle:3.5.3
|
||||
com.android.tools.build:manifest-merger:24.1.3
|
||||
com.android.tools.build:manifest-merger:24.3.1
|
||||
com.android.tools.build:manifest-merger:24.5.0
|
||||
com.android.tools.build:manifest-merger:26.0.0
|
||||
com.android.tools.build:manifest-merger:26.0.1
|
||||
com.android.tools.build:manifest-merger:26.1.4
|
||||
com.android.tools.build:manifest-merger:26.2.1
|
||||
com.android.tools.build:manifest-merger:26.3.1
|
||||
com.android.tools.build:manifest-merger:26.4.0
|
||||
com.android.tools.build:manifest-merger:26.5.3
|
||||
com.android.tools.build:transform-api:1.5.0
|
||||
com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api
|
||||
|
@ -200,9 +198,9 @@ com.android.tools.ddms:ddmlib:24.3.1
|
|||
com.android.tools.ddms:ddmlib:24.5.0
|
||||
com.android.tools.ddms:ddmlib:26.0.0
|
||||
com.android.tools.ddms:ddmlib:26.0.1
|
||||
com.android.tools.ddms:ddmlib:26.1.4
|
||||
com.android.tools.ddms:ddmlib:26.2.1
|
||||
com.android.tools.ddms:ddmlib:26.3.1
|
||||
com.android.tools.ddms:ddmlib:26.4.0
|
||||
com.android.tools.ddms:ddmlib:26.5.3
|
||||
com.android.tools.external.com-intellij:intellij-core:26.0.0
|
||||
com.android.tools.external.com-intellij:intellij-core:26.0.1
|
||||
|
@ -219,9 +217,9 @@ com.android.tools.layoutlib:layoutlib-api:24.3.1
|
|||
com.android.tools.layoutlib:layoutlib-api:24.5.0
|
||||
com.android.tools.layoutlib:layoutlib-api:26.0.0
|
||||
com.android.tools.layoutlib:layoutlib-api:26.0.1
|
||||
com.android.tools.layoutlib:layoutlib-api:26.1.4
|
||||
com.android.tools.layoutlib:layoutlib-api:26.2.1
|
||||
com.android.tools.layoutlib:layoutlib-api:26.3.1
|
||||
com.android.tools.layoutlib:layoutlib-api:26.4.0
|
||||
com.android.tools.layoutlib:layoutlib-api:26.5.3
|
||||
com.android.tools.lint:lint-api:24.1.3
|
||||
com.android.tools.lint:lint-api:24.3.1
|
||||
|
@ -235,9 +233,9 @@ com.android.tools.lint:lint-checks:24.5.0
|
|||
com.android.tools.lint:lint-checks:26.0.0
|
||||
com.android.tools.lint:lint-checks:26.0.1
|
||||
com.android.tools.lint:lint-checks:26.5.3
|
||||
com.android.tools.lint:lint-gradle-api:26.1.4
|
||||
com.android.tools.lint:lint-gradle-api:26.2.1
|
||||
com.android.tools.lint:lint-gradle-api:26.3.1
|
||||
com.android.tools.lint:lint-gradle-api:26.4.0
|
||||
com.android.tools.lint:lint-gradle-api:26.5.3
|
||||
com.android.tools.lint:lint-gradle:26.5.3
|
||||
com.android.tools.lint:lint:24.1.3
|
||||
|
@ -251,51 +249,51 @@ com.android.tools:annotations:24.3.1
|
|||
com.android.tools:annotations:24.5.0
|
||||
com.android.tools:annotations:26.0.0
|
||||
com.android.tools:annotations:26.0.1
|
||||
com.android.tools:annotations:26.1.4
|
||||
com.android.tools:annotations:26.2.1
|
||||
com.android.tools:annotations:26.3.1
|
||||
com.android.tools:annotations:26.4.0
|
||||
com.android.tools:annotations:26.5.3
|
||||
com.android.tools:common:24.1.3
|
||||
com.android.tools:common:24.3.1
|
||||
com.android.tools:common:24.5.0
|
||||
com.android.tools:common:26.0.0
|
||||
com.android.tools:common:26.0.1
|
||||
com.android.tools:common:26.1.4
|
||||
com.android.tools:common:26.2.1
|
||||
com.android.tools:common:26.3.1
|
||||
com.android.tools:common:26.4.0
|
||||
com.android.tools:common:26.5.3
|
||||
com.android.tools:dvlib:24.1.3
|
||||
com.android.tools:dvlib:24.3.1
|
||||
com.android.tools:dvlib:24.5.0
|
||||
com.android.tools:dvlib:26.0.0
|
||||
com.android.tools:dvlib:26.0.1
|
||||
com.android.tools:dvlib:26.1.4
|
||||
com.android.tools:dvlib:26.2.1
|
||||
com.android.tools:dvlib:26.3.1
|
||||
com.android.tools:dvlib:26.4.0
|
||||
com.android.tools:dvlib:26.5.3
|
||||
com.android.tools:repository:26.0.0
|
||||
com.android.tools:repository:26.0.1
|
||||
com.android.tools:repository:26.1.4
|
||||
com.android.tools:repository:26.2.1
|
||||
com.android.tools:repository:26.3.1
|
||||
com.android.tools:repository:26.4.0
|
||||
com.android.tools:repository:26.5.3
|
||||
com.android.tools:sdklib:24.1.3
|
||||
com.android.tools:sdklib:24.3.1
|
||||
com.android.tools:sdklib:24.5.0
|
||||
com.android.tools:sdklib:26.0.0
|
||||
com.android.tools:sdklib:26.0.1
|
||||
com.android.tools:sdklib:26.1.4
|
||||
com.android.tools:sdklib:26.2.1
|
||||
com.android.tools:sdklib:26.3.1
|
||||
com.android.tools:sdklib:26.4.0
|
||||
com.android.tools:sdklib:26.5.3
|
||||
com.android.tools:sdk-common:24.1.3
|
||||
com.android.tools:sdk-common:24.3.1
|
||||
com.android.tools:sdk-common:24.5.0
|
||||
com.android.tools:sdk-common:26.0.0
|
||||
com.android.tools:sdk-common:26.0.1
|
||||
com.android.tools:sdk-common:26.1.4
|
||||
com.android.tools:sdk-common:26.2.1
|
||||
com.android.tools:sdk-common:26.3.1
|
||||
com.android.tools:sdk-common:26.4.0
|
||||
com.android.tools:sdk-common:26.5.3
|
||||
com.drewnoakes:metadata-extractor:2.9.1
|
||||
com.facebook.conceal:conceal:1.1.3
|
||||
|
@ -333,12 +331,6 @@ com.facebook.soloader:annotation:0.9.0
|
|||
com.facebook.soloader:nativeloader:0.9.0
|
||||
com.facebook.soloader:soloader:0.9.0
|
||||
com.facebook.yoga:proguard-annotations:1.14.1
|
||||
com.github.bumptech.glide:annotations:4.11.0
|
||||
com.github.bumptech.glide:compiler:4.11.0
|
||||
com.github.bumptech.glide:disklrucache:4.11.0
|
||||
com.github.bumptech.glide:gifdecoder:4.11.0
|
||||
com.github.bumptech.glide:glide:4.11.0
|
||||
com.github.bumptech.glide:okhttp3-integration:4.11.0
|
||||
com.github.status-im.status-keycard-java:android:3.0.4
|
||||
com.github.status-im.status-keycard-java:lib:3.0.4
|
||||
com.github.status-im:function:0.0.1
|
||||
|
@ -356,9 +348,11 @@ com.google.code.findbugs:jsr305:1.3.9
|
|||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.2.4
|
||||
com.google.code.gson:gson:2.3
|
||||
com.google.code.gson:gson:2.7
|
||||
com.google.code.gson:gson:2.8.0
|
||||
com.google.code.gson:gson:2.8.5
|
||||
com.google.errorprone:error_prone_annotations:2.0.18
|
||||
com.google.errorprone:error_prone_annotations:2.1.2
|
||||
com.google.errorprone:error_prone_annotations:2.2.0
|
||||
com.google.errorprone:error_prone_annotations:2.3.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
|
@ -465,7 +459,6 @@ org.jetbrains.kotlin:kotlin-native-utils:1.3.50
|
|||
org.jetbrains.kotlin:kotlin-reflect:1.1.3-2
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.3.21
|
||||
org.jetbrains.kotlin:kotlin-reflect:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-scripting-common:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.50
|
||||
|
@ -474,20 +467,19 @@ org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.50
|
|||
org.jetbrains.kotlin:kotlin-script-runtime:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.21
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.1.3-2
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.3.21
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.3.50
|
||||
org.jetbrains.trove4j:trove4j:20160824
|
||||
|
|
|
@ -27,15 +27,12 @@ https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0
|
|||
https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.2.1/databinding-common-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.3.1/databinding-common-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.4.0/databinding-common-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.5.3/databinding-common-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.2.1/databinding-compiler-common-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.3.1/databinding-compiler-common-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.4.0/databinding-compiler-common-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.5.3/databinding-compiler-common-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/documentfile/documentfile/1.0.0/documentfile-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.0.0/exifinterface-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-beta01/exifinterface-1.1.0-beta01.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-rc01/exifinterface-1.1.0-rc01.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.0.0/fragment-1.0.0.pom
|
||||
|
@ -89,7 +86,6 @@ https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.
|
|||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.1.4/baseLibrary-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.2.1/baseLibrary-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.3.1/baseLibrary-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.4.0/baseLibrary-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.5.3/baseLibrary-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.0/compilerCommon-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.1/compilerCommon-3.0.1.pom
|
||||
|
@ -117,35 +113,30 @@ https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawa
|
|||
https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawable/27.0.1/support-vector-drawable-27.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.2.1/crash-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.3.1/crash-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.4.0/crash-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.5.3/crash-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.0/protos-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.1/protos-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.1.4/protos-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.2.1/protos-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.3.1/protos-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.4.0/protos-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.5.3/protos-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.0/shared-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.1/shared-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.1.4/shared-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.2.1/shared-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.3.1/shared-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.4.0/shared-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.5.3/shared-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.0/tracker-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.1/tracker-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.1.4/tracker-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.2.1/tracker-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.3.1/tracker-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.4.0/tracker-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.5.3/tracker-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.0/annotations-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.1/annotations-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.1.4/annotations-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.2.1/annotations-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.3.1/annotations-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.4.0/annotations-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.5.3/annotations-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.1.0/aapt2-proto-0.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.3.1/aapt2-proto-0.3.1.pom
|
||||
|
@ -155,44 +146,37 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.1/apk
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.1.4/apksig-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.2.1/apksig-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.3.1/apksig-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.4.0/apksig-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.5.3/apksig-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.2.1/apkzlib-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.3.1/apkzlib-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.4.0/apkzlib-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.5.3/apkzlib-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.0/builder-model-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.1/builder-model-3.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.1.4/builder-model-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.2.1/builder-model-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.3.1/builder-model-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.4.0/builder-model-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.5.3/builder-model-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.0/builder-test-api-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.1/builder-test-api-3.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.1.4/builder-test-api-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.2.1/builder-test-api-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.3.1/builder-test-api-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.4.0/builder-test-api-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.5.3/builder-test-api-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.0/builder-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.1.4/builder-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.2.1/builder-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.3.1/builder-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.4.0/builder-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.5.3/builder-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.1.0-alpha01/bundletool-0.1.0-alpha01.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.5.0/bundletool-0.5.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.6.0/bundletool-0.6.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.7.2/bundletool-0.7.2.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.9.0/bundletool-0.9.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.0/gradle-api-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.1/gradle-api-3.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.1.4/gradle-api-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.2.1/gradle-api-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.3.1/gradle-api-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.4.0/gradle-api-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.5.3/gradle-api-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.0/gradle-core-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.1/gradle-core-3.0.1.pom
|
||||
|
@ -202,7 +186,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gra
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.4/gradle-3.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.2.1/gradle-3.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.1/gradle-3.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.3/gradle-3.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-alpha10/jetifier-core-1.0.0-alpha10.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-beta02/jetifier-core-1.0.0-beta02.pom
|
||||
|
@ -215,28 +198,24 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.1.4/manifest-merger-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.2.1/manifest-merger-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.3.1/manifest-merger-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.4.0/manifest-merger-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.5.3/manifest-merger-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.0/common-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.1/common-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.1.4/common-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.2.1/common-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.3.1/common-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.4.0/common-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.5.3/common-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.0/ddmlib-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.1/ddmlib-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.1.4/ddmlib-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.3.1/ddmlib-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.4.0/ddmlib-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.5.3/ddmlib-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.0/dvlib-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.1/dvlib-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.1.4/dvlib-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.2.1/dvlib-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.3.1/dvlib-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.4.0/dvlib-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.5.3/dvlib-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.0/intellij-core-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.1/intellij-core-26.0.1.pom
|
||||
|
@ -250,7 +229,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-ap
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.1.4/layoutlib-api-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.2.1/layoutlib-api-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.3.1/layoutlib-api-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.4.0/layoutlib-api-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.5.3/layoutlib-api-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.0/lint-api-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.1/lint-api-26.0.1.pom
|
||||
|
@ -261,7 +239,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.5.
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.1.4/lint-gradle-api-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.2.1/lint-gradle-api-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.3.1/lint-gradle-api-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.4.0/lint-gradle-api-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.5.3/lint-gradle-api-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.5.3/lint-gradle-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.0/lint-26.0.0.pom
|
||||
|
@ -272,21 +249,18 @@ https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.1/repo
|
|||
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.1.4/repository-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.2.1/repository-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.3.1/repository-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.4.0/repository-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.5.3/repository-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.0/sdklib-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.1/sdklib-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.1.4/sdklib-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.2.1/sdklib-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.3.1/sdklib-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.4.0/sdklib-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.5.3/sdklib-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.0/sdk-common-26.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.1.4/sdk-common-26.1.4.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.2.1/sdk-common-26.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.3.1/sdk-common-26.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.4.0/sdk-common-26.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.3/sdk-common-26.5.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-basement/17.0.0/play-services-basement-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.pom
|
||||
|
@ -409,12 +383,6 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.6.0/soload
|
|||
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.8.2/soloader-0.8.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.9.0/soloader-0.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/stetho/stetho/1.3.1/stetho-1.3.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/annotations/4.11.0/annotations-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/compiler/4.11.0/compiler-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/disklrucache/4.11.0/disklrucache-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/gifdecoder/4.11.0/gifdecoder-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/glide/4.11.0/glide-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/okhttp3-integration/4.11.0/okhttp3-integration-4.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/3/auto-parent-3.pom
|
||||
|
@ -471,8 +439,8 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.0.0-rc-
|
|||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.0.0-rc-2/protobuf-parent-4.0.0-rc-2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.1/truth-parent-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.1/truth-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.1.2/truth-parent-1.1.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.1.2/truth-1.1.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/zxing/core/3.3.0/core-3.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/zxing/zxing-parent/3.3.0/zxing-parent-3.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/intellij/annotations/12.0/annotations-12.0.pom
|
||||
|
@ -481,11 +449,9 @@ https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tas
|
|||
https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.12/okhttp-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/4.10.0-RC1/okhttp-4.10.0-RC1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.2/okhttp-5.0.0-alpha.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom
|
||||
|
@ -625,18 +591,18 @@ https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov
|
|||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.9.1/checker-qual-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.10.0/checker-qual-3.10.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.19/animal-sniffer-annotations-1.19.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.19/animal-sniffer-parent-1.19.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/50/mojo-parent-50.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/61/mojo-parent-61.pom
|
||||
https://repo.maven.apache.org/maven2/org/conscrypt/conscrypt-android/2.0.0/conscrypt-android-2.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
|
||||
|
@ -682,7 +648,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-native-utils/1.
|
|||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.1.3-2/kotlin-reflect-1.1.3-2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.2.0/kotlin-reflect-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.20/kotlin-reflect-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.21/kotlin-reflect-1.3.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.3.50/kotlin-scripting-common-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.50/kotlin-scripting-compiler-embeddable-1.3.50.pom
|
||||
|
@ -692,18 +657,16 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/
|
|||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.71/kotlin-stdlib-common-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.0/kotlin-stdlib-common-1.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.20/kotlin-stdlib-common-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.21/kotlin-stdlib-common-1.3.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.31/kotlin-stdlib-common-1.3.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21/kotlin-stdlib-common-1.4.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.20/kotlin-stdlib-jdk7-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.21/kotlin-stdlib-jdk7-1.3.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.20/kotlin-stdlib-jdk8-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.21/kotlin-stdlib-jdk8-1.3.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom
|
||||
|
@ -713,11 +676,11 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.20/k
|
|||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotlin-stdlib-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.0/kotlin-stdlib-1.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.20/kotlin-stdlib-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.21/kotlin-stdlib-1.3.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.31/kotlin-stdlib-1.3.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotlin-stdlib-1.4.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.5.2/junit-jupiter-api-5.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.pom
|
||||
|
@ -732,10 +695,10 @@ https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-
|
|||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/5.1/asm-commons-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/6.0_BETA/asm-debug-all-6.0_BETA.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.1/asm-parent-5.0.1.pom
|
||||
|
@ -746,13 +709,13 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/6.0_BETA/asm-parent-
|
|||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.1/asm-tree-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/5.1/asm-util-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.3/asm-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.1/asm-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/6.0/asm-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
|
||||
|
|
|
@ -12,7 +12,6 @@ react-native-config
|
|||
react-native-dark-mode
|
||||
react-native-device-info
|
||||
react-native-dialogs
|
||||
react-native-fast-image
|
||||
react-native-fs
|
||||
react-native-gesture-handler
|
||||
react-native-haptic-feedback
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
"react-native-dark-mode": "^0.2.2",
|
||||
"react-native-device-info": "^5.6.1",
|
||||
"react-native-dialogs": "^1.0.4",
|
||||
"react-native-fast-image": "^8.3.4",
|
||||
"react-native-fetch-polyfill": "^1.1.2",
|
||||
"react-native-fs": "^2.14.1",
|
||||
"react-native-gesture-handler": "^1.8.0",
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
patch-package
|
||||
--- a/node_modules/metro/src/DeltaBundler/WorkerFarm.js
|
||||
+++ b/node_modules/metro/src/DeltaBundler/WorkerFarm.js
|
||||
@@ -130,6 +130,7 @@ class WorkerFarm {
|
||||
if (execArgv.length > 0 && execArgv[0].charAt(0) !== "-") {
|
||||
execArgv.shift();
|
||||
}
|
||||
+ execArgv.push("--max-old-space-size=8192");
|
||||
|
||||
const env = _extends({}, process.env, {
|
||||
// Force color to print syntax highlighted code frames.
|
|
@ -16,7 +16,7 @@
|
|||
[refactor-nrepl "2.5.0"]
|
||||
[cider/cider-nrepl "0.25.3"]
|
||||
[cider/piggieback "0.4.1"]
|
||||
[re-frisk-remote "1.3.8"]
|
||||
[re-frisk-remote "1.3.11"]
|
||||
;; routing
|
||||
[bidi "2.1.6"]
|
||||
;; test dependencies
|
||||
|
@ -51,7 +51,7 @@
|
|||
;; in the SHADOW_HOST env variable to make sure that
|
||||
;; it will use the right interface
|
||||
:local-ip #shadow/env "SHADOW_HOST"}
|
||||
:chunks {:fleets status-im.default-fleet/default-fleets
|
||||
:chunks {:fleets status-im.fleet.default-fleet/default-fleets
|
||||
:chats status-im.chat.default-chats/default-chats}
|
||||
:release {:closure-defines {status-im.utils.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"}
|
||||
:compiler-options {:output-feature-set :es6
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(ns mocks.js-dependencies
|
||||
(:require-macros [status-im.utils.slurp :refer [slurp]])
|
||||
(:require [status-im.default-fleet :refer (default-fleets)])
|
||||
(:require [status-im.fleet.default-fleet :refer (default-fleets)])
|
||||
(:require [status-im.chat.default-chats :refer (default-chats)]))
|
||||
|
||||
(def action-button #js {:default #js {:Item #js {}}})
|
||||
|
@ -25,7 +25,6 @@
|
|||
:RefreshControl {}
|
||||
:FlatList {}
|
||||
:Text {}
|
||||
:ProgressBarAndroid {}
|
||||
:StatusBar {}
|
||||
:ScrollView {}
|
||||
:KeyboardAvoidingView {}
|
||||
|
@ -72,7 +71,7 @@
|
|||
|
||||
(def reanimated-bottom-sheet #js {:default #js {}})
|
||||
|
||||
(def vector-icons #js {:default #js {}})
|
||||
(def icons #js {:default #js {}})
|
||||
(def webview #js {:WebView #js {}})
|
||||
(def status-keycard #js {:default #js {}})
|
||||
|
||||
|
@ -196,10 +195,6 @@
|
|||
|
||||
(def push-notification-ios #js {})
|
||||
|
||||
(def fast-image #js {:priority #js {}
|
||||
:cacheControl #js {}
|
||||
:resizeMode #js {}})
|
||||
|
||||
;; Update i18n_resources.cljs
|
||||
(defn mock [module]
|
||||
(case module
|
||||
|
@ -224,7 +219,6 @@
|
|||
"react-native-dialogs" dialogs
|
||||
"react-native" react-native
|
||||
"react-native-fs" fs
|
||||
"react-native-fast-image" fast-image
|
||||
"react-native-mail" react-native-mail
|
||||
"react-native-image-resizer" image-resizer
|
||||
"react-native-haptic-feedback" react-native-haptic-feedback
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
[quo.design-system.spacing :as spacing]
|
||||
[quo.components.text :as text]
|
||||
;; FIXME:
|
||||
[status-im.ui.components.icons.vector-icons :as icons]))
|
||||
[status-im.ui.components.icons.icons :as icons]))
|
||||
|
||||
(defn style-container [type]
|
||||
(merge {:height 44
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
[quo.gesture-handler :as gh]
|
||||
[quo.design-system.colors :as colors]
|
||||
[quo.components.controls.styles :as styles]
|
||||
[status-im.ui.components.icons.vector-icons :as icons]))
|
||||
[status-im.ui.components.icons.icons :as icons]))
|
||||
|
||||
(defn control-builder [component]
|
||||
(fn [props]
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
[quo.components.controls.view :as controls]
|
||||
[quo.components.tooltip :as tooltip]
|
||||
;; FIXME:
|
||||
[status-im.ui.components.icons.vector-icons :as icons]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[quo.components.animated.pressable :as animated]))
|
||||
|
||||
(defn themes [theme]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
[oops.core :refer [ocall]]
|
||||
[quo.react-native :as rn]
|
||||
;; TODO(Ferossgp): Move icon component to lib
|
||||
[status-im.ui.components.icons.vector-icons :as icons]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[quo.components.tooltip :as tooltip]
|
||||
[quo.platform :as platform]
|
||||
[quo.design-system.typography :as typography]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
[quo.design-system.spacing :as spacing]
|
||||
[quo.platform :as platform]
|
||||
;; FIXME(Ferossgp): Dependecy on status
|
||||
[status-im.ui.components.icons.vector-icons :as vector-icons]))
|
||||
[status-im.ui.components.icons.icons :as icons]))
|
||||
|
||||
(def ^:private initial-height 22)
|
||||
|
||||
|
@ -66,7 +66,7 @@
|
|||
|
||||
(when platform/ios?
|
||||
;; NOTE(Ferossgp): Android does not show elevation for tooltip making it lost on white bg
|
||||
[vector-icons/icon :icons/tooltip-tip {:width 18
|
||||
:height 8
|
||||
:container-style {:elevation 3}
|
||||
:color (:ui-background @colors/theme)}])]]])))
|
||||
[icons/icon :icons/tooltip-tip {:width 18
|
||||
:height 8
|
||||
:container-style {:elevation 3}
|
||||
:color (:ui-background @colors/theme)}])]]])))
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
(ns quo.fast-image
|
||||
(:require [reagent.core :as reagent]
|
||||
["react-native-fast-image" :as react-native-fast-image]))
|
||||
|
||||
;; Fast iamge
|
||||
|
||||
;;TODO : Gif crashes on Samsung S10 https://github.com/status-im/status-react/issues/11610
|
||||
(def image (reagent/adapt-react-class react-native-fast-image))
|
||||
|
||||
(def fast-image-preload (.-preload react-native-fast-image))
|
||||
|
||||
(def fast-image-priorities
|
||||
{:low (-> ^js react-native-fast-image .-priority .-low)
|
||||
:normal (-> ^js react-native-fast-image .-priority .-normal)
|
||||
:high (-> ^js react-native-fast-image .-priority .-high)})
|
||||
|
||||
(def fast-image-cache
|
||||
{:immutable (-> ^js react-native-fast-image .-cacheControl .-immutable)
|
||||
:web (-> ^js react-native-fast-image .-cacheControl .-web)
|
||||
:cache-only (-> ^js react-native-fast-image .-cacheControl .-cacheOnly)})
|
||||
|
||||
(def fast-image-resize-mode
|
||||
{:contain (-> ^js react-native-fast-image .-resizeMode .-contain)
|
||||
:cover (-> ^js react-native-fast-image .-resizeMode .-cover)
|
||||
:stretch (-> ^js react-native-fast-image .-resizeMode .-stretch)
|
||||
:center (-> ^js react-native-fast-image .-resizeMode .-center)})
|
|
@ -1,13 +1,12 @@
|
|||
(ns quo.previews.icons
|
||||
(:require [quo.design-system.colors :as colors]
|
||||
[quo.react-native :as rn]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[status-im.ui.components.icons.vector-icons :as vector-icons]))
|
||||
[status-im.ui.components.icons.icons :as icons]))
|
||||
|
||||
(defn preview []
|
||||
[rn/scroll-view {:background-color (:ui-background @colors/theme)
|
||||
:flex 1}
|
||||
(for [i (keys icons/icons)]
|
||||
[rn/view {:flex-direction :row}
|
||||
[vector-icons/icon (keyword i)]
|
||||
[icons/icon (keyword i)]
|
||||
[rn/text i]])])
|
|
@ -1,11 +0,0 @@
|
|||
(ns reagent.dom)
|
||||
;; Shimmed namespace to make reagent 0.6.0 work with react native packager
|
||||
|
||||
(defn render
|
||||
([_ _])
|
||||
([_ _ _]))
|
||||
(defn unmount-component-at-node [_])
|
||||
|
||||
(defn dom-node [_])
|
||||
|
||||
(defn force-update-all [])
|
|
@ -8,7 +8,7 @@
|
|||
[status-im.acquisition.gateway :as gateway]
|
||||
[status-im.chat.models :as chat]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]))
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]))
|
||||
|
||||
(def public-chat "public-chat")
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.utils.types :as types]))
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.notifications.android :as pn-android]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.notifications.core :as notifications]
|
||||
[status-im.ui.components.react :as react]
|
||||
[quo.platform :as platform]
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
(ns status-im.add-new.core
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.resolver :as resolver]
|
||||
[status-im.add-new.db :as db]
|
||||
[status-im.utils.random :as random]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.chat.models :as chat]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.contact.core :as contact]
|
||||
[status-im.router.core :as router]
|
||||
[status-im.navigation :as navigation]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:resolve-public-key
|
||||
(fn [{:keys [chain contact-identity cb]}]
|
||||
(let [registry (get ens/ens-registries chain)
|
||||
ens-name (resolver/ens-name-parse contact-identity)]
|
||||
(resolver/pubkey registry ens-name cb))))
|
||||
|
||||
;;NOTE we want to handle only last resolve
|
||||
(def resolve-last-id (atom nil))
|
||||
|
||||
(fx/defn new-chat-set-new-identity
|
||||
{:events [:new-chat/set-new-identity]}
|
||||
[{db :db} new-identity-raw new-ens-name id]
|
||||
(when (or (not id) (= id @resolve-last-id))
|
||||
(let [new-identity (utils/safe-trim new-identity-raw)
|
||||
is-public-key? (and (string? new-identity)
|
||||
(string/starts-with? new-identity "0x"))
|
||||
is-ens? (and (not is-public-key?)
|
||||
(ens/valid-eth-name-prefix? new-identity))
|
||||
error (db/validate-pub-key db new-identity)]
|
||||
(reset! resolve-last-id nil)
|
||||
(merge {:db (assoc db
|
||||
:contacts/new-identity
|
||||
{:public-key new-identity
|
||||
:state (cond is-ens?
|
||||
:searching
|
||||
(and (string/blank? new-identity) (not new-ens-name))
|
||||
:empty
|
||||
error
|
||||
:error
|
||||
:else
|
||||
:valid)
|
||||
:error error
|
||||
:ens-name (resolver/ens-name-parse new-ens-name)})}
|
||||
(when is-ens?
|
||||
(reset! resolve-last-id (random/id))
|
||||
(let [chain (ethereum/chain-keyword db)]
|
||||
{:resolve-public-key
|
||||
{:chain chain
|
||||
:contact-identity new-identity
|
||||
:cb #(re-frame/dispatch [:new-chat/set-new-identity
|
||||
%
|
||||
new-identity
|
||||
@resolve-last-id])}}))))))
|
||||
|
||||
(fx/defn clear-new-identity
|
||||
{:events [::clear-new-identity ::new-chat-focus]}
|
||||
[{:keys [db]}]
|
||||
{:db (dissoc db :contacts/new-identity)})
|
||||
|
||||
(fx/defn qr-code-handled
|
||||
{:events [::qr-code-handled]}
|
||||
[{:keys [db] :as cofx} {:keys [type public-key chat-id data]} {:keys [new-contact?] :as opts}]
|
||||
(let [public-key? (and (string? data)
|
||||
(string/starts-with? data "0x"))
|
||||
chat-key (cond
|
||||
(= type :private-chat) chat-id
|
||||
(= type :contact) public-key
|
||||
(and (= type :undefined)
|
||||
public-key?) data)
|
||||
validation-result (db/validate-pub-key db chat-key)]
|
||||
(if-not validation-result
|
||||
(if new-contact?
|
||||
(fx/merge cofx
|
||||
(contact/add-contact chat-key nil)
|
||||
(navigation/navigate-to-cofx :contacts-list {}))
|
||||
(chat/start-chat cofx chat-key))
|
||||
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
|
||||
:content (case validation-result
|
||||
:invalid
|
||||
(i18n/label :t/use-valid-contact-code)
|
||||
:yourself
|
||||
(i18n/label :t/can-not-add-yourself))
|
||||
:on-dismiss #(re-frame/dispatch [:navigate-to :home])}})))
|
||||
|
||||
(fx/defn qr-code-scanned
|
||||
{:events [:contact/qr-code-scanned]}
|
||||
[{:keys [db]} data opts]
|
||||
{::router/handle-uri {:chain (ethereum/chain-keyword db)
|
||||
:chats (get db :chats)
|
||||
:uri data
|
||||
:cb #(re-frame/dispatch [::qr-code-handled % opts])}})
|
|
@ -1,4 +1,4 @@
|
|||
(ns status-im.ui.screens.add-new.new-chat.db
|
||||
(ns status-im.add-new.db
|
||||
(:require [status-im.ethereum.ens :as ens]
|
||||
[cljs.spec.alpha :as spec]))
|
||||
|
||||
|
@ -12,4 +12,14 @@
|
|||
(= public-key ens/default-key))
|
||||
:invalid
|
||||
(own-public-key? db public-key)
|
||||
:yourself))
|
||||
:yourself))
|
||||
|
||||
(spec/def ::name :global/not-empty-string)
|
||||
|
||||
(spec/def ::topic (spec/and :global/not-empty-string
|
||||
(partial re-matches #"[a-z0-9\-]+")))
|
||||
|
||||
(defn valid-topic? [topic]
|
||||
(and topic
|
||||
(spec/valid? ::topic topic)
|
||||
(not (spec/valid? :global/public-key topic))))
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.bootnodes.core
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]))
|
||||
|
@ -22,6 +22,7 @@
|
|||
(get-in cofx [:db :multiaccount :custom-bootnodes network id])))
|
||||
|
||||
(fx/defn set-input
|
||||
{:events [:bootnodes.ui/input-changed]}
|
||||
[{:keys [db]} input-key value]
|
||||
{:db (update
|
||||
db
|
||||
|
@ -35,6 +36,7 @@
|
|||
:url (not (valid-address? value)))})})
|
||||
|
||||
(fx/defn edit
|
||||
{:events [:bootnodes.ui/add-bootnode-pressed]}
|
||||
[{:keys [db] :as cofx} id]
|
||||
(let [{:keys [id
|
||||
address
|
||||
|
@ -61,6 +63,8 @@
|
|||
[:multiaccounts.update.callback/save-settings-success])}))))
|
||||
|
||||
(fx/defn upsert
|
||||
{:events [:bootnodes.ui/save-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[{{:bootnodes/keys [manage] :keys [multiaccount] :as db} :db
|
||||
random-id-generator :random-id-generator :as cofx}]
|
||||
(let [{:keys [name id url]} manage
|
||||
|
@ -94,11 +98,13 @@
|
|||
{:success-event [:multiaccounts.update.callback/save-settings-success]})))
|
||||
|
||||
(fx/defn set-bootnodes-from-qr
|
||||
{:events [:bootnodes.callback/qr-code-scanned]}
|
||||
[cofx url]
|
||||
(assoc (set-input cofx :url (string/trim url))
|
||||
:dispatch [:navigate-back]))
|
||||
|
||||
(fx/defn show-delete-bootnode-confirmation
|
||||
{:events [:bootnodes.ui/delete-pressed]}
|
||||
[_ bootnode-id]
|
||||
{:ui/show-confirmation {:title (i18n/label :t/delete-bootnode-title)
|
||||
:content (i18n/label :t/delete-bootnode-are-you-sure)
|
||||
|
@ -106,6 +112,7 @@
|
|||
:on-accept #(re-frame/dispatch [:bootnodes.ui/delete-confirmed bootnode-id])}})
|
||||
|
||||
(fx/defn delete-bootnode
|
||||
{:events [:bootnodes.ui/delete-confirmed]}
|
||||
[cofx bootnode-id]
|
||||
(fx/merge cofx
|
||||
(delete bootnode-id)
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
(ns status-im.bottom-sheet.core
|
||||
(:require [status-im.utils.fx :as fx]))
|
||||
|
||||
(fx/defn show-bottom-sheet
|
||||
[{:keys [db]} {:keys [view options]}]
|
||||
{:db (assoc db
|
||||
:bottom-sheet/show? true
|
||||
:bottom-sheet/view view
|
||||
:bottom-sheet/options options)})
|
||||
|
||||
(fx/defn show-bottom-sheet-event
|
||||
{:events [:bottom-sheet/show-sheet]}
|
||||
[cofx view options]
|
||||
(show-bottom-sheet
|
||||
cofx
|
||||
{:view view
|
||||
:options options}))
|
||||
|
||||
(fx/defn hide-bottom-sheet
|
||||
{:events [:bottom-sheet/hide]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc db :bottom-sheet/show? false)})
|
|
@ -7,7 +7,7 @@
|
|||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.ethereum.resolver :as resolver]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.ui.components.list-selection :as list-selection]
|
||||
[status-im.navigation :as navigation]
|
||||
|
@ -22,7 +22,7 @@
|
|||
[taoensso.timbre :as log]
|
||||
[status-im.signing.core :as signing]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.browser.webview-ref :as webview-ref]
|
||||
["eth-phishing-detect" :as eth-phishing-detect]
|
||||
[status-im.utils.debounce :as debounce]))
|
||||
|
@ -50,6 +50,7 @@
|
|||
(string/starts-with? url "https://")))))
|
||||
|
||||
(fx/defn remove-browser
|
||||
{:events [:browser.ui/remove-browser-pressed]}
|
||||
[{:keys [db]} browser-id]
|
||||
{:db (update-in db [:browser/browsers] dissoc browser-id)
|
||||
::json-rpc/call [{:method "browsers_deleteBrowser"
|
||||
|
@ -104,6 +105,7 @@
|
|||
{:db (update db :browser/options assoc :url (or resolved-url current-url) :resolving? false)}))))
|
||||
|
||||
(fx/defn resolve-ens-contenthash
|
||||
{:events [:browser.callback/resolve-ens-contenthash]}
|
||||
[{:keys [db]}]
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)
|
||||
|
@ -160,6 +162,7 @@
|
|||
(pos? history-index))
|
||||
|
||||
(fx/defn navigate-to-previous-page
|
||||
{:events [:browser.ui/previous-page-button-pressed]}
|
||||
[cofx]
|
||||
(let [{:keys [history-index] :as browser} (get-current-browser (:db cofx))]
|
||||
(when (can-go-back? browser)
|
||||
|
@ -178,6 +181,7 @@
|
|||
(< history-index (dec (count history))))
|
||||
|
||||
(fx/defn navigate-to-next-page
|
||||
{:events [:browser.ui/next-page-button-pressed]}
|
||||
[cofx]
|
||||
(let [{:keys [history-index] :as browser} (get-current-browser (:db cofx))]
|
||||
(when (can-go-forward? browser)
|
||||
|
@ -212,6 +216,7 @@
|
|||
(str "https://swarm-gateways.net/bzz:/" hash))
|
||||
|
||||
(fx/defn resolve-ens-multihash-success
|
||||
{:events [:browser.callback/resolve-ens-multihash-success]}
|
||||
[{:keys [db] :as cofx} m]
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)
|
||||
|
@ -225,12 +230,14 @@
|
|||
(assoc-in [:browser/options :resolved-ens host] gateway))})))
|
||||
|
||||
(fx/defn resolve-ens-multihash-error
|
||||
{:events [:browser.callback/resolve-ens-multihash-error]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(update-browser-options cofx {:url (get-current-url (get-current-browser db))
|
||||
:resolving? false
|
||||
:error? true}))
|
||||
|
||||
(fx/defn handle-browser-error
|
||||
{:events [:browser/error-occured]}
|
||||
[cofx]
|
||||
(fx/merge cofx
|
||||
(update-browser-option :error? true)
|
||||
|
@ -242,7 +249,8 @@
|
|||
{:browser/show-web-browser-selection url}))
|
||||
|
||||
(fx/defn handle-message-link
|
||||
[cofx link]
|
||||
{:events [:browser.ui/message-link-pressed]}
|
||||
[_ link]
|
||||
(if (links/universal-link? link)
|
||||
{:dispatch [:universal-links/handle-url link]}
|
||||
{:browser/show-browser-selection link}))
|
||||
|
@ -271,6 +279,7 @@
|
|||
(update-browser cofx (assoc browser :name title)))))
|
||||
|
||||
(fx/defn navigation-state-changed
|
||||
{:events [:browser/navigation-state-changed]}
|
||||
[cofx event error?]
|
||||
(let [{:strs [url loading title]} (js->clj event)
|
||||
deep-link? (links/deep-link? url)]
|
||||
|
@ -286,6 +295,7 @@
|
|||
"Opens a url in the current browser, which mean no new entry is added to the home page
|
||||
and history of the current browser is updated so that the user can navigate back to the
|
||||
origin url"
|
||||
{:events [:browser.ui/url-submitted]}
|
||||
[cofx url]
|
||||
(let [browser (get-current-browser (:db cofx))
|
||||
normalized-url (http/normalize-and-decode-url url)]
|
||||
|
@ -300,6 +310,7 @@
|
|||
"Opens a url in the browser. If a host can be extracted from the url and
|
||||
there is already a browser for this host, this browser is reused
|
||||
If the browser is reused, the history is flushed"
|
||||
{:events [:browser.ui/open-url]}
|
||||
[{:keys [db] :as cofx} url]
|
||||
(let [normalized-url (http/normalize-and-decode-url url)
|
||||
browser {:browser-id (random/id)
|
||||
|
@ -317,6 +328,7 @@
|
|||
|
||||
(fx/defn open-existing-browser
|
||||
"Opens an existing browser with it's history"
|
||||
{:events [:browser.ui/browser-item-selected]}
|
||||
[{:keys [db] :as cofx} browser-id]
|
||||
(let [browser (get-in db [:browser/browsers browser-id])]
|
||||
(fx/merge cofx
|
||||
|
@ -364,12 +376,17 @@
|
|||
[second-param (if typed? first-param (normalize-message first-param))]))))
|
||||
|
||||
(fx/defn send-to-bridge
|
||||
[cofx message]
|
||||
{:events [:browser.callback/call-rpc]}
|
||||
[_ message]
|
||||
{:browser/send-to-bridge message})
|
||||
|
||||
(defn web3-sign-message? [method]
|
||||
(#{constants/web3-sign-typed-data constants/web3-sign-typed-data-v3 constants/web3-personal-sign
|
||||
constants/web3-keycard-sign-typed-data} method))
|
||||
|
||||
(fx/defn web3-send-async
|
||||
[cofx {:keys [method params id] :as payload} message-id]
|
||||
(let [message? (constants/web3-sign-message? method)
|
||||
(let [message? (web3-sign-message? method)
|
||||
dapps-address (get-in cofx [:db :multiaccount :dapps-address])
|
||||
typed? (not= constants/web3-personal-sign method)]
|
||||
(if (or message? (= constants/web3-send-transaction method))
|
||||
|
@ -434,19 +451,22 @@
|
|||
(web3-send-async cofx payload message-id)))
|
||||
|
||||
(fx/defn handle-scanned-qr-code
|
||||
[cofx data {:keys [dapp-name permission message-id]}]
|
||||
{:events [:browser.bridge.callback/qr-code-scanned]}
|
||||
[cofx data {{:keys [dapp-name permission message-id]} :data}]
|
||||
(fx/merge (assoc-in cofx [:db :browser/options :yielding-control?] false)
|
||||
(browser.permissions/send-response-to-bridge permission message-id true data)
|
||||
(browser.permissions/process-next-permission dapp-name)
|
||||
(navigation/navigate-back)))
|
||||
|
||||
(fx/defn handle-canceled-qr-code
|
||||
[cofx {:keys [dapp-name permission message-id]}]
|
||||
{:events [:browser.bridge.callback/qr-code-canceled]}
|
||||
[cofx {{:keys [dapp-name permission message-id]} :data}]
|
||||
(fx/merge (assoc-in cofx [:db :browser/options :yielding-control?] false)
|
||||
(browser.permissions/send-response-to-bridge permission message-id true nil)
|
||||
(browser.permissions/process-next-permission dapp-name)))
|
||||
|
||||
(fx/defn process-bridge-message
|
||||
{:events [:browser/bridge-message-received]}
|
||||
[{:keys [db] :as cofx} message]
|
||||
(let [browser (get-current-browser db)
|
||||
url-original (get-current-url browser)
|
||||
|
@ -534,3 +554,28 @@
|
|||
[cofx]
|
||||
(debounce/clear :browser/navigation-state-changed)
|
||||
(navigation/navigate-to-cofx cofx :empty-tab nil))
|
||||
|
||||
(fx/defn url-input-pressed
|
||||
{:events [:browser.ui/url-input-pressed]}
|
||||
[cofx _]
|
||||
(update-browser-option cofx :url-editing? true))
|
||||
|
||||
(fx/defn url-input-blured
|
||||
{:events [:browser.ui/url-input-blured]}
|
||||
[cofx]
|
||||
(update-browser-option cofx :url-editing? false))
|
||||
|
||||
(fx/defn lock-pressed
|
||||
{:events [:browser.ui/lock-pressed]}
|
||||
[cofx secure?]
|
||||
(update-browser-option cofx :show-tooltip (if secure? :secure :not-secure)))
|
||||
|
||||
(fx/defn close-tooltip-pressed
|
||||
{:events [:browser.ui/close-tooltip-pressed]}
|
||||
[cofx]
|
||||
(update-browser-option cofx :show-tooltip nil))
|
||||
|
||||
(fx/defn loading-started
|
||||
{:events [:browser/loading-started]}
|
||||
[cofx]
|
||||
(update-browser-options cofx {:error? false :loading? true}))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.browser.permissions
|
||||
(:require [status-im.constants :as constants]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.qr-scanner.core :as qr-scanner]
|
||||
[status-im.utils.fx :as fx]))
|
||||
|
@ -80,6 +80,7 @@
|
|||
:on-success #()}]}))
|
||||
|
||||
(fx/defn revoke-dapp-permissions
|
||||
{:events [:dapps/revoke-access]}
|
||||
[cofx dapp]
|
||||
(fx/merge cofx
|
||||
(revoke-permissions dapp)
|
||||
|
@ -121,6 +122,7 @@
|
|||
|
||||
(fx/defn allow-permission
|
||||
"Add permission to set of allowed permission and process next permission"
|
||||
{:events [:browser.permissions.ui/dapp-permission-allowed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [{:keys [requested-permission message-id dapp-name yield-control? params]}
|
||||
(get-in db [:browser/options :show-permission])]
|
||||
|
@ -132,6 +134,7 @@
|
|||
|
||||
(fx/defn deny-permission
|
||||
"Add permission to set of allowed permission and process next permission"
|
||||
{:events [:browser.permissions.ui/dapp-permission-denied]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [{:keys [requested-permission message-id dapp-name]} (get-in db [:browser/options :show-permission])]
|
||||
(fx/merge (assoc-in cofx [:db :browser/options :show-permission] nil)
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
(ns status-im.chaos-mode.core
|
||||
(:require [status-im.utils.fx :as fx]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.utils.http :as http]
|
||||
[status-im.utils.types :as types]))
|
||||
|
||||
(def interval-5m (* 5 60 1000))
|
||||
(defonce interval-id (atom nil))
|
||||
(def url "https://cloudflare-dns.com/dns-query?name=chaos-unicorn-day.status.im&type=TXT")
|
||||
|
||||
(defn chaos-mode-switched [chaos-mode?]
|
||||
(re-frame/dispatch [:multiaccounts.ui/chaos-mode-switched chaos-mode?]))
|
||||
|
||||
(defn handle-response [response]
|
||||
(let [status-id (:Status (types/json->clj response))
|
||||
chaos-mode? (zero? status-id)]
|
||||
(chaos-mode-switched chaos-mode?)))
|
||||
|
||||
(defn check-record []
|
||||
(http/get url
|
||||
handle-response
|
||||
(fn [])
|
||||
nil
|
||||
{"accept" "application/dns-json"}))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:chaos-mode/start-checking
|
||||
(fn []
|
||||
(when @interval-id
|
||||
(utils/clear-interval @interval-id))
|
||||
(check-record)
|
||||
(reset!
|
||||
interval-id
|
||||
(utils/set-interval check-record interval-5m))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:chaos-mode/stop-checking
|
||||
(fn []
|
||||
(utils/clear-interval @interval-id)))
|
||||
|
||||
(fx/defn check-chaos-mode [_]
|
||||
{:chaos-mode/start-checking nil})
|
||||
|
||||
(fx/defn stop-checking [_]
|
||||
{:chaos-mode/stop-checking nil})
|
|
@ -7,7 +7,7 @@
|
|||
[status-im.data-store.chats :as chats-store]
|
||||
[status-im.data-store.messages :as messages-store]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.mailserver.core :as mailserver]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.constants :as constants]
|
||||
|
@ -16,7 +16,9 @@
|
|||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.ui.screens.add-new.new-public-chat.db :as new-public-chat.db]))
|
||||
[status-im.add-new.db :as new-public-chat.db]
|
||||
[status-im.mailserver.topics :as mailserver.topics]
|
||||
[status-im.mailserver.constants :as mailserver.constants]))
|
||||
|
||||
(defn chats []
|
||||
(:chats (types/json->clj (js/require "./chats.js"))))
|
||||
|
@ -85,6 +87,7 @@
|
|||
by mailserver, corresponding event :chat.ui/join-time-messages-checked
|
||||
dissociates these two fileds via this function, thereby signalling that the
|
||||
public chat is not fresh anymore."
|
||||
{:events [:chat.ui/join-time-messages-checked]}
|
||||
[{:keys [db] :as cofx} chat-id]
|
||||
(when (:might-have-join-time-messages? (get-chat cofx chat-id))
|
||||
{:db (dissoc-join-time-fields db chat-id)}))
|
||||
|
@ -198,6 +201,7 @@
|
|||
|
||||
(fx/defn clear-history
|
||||
"Clears history of the particular chat"
|
||||
{:events [:chat.ui/clear-history]}
|
||||
[{:keys [db] :as cofx} chat-id remove-chat?]
|
||||
(let [{:keys [last-message public?
|
||||
deleted-at-clock-value]} (get-in db [:chats chat-id])
|
||||
|
@ -227,14 +231,15 @@
|
|||
|
||||
(fx/defn remove-chat
|
||||
"Removes chat completely from app, producing all necessary effects for that"
|
||||
[{:keys [db now] :as cofx} chat-id navigate-home?]
|
||||
{:events [:chat.ui/remove-chat]}
|
||||
[{:keys [db now] :as cofx} chat-id]
|
||||
(fx/merge cofx
|
||||
(mailserver/remove-gaps chat-id)
|
||||
(mailserver/remove-range chat-id)
|
||||
(deactivate-chat chat-id)
|
||||
(clear-history chat-id true)
|
||||
(transport.filters/stop-listening chat-id)
|
||||
(when (and navigate-home? (not (= (:view-id db) :home)))
|
||||
(when (not (= (:view-id db) :home))
|
||||
(navigation/navigate-to-cofx :home {}))))
|
||||
|
||||
(fx/defn offload-all-messages
|
||||
|
@ -265,6 +270,7 @@
|
|||
|
||||
(fx/defn navigate-to-chat
|
||||
"Takes coeffects map and chat-id, returns effects necessary for navigation and preloading data"
|
||||
{:events [:chat.ui/navigate-to-chat]}
|
||||
[{db :db :as cofx} chat-id]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db :inactive-chat-id chat-id)}
|
||||
|
@ -273,6 +279,7 @@
|
|||
|
||||
(fx/defn start-chat
|
||||
"Start a chat, making sure it exists"
|
||||
{:events [:chat.ui/start-chat]}
|
||||
[{:keys [db] :as cofx} chat-id]
|
||||
;; don't allow to open chat with yourself
|
||||
(when (not= (multiaccounts.model/current-public-key cofx) chat-id)
|
||||
|
@ -290,6 +297,7 @@
|
|||
|
||||
(fx/defn start-public-chat
|
||||
"Starts a new public chat"
|
||||
{:events [:chat.ui/start-public-chat]}
|
||||
[cofx topic {:keys [dont-navigate? profile-public-key]}]
|
||||
(if (or (new-public-chat.db/valid-topic? topic) profile-public-key)
|
||||
(if (active-chat? cofx topic)
|
||||
|
@ -321,6 +329,7 @@
|
|||
|
||||
(fx/defn disable-chat-cooldown
|
||||
"Turns off chat cooldown (protection against message spamming)"
|
||||
{:events [:chat/disable-cooldown]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc db :chat/cooldown-enabled? false)})
|
||||
|
||||
|
@ -372,3 +381,58 @@
|
|||
(fx/merge (assoc-in cofx [:db :contacts/identity] identity)
|
||||
(contact.core/create-contact identity)
|
||||
(navigation/navigate-to-cofx :profile nil)))
|
||||
|
||||
(fx/defn clear-history-pressed
|
||||
{:events [:chat.ui/clear-history-pressed]}
|
||||
[_ chat-id]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/clear-history-title)
|
||||
:content (i18n/label :t/clear-history-confirmation-content)
|
||||
:confirm-button-text (i18n/label :t/clear-history-action)
|
||||
:on-accept #(do
|
||||
(re-frame/dispatch [:bottom-sheet/hide])
|
||||
(re-frame/dispatch [:chat.ui/clear-history chat-id false]))}})
|
||||
|
||||
(fx/defn chat-ui-fill-gaps
|
||||
{:events [:chat.ui/fill-gaps]}
|
||||
[{:keys [db] :as cofx} gap-ids]
|
||||
(let [chat-id (:current-chat-id db)
|
||||
topics (mailserver.topics/topics-for-current-chat db)
|
||||
gaps (keep
|
||||
(fn [id]
|
||||
(get-in db [:mailserver/gaps chat-id id]))
|
||||
gap-ids)]
|
||||
(mailserver/fill-the-gap
|
||||
cofx
|
||||
{:gaps gaps
|
||||
:topics topics
|
||||
:chat-id chat-id})))
|
||||
|
||||
(fx/defn chat-ui-fetch-more
|
||||
{:events [:chat.ui/fetch-more]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [chat-id (:current-chat-id db)
|
||||
|
||||
{:keys [lowest-request-from]}
|
||||
(get-in db [:mailserver/ranges chat-id])
|
||||
|
||||
topics (mailserver.topics/topics-for-current-chat db)
|
||||
gaps [{:id :first-gap
|
||||
:to lowest-request-from
|
||||
:from (- lowest-request-from mailserver.constants/one-day)}]]
|
||||
(mailserver/fill-the-gap
|
||||
cofx
|
||||
{:gaps gaps
|
||||
:topics topics
|
||||
:chat-id chat-id})))
|
||||
|
||||
(fx/defn chat-ui-remove-chat-pressed
|
||||
{:events [:chat.ui/remove-chat-pressed]}
|
||||
[_ chat-id]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/delete-confirmation)
|
||||
:content (i18n/label :t/delete-chat-confirmation)
|
||||
:confirm-button-text (i18n/label :t/delete)
|
||||
:on-accept #(do
|
||||
(re-frame/dispatch [:bottom-sheet/hide])
|
||||
(re-frame/dispatch [:chat.ui/remove-chat chat-id]))}})
|
|
@ -6,12 +6,13 @@
|
|||
[status-im.chat.models.message :as chat.message]
|
||||
[status-im.chat.models.message-content :as message-content]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.utils.datetime :as datetime]
|
||||
[status-im.utils.fx :as fx]
|
||||
["emojilib" :as emojis]
|
||||
[status-im.chat.models.mentions :as mentions]
|
||||
[status-im.utils.utils :as utils]))
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]))
|
||||
|
||||
(defn text->emoji
|
||||
"Replaces emojis in a specified `text`"
|
||||
|
@ -26,10 +27,12 @@
|
|||
(fx/defn set-chat-input-text
|
||||
"Set input text for current-chat. Takes db and input text and cofx
|
||||
as arguments and returns new fx. Always clear all validation messages."
|
||||
{:events [:chat.ui/set-chat-input-text]}
|
||||
[{{:keys [current-chat-id] :as db} :db} new-input]
|
||||
{:db (assoc-in db [:chat/inputs current-chat-id :input-text] (text->emoji new-input))})
|
||||
|
||||
(fx/defn select-mention
|
||||
{:events [:chat.ui/select-mention]}
|
||||
[{:keys [db] :as cofx} text-input-ref {:keys [alias name searched-text match] :as user}]
|
||||
(let [chat-id (:current-chat-id db)
|
||||
new-text (mentions/new-input-text-with-mention cofx user)
|
||||
|
@ -95,6 +98,7 @@
|
|||
|
||||
(fx/defn reply-to-message
|
||||
"Sets reference to previous chat message and focuses on input"
|
||||
{:events [:chat.ui/reply-to-message]}
|
||||
[{:keys [db] :as cofx} message]
|
||||
(let [current-chat-id (:current-chat-id db)]
|
||||
(fx/merge cofx
|
||||
|
@ -106,6 +110,7 @@
|
|||
|
||||
(fx/defn cancel-message-reply
|
||||
"Cancels stage message reply"
|
||||
{:events [:chat.ui/cancel-message-reply]}
|
||||
[{:keys [db]}]
|
||||
(let [current-chat-id (:current-chat-id db)]
|
||||
{:db (assoc-in db [:chat/inputs current-chat-id :metadata :responding-to-message] nil)}))
|
||||
|
@ -182,6 +187,7 @@
|
|||
|
||||
(fx/defn send-current-message
|
||||
"Sends message from current chat input"
|
||||
{:events [:chat.ui/send-current-message]}
|
||||
[{{:keys [current-chat-id] :as db} :db :as cofx}]
|
||||
(let [{:keys [input-text]} (get-in db [:chat/inputs current-chat-id])
|
||||
input-text-with-mentions (mentions/check-mentions cofx input-text)]
|
||||
|
@ -189,3 +195,19 @@
|
|||
(send-messages input-text-with-mentions current-chat-id)
|
||||
(mentions/clear-mentions)
|
||||
(mentions/clear-cursor))))
|
||||
|
||||
(fx/defn chat-send-sticker
|
||||
{:events [:chat/send-sticker]}
|
||||
[{{:keys [current-chat-id multiaccount]} :db :as cofx} {:keys [hash] :as sticker}]
|
||||
(fx/merge
|
||||
cofx
|
||||
(multiaccounts.update/multiaccount-update
|
||||
:stickers/recent-stickers
|
||||
(conj (remove #(= hash %) (:stickers/recent-stickers multiaccount)) hash)
|
||||
{})
|
||||
(send-sticker-message sticker current-chat-id)))
|
||||
|
||||
(fx/defn chat-send-audio
|
||||
{:events [:chat/send-audio]}
|
||||
[{{:keys [current-chat-id]} :db :as cofx} audio-path duration]
|
||||
(send-audio-message cofx audio-path duration current-chat-id))
|
||||
|
|
|
@ -132,6 +132,7 @@
|
|||
(message-seen/mark-messages-seen current-chat-id)))))
|
||||
|
||||
(fx/defn load-more-messages
|
||||
{:events [:chat.ui/load-more-messages]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(when-let [current-chat-id (:current-chat-id db)]
|
||||
(when-let [session-id (get-in db [:pagination-info current-chat-id :messages-initialized?])]
|
||||
|
|
|
@ -228,6 +228,7 @@
|
|||
|
||||
(fx/defn delete-message
|
||||
"Deletes chat message, rebuild message-list"
|
||||
{:events [:chat.ui/delete-message]}
|
||||
[{:keys [db] :as cofx} chat-id message-id]
|
||||
(fx/merge cofx
|
||||
{:db (update-in db [:messages chat-id] dissoc message-id)}
|
||||
|
|
|
@ -29,3 +29,10 @@
|
|||
loaded-unviewed-ids)}
|
||||
(messages-store/mark-messages-seen chat-id loaded-unviewed-ids nil)
|
||||
(update-chats-unviewed-messages-count {:chat-id chat-id})))))
|
||||
|
||||
(fx/defn ui-mark-messages-seen
|
||||
{:events [:chat.ui/mark-messages-seen]}
|
||||
[{:keys [db] :as cofx} view-id]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db :view-id view-id)}
|
||||
(mark-messages-seen cofx (:current-chat-id db))))
|
|
@ -0,0 +1,13 @@
|
|||
(ns status-im.chat.models.transport
|
||||
(:require [status-im.utils.fx :as fx]
|
||||
[status-im.transport.message.core :as transport.message]
|
||||
[status-im.chat.models.message :as chat.message]))
|
||||
|
||||
(fx/defn chat-ui-resend-message
|
||||
{:events [:chat.ui/resend-message]}
|
||||
[{:keys [db] :as cofx} chat-id message-id]
|
||||
(let [message (get-in db [:messages chat-id message-id])]
|
||||
(fx/merge
|
||||
cofx
|
||||
(transport.message/set-message-envelope-hash chat-id message-id (:message-type message) 1)
|
||||
(chat.message/resend-message chat-id message-id))))
|
|
@ -109,16 +109,16 @@
|
|||
"3" {:clock-value 2}}}
|
||||
:chats {chat-id {:last-message {:clock-value 10}}}}}]
|
||||
(testing "it deletes all the messages"
|
||||
(let [actual (chat/remove-chat cofx chat-id true)]
|
||||
(let [actual (chat/remove-chat cofx chat-id)]
|
||||
(is (= {} (get-in actual [:db :messages chat-id])))))
|
||||
(testing "it sets a deleted-at-clock-value equal to the last message clock-value"
|
||||
(let [actual (chat/remove-chat cofx chat-id true)]
|
||||
(let [actual (chat/remove-chat cofx chat-id)]
|
||||
(is (= 10 (get-in actual [:db :chats chat-id :deleted-at-clock-value])))))
|
||||
(testing "it sets the chat as inactive"
|
||||
(let [actual (chat/remove-chat cofx chat-id true)]
|
||||
(let [actual (chat/remove-chat cofx chat-id)]
|
||||
(is (= false (get-in actual [:db :chats chat-id :is-active])))))
|
||||
(testing "it makes the relevant json-rpc calls"
|
||||
(let [actual (chat/remove-chat cofx chat-id true)]
|
||||
(let [actual (chat/remove-chat cofx chat-id)]
|
||||
(is (::json-rpc/call actual))
|
||||
(is (= 4 (count (::json-rpc/call actual))))))))
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
[status-im.constants :as constants]
|
||||
[status-im.chat.models :as models.chat]
|
||||
[status-im.transport.filters.core :as models.filters]
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.data-store.chats :as data-store.chats]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]))
|
||||
|
||||
|
|
|
@ -1,34 +1,31 @@
|
|||
(ns status-im.constants
|
||||
(:require [status-im.react-native.resources :as resources]
|
||||
[status-im.i18n :as i18n]))
|
||||
(:require [status-im.react-native.resources :as resources]))
|
||||
|
||||
(def ethereum-rpc-url "http://localhost:8545")
|
||||
(def ^:const ms-in-bg-for-require-bioauth 5000)
|
||||
|
||||
(def ms-in-bg-for-require-bioauth 5000)
|
||||
(def ^:const content-type-text 1)
|
||||
(def ^:const content-type-sticker 2)
|
||||
(def ^:const content-type-status 3)
|
||||
(def ^:const content-type-emoji 4)
|
||||
(def ^:const content-type-command 5)
|
||||
(def ^:const content-type-system-text 6)
|
||||
(def ^:const content-type-image 7)
|
||||
(def ^:const content-type-audio 8)
|
||||
(def ^:const content-type-community 9)
|
||||
|
||||
(def content-type-text 1)
|
||||
(def content-type-sticker 2)
|
||||
(def content-type-status 3)
|
||||
(def content-type-emoji 4)
|
||||
(def content-type-command 5)
|
||||
(def content-type-system-text 6)
|
||||
(def content-type-image 7)
|
||||
(def content-type-audio 8)
|
||||
(def content-type-community 9)
|
||||
(def ^:const emoji-reaction-love 1)
|
||||
(def ^:const emoji-reaction-thumbs-up 2)
|
||||
(def ^:const emoji-reaction-thumbs-down 3)
|
||||
(def ^:const emoji-reaction-laugh 4)
|
||||
(def ^:const emoji-reaction-sad 5)
|
||||
(def ^:const emoji-reaction-angry 6)
|
||||
|
||||
(def emoji-reaction-love 1)
|
||||
(def emoji-reaction-thumbs-up 2)
|
||||
(def emoji-reaction-thumbs-down 3)
|
||||
(def emoji-reaction-laugh 4)
|
||||
(def emoji-reaction-sad 5)
|
||||
(def emoji-reaction-angry 6)
|
||||
|
||||
(def one-to-one-chat-type 1)
|
||||
(def public-chat-type 2)
|
||||
(def private-group-chat-type 3)
|
||||
(def profile-chat-type 4)
|
||||
(def timeline-chat-type 5)
|
||||
(def community-chat-type 6)
|
||||
(def ^:const one-to-one-chat-type 1)
|
||||
(def ^:const public-chat-type 2)
|
||||
(def ^:const private-group-chat-type 3)
|
||||
(def ^:const profile-chat-type 4)
|
||||
(def ^:const timeline-chat-type 5)
|
||||
(def ^:const community-chat-type 6)
|
||||
|
||||
(def reactions {emoji-reaction-love (:love resources/reactions)
|
||||
emoji-reaction-thumbs-up (:thumbs-up resources/reactions)
|
||||
|
@ -37,156 +34,68 @@
|
|||
emoji-reaction-sad (:sad resources/reactions)
|
||||
emoji-reaction-angry (:angry resources/reactions)})
|
||||
|
||||
(def invitation-state-unknown 0)
|
||||
(def invitation-state-requested 1)
|
||||
(def invitation-state-rejected 2)
|
||||
(def invitation-state-approved 3)
|
||||
(def invitation-state-granted 4)
|
||||
(def invitation-state-removed 5)
|
||||
(def ^:const invitation-state-unknown 0)
|
||||
(def ^:const invitation-state-requested 1)
|
||||
(def ^:const invitation-state-rejected 2)
|
||||
(def ^:const invitation-state-approved 3)
|
||||
(def ^:const invitation-state-granted 4)
|
||||
(def ^:const invitation-state-removed 5)
|
||||
|
||||
(def message-type-one-to-one 1)
|
||||
(def message-type-public-group 2)
|
||||
(def message-type-private-group 3)
|
||||
(def message-type-private-group-system-message 4)
|
||||
(def ^:const message-type-one-to-one 1)
|
||||
(def ^:const message-type-public-group 2)
|
||||
(def ^:const message-type-private-group 3)
|
||||
(def ^:const message-type-private-group-system-message 4)
|
||||
|
||||
(def command-state-request-address-for-transaction 1)
|
||||
(def command-state-request-address-for-transaction-declined 2)
|
||||
(def command-state-request-address-for-transaction-accepted 3)
|
||||
(def command-state-request-transaction 4)
|
||||
(def command-state-request-transaction-declined 5)
|
||||
(def command-state-transaction-pending 6)
|
||||
(def command-state-transaction-sent 7)
|
||||
(def ^:const command-state-request-address-for-transaction 1)
|
||||
(def ^:const command-state-request-address-for-transaction-declined 2)
|
||||
(def ^:const command-state-request-address-for-transaction-accepted 3)
|
||||
(def ^:const command-state-request-transaction 4)
|
||||
(def ^:const command-state-request-transaction-declined 5)
|
||||
(def ^:const command-state-transaction-pending 6)
|
||||
(def ^:const command-state-transaction-sent 7)
|
||||
|
||||
(def profile-pictures-visibility-contacts-only 1)
|
||||
(def profile-pictures-visibility-everyone 2)
|
||||
(def profile-pictures-visibility-none 3)
|
||||
(def ^:const profile-pictures-visibility-contacts-only 1)
|
||||
(def ^:const profile-pictures-visibility-everyone 2)
|
||||
(def ^:const profile-pictures-visibility-none 3)
|
||||
|
||||
(def min-password-length 6)
|
||||
(def max-group-chat-participants 20)
|
||||
(def default-number-of-messages 20)
|
||||
(def ^:const min-password-length 6)
|
||||
(def ^:const max-group-chat-participants 20)
|
||||
(def ^:const default-number-of-messages 20)
|
||||
|
||||
(def mailserver-password "status-offline-inbox")
|
||||
(def ^:const mailserver-password "status-offline-inbox")
|
||||
|
||||
(def system "system")
|
||||
(def ^:const send-transaction-failed-parse-response 1)
|
||||
(def ^:const send-transaction-failed-parse-params 2)
|
||||
(def ^:const send-transaction-no-account-selected 3)
|
||||
(def ^:const send-transaction-invalid-tx-sender 4)
|
||||
(def ^:const send-transaction-err-decrypt 5)
|
||||
|
||||
(def currencies
|
||||
{:aed {:id :aed :code "AED" :display-name (i18n/label :t/currency-display-name-aed) :symbol "د.إ"}
|
||||
:afn {:id :afn :code "AFN" :display-name (i18n/label :t/currency-display-name-afn) :symbol "؋"}
|
||||
:ars {:id :ars :code "ARS" :display-name (i18n/label :t/currency-display-name-ars) :symbol "$"}
|
||||
:aud {:id :aud :code "AUD" :display-name (i18n/label :t/currency-display-name-aud) :symbol "$"}
|
||||
:bbd {:id :bbd :code "BBD" :display-name (i18n/label :t/currency-display-name-bbd) :symbol "$"}
|
||||
:bdt {:id :bdt :code "BDT" :display-name (i18n/label :t/currency-display-name-bdt) :symbol " Tk"}
|
||||
:bgn {:id :bgn :code "BGN" :display-name (i18n/label :t/currency-display-name-bgn) :symbol "лв"}
|
||||
:bhd {:id :bhd :code "BHD" :display-name (i18n/label :t/currency-display-name-bhd) :symbol "BD"}
|
||||
:bnd {:id :bnd :code "BND" :display-name (i18n/label :t/currency-display-name-bnd) :symbol "$"}
|
||||
:bob {:id :bob :code "BOB" :display-name (i18n/label :t/currency-display-name-bob) :symbol "$b"}
|
||||
:brl {:id :brl :code "BRL" :display-name (i18n/label :t/currency-display-name-brl) :symbol "R$"}
|
||||
:btn {:id :btn :code "BTN" :display-name (i18n/label :t/currency-display-name-btn) :symbol "Nu."}
|
||||
:cad {:id :cad :code "CAD" :display-name (i18n/label :t/currency-display-name-cad) :symbol "$"}
|
||||
:chf {:id :chf :code "CHF" :display-name (i18n/label :t/currency-display-name-chf) :symbol "CHF"}
|
||||
:clp {:id :clp :code "CLP" :display-name (i18n/label :t/currency-display-name-clp) :symbol "$"}
|
||||
:cny {:id :cny :code "CNY" :display-name (i18n/label :t/currency-display-name-cny) :symbol "¥"}
|
||||
:cop {:id :cop :code "COP" :display-name (i18n/label :t/currency-display-name-cop) :symbol "$"}
|
||||
:crc {:id :crc :code "CRC" :display-name (i18n/label :t/currency-display-name-crc) :symbol "₡"}
|
||||
:czk {:id :czk :code "CZK" :display-name (i18n/label :t/currency-display-name-czk) :symbol "Kč"}
|
||||
:dkk {:id :dkk :code "DKK" :display-name (i18n/label :t/currency-display-name-dkk) :symbol "kr"}
|
||||
:dop {:id :dop :code "DOP" :display-name (i18n/label :t/currency-display-name-dop) :symbol "RD$"}
|
||||
:egp {:id :egp :code "EGP" :display-name (i18n/label :t/currency-display-name-egp) :symbol "£"}
|
||||
:etb {:id :etb :code "ETB" :display-name (i18n/label :t/currency-display-name-etb) :symbol "Br"}
|
||||
:eur {:id :eur :code "EUR" :display-name (i18n/label :t/currency-display-name-eur) :symbol "€"}
|
||||
:gbp {:id :gbp :code "GBP" :display-name (i18n/label :t/currency-display-name-gbp) :symbol "£"}
|
||||
:gel {:id :gel :code "GEL" :display-name (i18n/label :t/currency-display-name-gel) :symbol "₾"}
|
||||
:ghs {:id :ghs :code "GHS" :display-name (i18n/label :t/currency-display-name-ghs) :symbol "¢"}
|
||||
:hkd {:id :hkd :code "HKD" :display-name (i18n/label :t/currency-display-name-hkd) :symbol "$"}
|
||||
:hrk {:id :hrk :code "HRK" :display-name (i18n/label :t/currency-display-name-hrk) :symbol "kn"}
|
||||
:huf {:id :huf :code "HUF" :display-name (i18n/label :t/currency-display-name-huf) :symbol "Ft"}
|
||||
:idr {:id :idr :code "IDR" :display-name (i18n/label :t/currency-display-name-idr) :symbol "Rp"}
|
||||
:ils {:id :ils :code "ILS" :display-name (i18n/label :t/currency-display-name-ils) :symbol "₪"}
|
||||
:inr {:id :inr :code "INR" :display-name (i18n/label :t/currency-display-name-inr) :symbol "₹"}
|
||||
:isk {:id :isk :code "ISK" :display-name (i18n/label :t/currency-display-name-isk) :symbol "kr"}
|
||||
:jmd {:id :jmd :code "JMD" :display-name (i18n/label :t/currency-display-name-jmd) :symbol "J$"}
|
||||
:jpy {:id :jpy :code "JPY" :display-name (i18n/label :t/currency-display-name-jpy) :symbol "¥"}
|
||||
:kes {:id :kes :code "KES" :display-name (i18n/label :t/currency-display-name-kes) :symbol "KSh"}
|
||||
:krw {:id :krw :code "KRW" :display-name (i18n/label :t/currency-display-name-krw) :symbol "₩"}
|
||||
:kwd {:id :kwd :code "KWD" :display-name (i18n/label :t/currency-display-name-kwd) :symbol "د.ك"}
|
||||
:kzt {:id :kzt :code "KZT" :display-name (i18n/label :t/currency-display-name-kzt) :symbol "лв"}
|
||||
:lkr {:id :lkr :code "LKR" :display-name (i18n/label :t/currency-display-name-lkr) :symbol "₨"}
|
||||
:mad {:id :mad :code "MAD" :display-name (i18n/label :t/currency-display-name-mad) :symbol "MAD"}
|
||||
:mdl {:id :mdl :code "MDL" :display-name (i18n/label :t/currency-display-name-mdl) :symbol "MDL"}
|
||||
:mur {:id :mur :code "MUR" :display-name (i18n/label :t/currency-display-name-mur) :symbol "₨"}
|
||||
:mwk {:id :mwk :code "MWK" :display-name (i18n/label :t/currency-display-name-mwk) :symbol "MK"}
|
||||
:mxn {:id :mxn :code "MXN" :display-name (i18n/label :t/currency-display-name-mxn) :symbol "$"}
|
||||
:myr {:id :myr :code "MYR" :display-name (i18n/label :t/currency-display-name-myr) :symbol "RM"}
|
||||
:mzn {:id :mzn :code "MZN" :display-name (i18n/label :t/currency-display-name-mzn) :symbol "MT"}
|
||||
:nad {:id :nad :code "NAD" :display-name (i18n/label :t/currency-display-name-nad) :symbol "$"}
|
||||
:ngn {:id :ngn :code "NGN" :display-name (i18n/label :t/currency-display-name-ngn) :symbol "₦"}
|
||||
:nok {:id :nok :code "NOK" :display-name (i18n/label :t/currency-display-name-nok) :symbol "kr"}
|
||||
:npr {:id :npr :code "NPR" :display-name (i18n/label :t/currency-display-name-npr) :symbol "₨"}
|
||||
:nzd {:id :nzd :code "NZD" :display-name (i18n/label :t/currency-display-name-nzd) :symbol "$"}
|
||||
:omr {:id :omr :code "OMR" :display-name (i18n/label :t/currency-display-name-omr) :symbol "﷼"}
|
||||
:pen {:id :pen :code "PEN" :display-name (i18n/label :t/currency-display-name-pen) :symbol "S/."}
|
||||
:pgk {:id :pgk :code "PGK" :display-name (i18n/label :t/currency-display-name-pgk) :symbol "K"}
|
||||
:php {:id :php :code "PHP" :display-name (i18n/label :t/currency-display-name-php) :symbol "₱"}
|
||||
:pkr {:id :pkr :code "PKR" :display-name (i18n/label :t/currency-display-name-pkr) :symbol "₨"}
|
||||
:pln {:id :pln :code "PLN" :display-name (i18n/label :t/currency-display-name-pln) :symbol "zł"}
|
||||
:pyg {:id :pyg :code "PYG" :display-name (i18n/label :t/currency-display-name-pyg) :symbol "Gs"}
|
||||
:qar {:id :qar :code "QAR" :display-name (i18n/label :t/currency-display-name-qar) :symbol "﷼"}
|
||||
:ron {:id :ron :code "RON" :display-name (i18n/label :t/currency-display-name-ron) :symbol "lei"}
|
||||
:rsd {:id :rsd :code "RSD" :display-name (i18n/label :t/currency-display-name-rsd) :symbol "Дин."}
|
||||
:rub {:id :rub :code "RUB" :display-name (i18n/label :t/currency-display-name-rub) :symbol "₽"}
|
||||
:sar {:id :sar :code "SAR" :display-name (i18n/label :t/currency-display-name-sar) :symbol "﷼"}
|
||||
:sek {:id :sek :code "SEK" :display-name (i18n/label :t/currency-display-name-sek) :symbol "kr"}
|
||||
:sgd {:id :sgd :code "SGD" :display-name (i18n/label :t/currency-display-name-sgd) :symbol "$"}
|
||||
:thb {:id :thb :code "THB" :display-name (i18n/label :t/currency-display-name-thb) :symbol "฿"}
|
||||
:ttd {:id :ttd :code "TTD" :display-name (i18n/label :t/currency-display-name-ttd) :symbol "TT$"}
|
||||
:twd {:id :twd :code "TWD" :display-name (i18n/label :t/currency-display-name-twd) :symbol "NT$"}
|
||||
:tzs {:id :tzs :code "TZS" :display-name (i18n/label :t/currency-display-name-tzs) :symbol "TSh"}
|
||||
:try {:id :try :code "TRY" :display-name (i18n/label :t/currency-display-name-try) :symbol "₺"}
|
||||
:uah {:id :uah :code "UAH" :display-name (i18n/label :t/currency-display-name-uah) :symbol "₴"}
|
||||
:ugx {:id :ugx :code "UGX" :display-name (i18n/label :t/currency-display-name-ugx) :symbol "USh"}
|
||||
:uyu {:id :uyu :code "UYU" :display-name (i18n/label :t/currency-display-name-uyu) :symbol "$U"}
|
||||
:usd {:id :usd :code "USD" :display-name (i18n/label :t/currency-display-name-usd) :symbol "$"}
|
||||
:vef {:id :vef :code "VEF" :display-name (i18n/label :t/currency-display-name-vef) :symbol "Bs"}
|
||||
:vnd {:id :vnd :code "VND" :display-name (i18n/label :t/currency-display-name-vnd) :symbol "₫"}
|
||||
:zar {:id :zar :code "ZAR" :display-name (i18n/label :t/currency-display-name-zar) :symbol "R"}})
|
||||
(def ^:const web3-send-transaction "eth_sendTransaction")
|
||||
(def ^:const web3-personal-sign "personal_sign")
|
||||
(def ^:const web3-sign-typed-data "eth_signTypedData")
|
||||
(def ^:const web3-sign-typed-data-v3 "eth_signTypedData_v3")
|
||||
|
||||
(def send-transaction-failed-parse-response 1)
|
||||
(def send-transaction-failed-parse-params 2)
|
||||
(def send-transaction-no-account-selected 3)
|
||||
(def send-transaction-invalid-tx-sender 4)
|
||||
(def send-transaction-err-decrypt 5)
|
||||
(def ^:const web3-keycard-sign-typed-data "keycard_signTypedData")
|
||||
|
||||
(def web3-send-transaction "eth_sendTransaction")
|
||||
(def web3-personal-sign "personal_sign")
|
||||
(def web3-sign-typed-data "eth_signTypedData")
|
||||
(def web3-sign-typed-data-v3 "eth_signTypedData_v3")
|
||||
|
||||
;; Keycard ns
|
||||
|
||||
(def web3-keycard-sign-typed-data "keycard_signTypedData")
|
||||
|
||||
(defn web3-sign-message? [method]
|
||||
(#{web3-sign-typed-data web3-sign-typed-data-v3 web3-personal-sign web3-keycard-sign-typed-data} method))
|
||||
|
||||
(def status-create-address "status_createaddress")
|
||||
(def ^:const status-create-address "status_createaddress")
|
||||
|
||||
; BIP44 Wallet Root Key, the extended key from which any wallet can be derived
|
||||
(def path-wallet-root "m/44'/60'/0'/0")
|
||||
(def ^:const path-wallet-root "m/44'/60'/0'/0")
|
||||
; EIP1581 Root Key, the extended key from which any whisper key/encryption key can be derived
|
||||
(def path-eip1581 "m/43'/60'/1581'")
|
||||
(def ^:const path-eip1581 "m/43'/60'/1581'")
|
||||
; BIP44-0 Wallet key, the default wallet key
|
||||
(def path-default-wallet (str path-wallet-root "/0"))
|
||||
(def ^:const path-default-wallet (str path-wallet-root "/0"))
|
||||
; EIP1581 Chat Key 0, the default whisper key
|
||||
(def path-whisper (str path-eip1581 "/0'/0"))
|
||||
(def ^:const path-whisper (str path-eip1581 "/0'/0"))
|
||||
|
||||
(def path-default-wallet-keyword (keyword path-default-wallet))
|
||||
(def path-whisper-keyword (keyword path-whisper))
|
||||
(def path-wallet-root-keyword (keyword path-wallet-root))
|
||||
(def path-eip1581-keyword (keyword path-eip1581))
|
||||
(def ^:const path-default-wallet-keyword (keyword path-default-wallet))
|
||||
(def ^:const path-whisper-keyword (keyword path-whisper))
|
||||
(def ^:const path-wallet-root-keyword (keyword path-wallet-root))
|
||||
(def ^:const path-eip1581-keyword (keyword path-eip1581))
|
||||
|
||||
(def method-id-transfer "0xa9059cbb")
|
||||
(def method-id-approve "0x095ea7b3")
|
||||
(def method-id-approve-and-call "0xcae9ca51")
|
||||
(def ^:const method-id-transfer "0xa9059cbb")
|
||||
(def ^:const method-id-approve "0x095ea7b3")
|
||||
(def ^:const method-id-approve-and-call "0xcae9ca51")
|
||||
|
||||
(def regx-emoji #"^((?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDD1-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])?|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])\uFE0F|[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF])+$")
|
||||
(def regx-bold #"\*[^*]+\*")
|
||||
|
@ -195,21 +104,18 @@
|
|||
(def regx-universal-link #"((^https?://join.status.im/)|(^status-im://))[\x00-\x7F]+$")
|
||||
(def regx-deep-link #"((^ethereum:.*)|(^status-im://[\x00-\x7F]+$))")
|
||||
|
||||
(def lines-collapse-threshold 20)
|
||||
(def chars-collapse-threshold 600)
|
||||
(def ^:const dapp-permission-contact-code "contact-code")
|
||||
(def ^:const dapp-permission-web3 "web3")
|
||||
(def ^:const dapp-permission-qr-code "qr-code")
|
||||
(def ^:const api-response "api-response")
|
||||
(def ^:const api-request "api-request")
|
||||
(def ^:const history-state-changed "history-state-changed")
|
||||
(def ^:const web3-send-async-read-only "web3-send-async-read-only")
|
||||
(def ^:const web3-send-async-callback "web3-send-async-callback")
|
||||
(def ^:const scan-qr-code "scan-qr-code")
|
||||
|
||||
(def dapp-permission-contact-code "contact-code")
|
||||
(def dapp-permission-web3 "web3")
|
||||
(def dapp-permission-qr-code "qr-code")
|
||||
(def api-response "api-response")
|
||||
(def api-request "api-request")
|
||||
(def history-state-changed "history-state-changed")
|
||||
(def web3-send-async-read-only "web3-send-async-read-only")
|
||||
(def web3-send-async-callback "web3-send-async-callback")
|
||||
(def scan-qr-code "scan-qr-code")
|
||||
(def ^:const faq "https://status.im/faq/")
|
||||
(def ^:const faq-keycard (str faq "#keycard"))
|
||||
(def ^:const keycard-integration-link "https://status.im/keycard-integration")
|
||||
|
||||
(def faq "https://status.im/faq/")
|
||||
(def faq-keycard (str faq "#keycard"))
|
||||
(def keycard-integration-link "https://status.im/keycard-integration")
|
||||
|
||||
(def status-community-id "0x039b2da47552aa117a96ea8f1d4d108ba66637c7517a3c94a57b99dbb8a002eda2")
|
||||
(def ^:const status-community-id "0x039b2da47552aa117a96ea8f1d4d108ba66637c7517a3c94a57b99dbb8a002eda2")
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
(apply fx/merge cofx fxs)))
|
||||
|
||||
(fx/defn block-contact
|
||||
{:events [:contact.ui/block-contact-confirmed]}
|
||||
[{:keys [db now] :as cofx} public-key]
|
||||
(let [contact (-> (contact.db/public-key->contact
|
||||
(:contacts/contacts db)
|
||||
|
@ -59,6 +60,7 @@
|
|||
(navigation/navigate-back)))))
|
||||
|
||||
(fx/defn unblock-contact
|
||||
{:events [:contact.ui/unblock-contact-pressed]}
|
||||
[{:keys [db now] :as cofx} public-key]
|
||||
(let [contact (-> (get-in db [:contacts/contacts public-key])
|
||||
(assoc :last-updated now)
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
(ns status-im.contact.chat
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.chat.models :as chat]
|
||||
[status-im.contact.core :as contact]))
|
||||
|
||||
(fx/defn send-message-pressed
|
||||
{:events [:contact.ui/send-message-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[cofx {:keys [public-key]}]
|
||||
(chat/start-chat cofx public-key))
|
||||
|
||||
(fx/defn contact-code-submitted
|
||||
{:events [:contact.ui/contact-code-submitted]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[{{:contacts/keys [new-identity]} :db :as cofx} new-contact? nickname]
|
||||
(let [{:keys [public-key ens-name]} new-identity]
|
||||
(fx/merge cofx
|
||||
#(if new-contact?
|
||||
(contact/add-contact % public-key nickname)
|
||||
(chat/start-chat % public-key))
|
||||
#(when new-contact?
|
||||
(navigation/navigate-back %))
|
||||
#(when ens-name
|
||||
(contact/name-verified % public-key ens-name)))))
|
|
@ -68,6 +68,8 @@
|
|||
|
||||
(fx/defn add-contact
|
||||
"Add a contact and set pending to false"
|
||||
{:events [:contact.ui/add-to-contact-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[{:keys [db] :as cofx} public-key nickname]
|
||||
(when (not= (get-in db [:multiaccount :public-key]) public-key)
|
||||
(let [contact (cond-> (get-in db [:contacts/contacts public-key]
|
||||
|
@ -110,6 +112,7 @@
|
|||
(contacts-store/fetch-contacts-rpc cofx #(re-frame/dispatch [::contacts-loaded %])))
|
||||
|
||||
(fx/defn open-contact-toggle-list
|
||||
{:events [:contact.ui/start-group-chat-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db
|
||||
|
|
|
@ -1,91 +1,25 @@
|
|||
(ns status-im.core
|
||||
(:require status-im.utils.db
|
||||
status-im.subs
|
||||
status-im.events
|
||||
["react-native-languages" :default react-native-languages]
|
||||
["react-native-shake" :as react-native-shake]
|
||||
["react-native-screens" :refer (enableScreens)]
|
||||
["react-native" :as rn :refer (DevSettings)]
|
||||
status-im.subs
|
||||
[status-im.ui.screens.views :as views]
|
||||
[re-frame.core :as re-frame]
|
||||
[re-frame.interop :as interop]
|
||||
[reagent.core :as reagent]
|
||||
[reagent.impl.batching :as batching]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.notifications.local :as notifications]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.screens.views :as views]
|
||||
[status-im.utils.error-handler :as error-handler]
|
||||
[status-im.utils.logging.core :as utils.logs]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.snoopy :as snoopy]
|
||||
[status-im.utils.config :as config]))
|
||||
[status-im.utils.config :as config]
|
||||
["react-native-screens" :refer (enableScreens)]
|
||||
["react-native" :as rn :refer (DevSettings LogBox)]))
|
||||
|
||||
(set! interop/next-tick js/setTimeout)
|
||||
(set! batching/fake-raf #(js/setTimeout % 0))
|
||||
|
||||
(aset js/console "disableYellowBox" true)
|
||||
;; TODO we must fix all warnings, currently it's just a noise
|
||||
|
||||
#_(if js/goog.DEBUG
|
||||
(do
|
||||
(.unstable_enableLogBox ^js rn)
|
||||
(.ignoreWarnings (.-YellowBox ^js rn)
|
||||
#js ["re-frame: overwriting"
|
||||
"Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details."
|
||||
"Warning: componentWillUpdate has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details."]))
|
||||
(aset js/console "disableYellowBox" true))
|
||||
|
||||
(def app-registry (.-AppRegistry rn))
|
||||
(def splash-screen (-> rn .-NativeModules .-SplashScreen))
|
||||
|
||||
(defn on-languages-change [^js event]
|
||||
(i18n/set-language (.-language event)))
|
||||
|
||||
(defn on-shake []
|
||||
(re-frame/dispatch [:shake-event]))
|
||||
|
||||
(defn app-state-change-handler [state]
|
||||
(re-frame/dispatch [:app-state-change state]))
|
||||
|
||||
(defn root [_]
|
||||
(reagent/create-class
|
||||
{:component-did-mount
|
||||
(fn [_]
|
||||
(.addListener ^js react/keyboard
|
||||
(if platform/ios?
|
||||
"keyboardWillShow"
|
||||
"keyboardDidShow")
|
||||
(fn [^js e]
|
||||
(let [h (.. e -endCoordinates -height)]
|
||||
(re-frame/dispatch-sync [:set :keyboard-height h])
|
||||
(re-frame/dispatch-sync [:set :keyboard-max-height h]))))
|
||||
(.addListener ^js react/keyboard
|
||||
(if platform/ios?
|
||||
"keyboardWillHide"
|
||||
"keyboardDidHide")
|
||||
(fn [_]
|
||||
(re-frame/dispatch-sync [:set :keyboard-height 0])))
|
||||
(.addEventListener ^js react/app-state "change" app-state-change-handler)
|
||||
(.addEventListener react-native-languages "change" on-languages-change)
|
||||
(.addEventListener react-native-shake
|
||||
"ShakeEvent"
|
||||
on-shake)
|
||||
(.hide ^js splash-screen))
|
||||
:component-will-unmount
|
||||
(fn []
|
||||
(.removeEventListener ^js react/app-state "change" app-state-change-handler)
|
||||
(.removeEventListener react-native-languages "change" on-languages-change))
|
||||
:display-name "root"
|
||||
:reagent-render views/main}))
|
||||
|
||||
(defn disable-rn-fast-refresh []
|
||||
;;on Android this method doesn't work
|
||||
(when (and js/goog.DEBUG platform/ios? DevSettings)
|
||||
(when-let [nm (.-_nativeModule DevSettings)]
|
||||
;;there is a bug in RN, so we have to enable it first and then disable
|
||||
(.setHotLoadingEnabled ^js nm true)
|
||||
(js/setTimeout #(.setHotLoadingEnabled ^js nm false) 1000))))
|
||||
(.ignoreAllLogs LogBox)
|
||||
|
||||
(defn init []
|
||||
(utils.logs/init-logs config/log-level)
|
||||
|
@ -94,9 +28,14 @@
|
|||
(re-frame/dispatch-sync [:init/app-started])
|
||||
(when platform/android?
|
||||
(status/set-soft-input-mode status/adjust-resize))
|
||||
(.registerComponent ^js app-registry "StatusIm" #(reagent/reactify-component root))
|
||||
(.registerComponent ^js (.-AppRegistry rn) "StatusIm" #(reagent/reactify-component views/root))
|
||||
(notifications/listen-notifications)
|
||||
(when platform/android?
|
||||
(.registerHeadlessTask ^js app-registry "LocalNotifications" notifications/handle))
|
||||
(.registerHeadlessTask ^js (.-AppRegistry rn) "LocalNotifications" notifications/handle))
|
||||
(snoopy/subscribe!)
|
||||
(disable-rn-fast-refresh))
|
||||
(when (and js/goog.DEBUG platform/ios? DevSettings)
|
||||
;;on Android this method doesn't work
|
||||
(when-let [nm (.-_nativeModule DevSettings)]
|
||||
;;there is a bug in RN, so we have to enable it first and then disable
|
||||
(.setHotLoadingEnabled ^js nm true)
|
||||
(js/setTimeout #(.setHotLoadingEnabled ^js nm false) 1000))))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(ns status-im.ui.screens.currency-settings.models
|
||||
(ns status-im.currency.core
|
||||
(:require [status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.wallet.prices :as prices]))
|
||||
|
@ -7,6 +7,7 @@
|
|||
(get-in db [:multiaccount :currency] :usd))
|
||||
|
||||
(fx/defn set-currency
|
||||
{:events [:wallet.settings.ui/currency-selected]}
|
||||
[{:keys [db] :as cofx} currency]
|
||||
(fx/merge cofx
|
||||
(multiaccounts.update/multiaccount-update
|
|
@ -1,6 +1,6 @@
|
|||
(ns status-im.ui.screens.currency-settings.models-test
|
||||
(ns status-im.currency.core-test
|
||||
(:require [cljs.test :refer-macros [deftest is]]
|
||||
[status-im.ui.screens.currency-settings.models :as models]))
|
||||
[status-im.currency.core :as models]))
|
||||
|
||||
(deftest get-currency
|
||||
(is (= :usd (models/get-currency {:multiaccount {:currency :usd}})))
|
|
@ -7,7 +7,6 @@
|
|||
(def app-db {:keyboard-height 0
|
||||
:contacts/contacts {}
|
||||
:pairing/installations {}
|
||||
:qr-codes {}
|
||||
:group/selected-contacts #{}
|
||||
:chats {}
|
||||
:current-chat-id nil
|
||||
|
@ -20,8 +19,6 @@
|
|||
:peers-count 0
|
||||
:node-info {}
|
||||
:peers-summary []
|
||||
:my-profile/editing? false
|
||||
:transport/filters {}
|
||||
:transport/message-envelopes {}
|
||||
:mailserver/mailservers (fleet/default-mailservers {})
|
||||
:mailserver/topics {}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
(log/error ::error event))
|
||||
|
||||
(fx/defn register-subscription
|
||||
{:events [:ethereum.callback/subscription-success]}
|
||||
[{:keys [db]} id handler]
|
||||
{:db (assoc-in db [:ethereum/subscriptions id] handler)})
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.fleet.core
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.node.core :as node]
|
||||
[status-im.utils.config :as config]
|
||||
|
@ -33,7 +33,8 @@
|
|||
(node/fleets db)))
|
||||
|
||||
(fx/defn show-save-confirmation
|
||||
[{:keys [db] :as cofx} fleet]
|
||||
{:events [:fleet.ui/fleet-selected]}
|
||||
[_ fleet]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/close-app-title)
|
||||
:content (i18n/label :t/change-fleet
|
||||
|
@ -68,6 +69,7 @@
|
|||
nodes))))})
|
||||
|
||||
(fx/defn save
|
||||
{:events [:fleet.ui/save-fleet-confirmed]}
|
||||
[{:keys [db now] :as cofx} fleet]
|
||||
(let [old-fleet (get-in db [:multiaccount :fleet])]
|
||||
(when (not= fleet old-fleet)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(ns status-im.default-fleet
|
||||
(ns status-im.fleet.default-fleet
|
||||
(:require-macros [status-im.utils.slurp :refer [slurp]]))
|
||||
|
||||
(def default-fleets
|
||||
(slurp "resources/config/fleets.json"))
|
||||
(slurp "resources/config/fleets.json"))
|
|
@ -13,13 +13,15 @@
|
|||
[status-im.transport.filters.core :as transport.filters]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.constants :as constants]))
|
||||
[status-im.constants :as constants]
|
||||
[status-im.i18n.i18n :as i18n]))
|
||||
|
||||
(fx/defn remove-member
|
||||
"Format group update message and sign membership"
|
||||
[{:keys [db] :as cofx} chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "removeMemberFromGroupChat")
|
||||
:params [nil chat-id member]
|
||||
{:events [:group-chats.ui/remove-member-pressed]}
|
||||
[_ chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "removeMemberFromGroupChat")
|
||||
:params [nil chat-id member]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]})
|
||||
|
||||
(fx/defn set-up-filter
|
||||
|
@ -60,37 +62,42 @@
|
|||
[navigate-fx]))))
|
||||
|
||||
(fx/defn join-chat
|
||||
[cofx chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "confirmJoiningGroup")
|
||||
:params [chat-id]
|
||||
{:events [:group-chats.ui/join-pressed]}
|
||||
[_ chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "confirmJoiningGroup")
|
||||
:params [chat-id]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]})
|
||||
|
||||
(fx/defn create
|
||||
{:events [:group-chats.ui/create-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-guid-generator)]}
|
||||
[{:keys [db] :as cofx} group-name]
|
||||
(let [selected-contacts (:group/selected-contacts db)]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatWithMembers")
|
||||
:params [nil group-name (into [] selected-contacts)]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatWithMembers")
|
||||
:params [nil group-name (into [] selected-contacts)]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]}))
|
||||
|
||||
(fx/defn create-from-link
|
||||
[cofx {:keys [chat-id invitation-admin chat-name]}]
|
||||
(if (get-in cofx [:db :chats chat-id :is-active])
|
||||
(models.chat/navigate-to-chat cofx chat-id)
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatFromInvitation")
|
||||
:params [chat-name chat-id invitation-admin]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatFromInvitation")
|
||||
:params [chat-name chat-id invitation-admin]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]}))
|
||||
|
||||
(fx/defn make-admin
|
||||
[{:keys [db] :as cofx} chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addAdminsToGroupChat")
|
||||
:params [nil chat-id [member]]
|
||||
{:events [:group-chats.ui/make-admin-pressed]}
|
||||
[_ chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addAdminsToGroupChat")
|
||||
:params [nil chat-id [member]]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]})
|
||||
|
||||
(fx/defn add-members
|
||||
"Add members to a group chat"
|
||||
{:events [:group-chats.ui/add-members-pressed]}
|
||||
[{{:keys [current-chat-id selected-participants]} :db :as cofx}]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addMembersToGroupChat")
|
||||
:params [nil current-chat-id selected-participants]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addMembersToGroupChat")
|
||||
:params [nil current-chat-id selected-participants]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]})
|
||||
|
||||
(fx/defn add-members-from-invitation
|
||||
|
@ -106,8 +113,8 @@
|
|||
"Leave chat"
|
||||
{:events [:group-chats.ui/leave-chat-confirmed]}
|
||||
[{:keys [db] :as cofx} chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "leaveGroupChat")
|
||||
:params [nil chat-id true]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "leaveGroupChat")
|
||||
:params [nil chat-id true]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]})
|
||||
|
||||
(fx/defn remove
|
||||
|
@ -132,9 +139,9 @@
|
|||
{:events [:group-chats.ui/name-changed]}
|
||||
[{:keys [db] :as cofx} chat-id new-name]
|
||||
(when (valid-name? new-name)
|
||||
{:db (assoc-in db [:chats chat-id :name] new-name)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "changeGroupChatName")
|
||||
:params [nil chat-id new-name]
|
||||
{:db (assoc-in db [:chats chat-id :name] new-name)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "changeGroupChatName")
|
||||
:params [nil chat-id new-name]
|
||||
:on-success #(re-frame/dispatch [::chat-updated %])}]}))
|
||||
|
||||
(fx/defn membership-retry
|
||||
|
@ -153,9 +160,9 @@
|
|||
[{{:keys [current-chat-id chats] :as db} :db :as cofx}]
|
||||
(let [{:keys [invitation-admin]} (get chats current-chat-id)
|
||||
message (get-in db [:chat/memberships current-chat-id :message])]
|
||||
{:db (assoc-in db [:chat/memberships current-chat-id] nil)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRequest")
|
||||
:params [nil current-chat-id invitation-admin message]
|
||||
{:db (assoc-in db [:chat/memberships current-chat-id] nil)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRequest")
|
||||
:params [nil current-chat-id invitation-admin message]
|
||||
:on-success #(re-frame/dispatch [:transport/invitation-sent %])}]}))
|
||||
|
||||
(fx/defn send-group-chat-membership-rejection
|
||||
|
@ -180,3 +187,49 @@
|
|||
first
|
||||
:type
|
||||
(= constants/invitation-state-removed)))
|
||||
|
||||
(fx/defn deselect-contact
|
||||
{:events [:deselect-contact]}
|
||||
[{:keys [db]} id]
|
||||
{:db (update db :group/selected-contacts disj id)})
|
||||
|
||||
(fx/defn select-contact
|
||||
{:events [:select-contact]}
|
||||
[{:keys [db]} id]
|
||||
{:db (update db :group/selected-contacts conj id)})
|
||||
|
||||
(fx/defn deselect-participant
|
||||
{:events [:deselect-participant]}
|
||||
[{:keys [db]} id]
|
||||
{:db (update db :selected-participants disj id)})
|
||||
|
||||
(fx/defn select-participant
|
||||
{:events [:select-participant]}
|
||||
[{:keys [db]} id]
|
||||
{:db (update db :selected-participants conj id)})
|
||||
|
||||
(fx/defn add-participants-toggle-list
|
||||
{:events [:group/add-participants-toggle-list]}
|
||||
[{db :db}]
|
||||
{:db (assoc db :selected-participants #{})})
|
||||
|
||||
(fx/defn show-group-chat-profile
|
||||
{:events [:show-group-chat-profile]}
|
||||
[{:keys [db] :as cofx} chat-id]
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(assoc :new-chat-name (get-in db [:chats chat-id :name]))
|
||||
(assoc :current-chat-id chat-id))}
|
||||
(navigation/navigate-to-cofx :group-chat-profile nil)))
|
||||
|
||||
(fx/defn ui-leave-chat-pressed
|
||||
{:events [:group-chats.ui/leave-chat-pressed]}
|
||||
[_ chat-id]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/leave-confirmation)
|
||||
:content (i18n/label :t/leave-chat-confirmation)
|
||||
:confirm-button-text (i18n/label :t/leave)
|
||||
:on-accept #(do
|
||||
(re-frame/dispatch [:bottom-sheet/hide])
|
||||
(re-frame/dispatch [:group-chats.ui/leave-chat-confirmed chat-id]))}})
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
(ns status-im.i18n
|
||||
(ns status-im.i18n.i18n
|
||||
(:require
|
||||
[clojure.string :as string]
|
||||
["i18n-js" :as i18n]
|
||||
[status-im.i18n-resources :as i18n-resources]
|
||||
[status-im.i18n.i18n-resources :as i18n-resources]
|
||||
[status-im.goog.i18n :as goog.i18n]))
|
||||
|
||||
(set! (.-locale i18n) (name i18n-resources/default-device-language))
|
|
@ -1,4 +1,4 @@
|
|||
(ns status-im.i18n-resources
|
||||
(ns status-im.i18n.i18n-resources
|
||||
(:require [clojure.string :as string]
|
||||
["i18n-js" :as i18n-js]
|
||||
["react-native-languages" :default react-native-languages]))
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.i18n-test
|
||||
(ns status-im.i18n.i18n-test
|
||||
(:require [cljs.test :refer-macros [deftest is]]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n-resources :as i18n-resources]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.i18n.i18n-resources :as i18n-resources]
|
||||
[clojure.set :as set]
|
||||
[cljs.spec.alpha :as spec]
|
||||
[clojure.string :as string]))
|
|
@ -54,7 +54,9 @@
|
|||
:dispatch-later [{:dispatch [::initialize-view {:logout? logout?}]
|
||||
:ms 100}]})))
|
||||
|
||||
(fx/defn start-app [cofx]
|
||||
(fx/defn start-app
|
||||
{:events [:init/app-started]}
|
||||
[cofx]
|
||||
(fx/merge cofx
|
||||
{:get-supported-biometric-auth nil
|
||||
::init-theme nil
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(ns status-im.keycard.change-pin
|
||||
(:require [status-im.i18n :as i18n]
|
||||
(:require [status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.keycard.onboarding :as onboarding]
|
||||
[status-im.utils.fx :as fx]
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
[re-frame.core :as re-frame]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.keycard.nfc :as nfc]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.ui.components.bottom-sheet.events :as bottom-sheet]
|
||||
[status-im.ui.screens.keycard.keycard-interaction :as keycard-sheet]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.keychain.core :as keychain]
|
||||
[status-im.utils.types :as types]
|
||||
[taoensso.timbre :as log]))
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]))
|
||||
|
||||
(def default-pin "000000")
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
[status-im.keycard.recovery :as recovery]
|
||||
[status-im.keycard.sign :as sign]
|
||||
[status-im.keycard.wallet :as wallet]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.multiaccounts.recover.core :as multiaccounts.recover]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.navigation :as navigation]
|
||||
|
@ -542,3 +542,14 @@
|
|||
:keycard
|
||||
:from-key-storage-and-migration?
|
||||
boolean))
|
||||
|
||||
(fx/defn ui-recovery-phrase-cancel-pressed
|
||||
{:events [:keycard.ui/recovery-phrase-cancel-pressed]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc-in db [:keycard :setup-step] :recovery-phrase)})
|
||||
|
||||
(fx/defn ui-pin-numpad-delete-button-pressed
|
||||
{:events [:keycard.ui/pin-numpad-delete-button-pressed]}
|
||||
[{:keys [db]} step]
|
||||
(when-not (empty? (get-in db [:keycard :pin step]))
|
||||
{:db (update-in db [:keycard :pin step] pop)}))
|
|
@ -1,6 +1,6 @@
|
|||
(ns status-im.keycard.delete-key
|
||||
(:require [status-im.multiaccounts.logout.core :as multiaccounts.logout]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[taoensso.timbre :as log]
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
[status-im.keycard.recovery :as recovery]
|
||||
[status-im.keycard.onboarding :as onboarding]
|
||||
status-im.keycard.fx
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.signing.core :as signing.core]))
|
||||
|
||||
(fx/defn login-got-it-pressed
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.keycard.onboarding
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.keycard.common :as common]
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
[status-im.multiaccounts.create.core :as multiaccounts.create]
|
||||
[status-im.utils.fx :as fx]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.keycard.common :as common]
|
||||
status-im.keycard.fx
|
||||
[status-im.constants :as constants]
|
||||
[status-im.ethereum.eip55 :as eip55]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.utils.platform :as platform]))
|
||||
|
||||
(fx/defn pair* [_ password]
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
[status-im.native-module.core :as status]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[clojure.string :as string]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.multiaccounts.create.core :as multiaccounts.create]))
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.multiaccounts.logout.core :as multiaccounts.logout]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[taoensso.timbre :as log]
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.node.core :as node]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.utils.fx :as fx]))
|
||||
|
||||
(fx/defn save-log-level
|
||||
{:events [:log-level.ui/change-log-level-confirmed]}
|
||||
[{:keys [db now] :as cofx} log-level]
|
||||
(let [old-log-level (get-in db [:multiaccount :log-level])]
|
||||
(when (not= old-log-level log-level)
|
||||
|
@ -17,7 +18,8 @@
|
|||
{:on-success #(re-frame/dispatch [:logout])})))))
|
||||
|
||||
(fx/defn show-change-log-level-confirmation
|
||||
[{:keys [db]} {:keys [name value] :as log-level}]
|
||||
{:events [:log-level.ui/log-level-selected]}
|
||||
[_ {:keys [name value]}]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/close-app-title)
|
||||
:content (i18n/label :t/change-log-level
|
||||
|
|
|
@ -5,15 +5,13 @@
|
|||
[re-frame.core :as re-frame]
|
||||
[status-im.data-store.mailservers :as data-store.mailservers]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.mailserver.constants :as constants]
|
||||
[status-im.multiaccounts.model :as multiaccounts.model]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.node.core :as node]
|
||||
[status-im.ui.screens.mobile-network-settings.utils
|
||||
:as
|
||||
mobile-network-utils]
|
||||
[status-im.utils.mobile-sync :as mobile-network-utils]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.config :as config]
|
||||
[status-im.utils.fx :as fx]
|
||||
|
@ -370,8 +368,9 @@
|
|||
topics (topics/topics-for-chat db chat-id)]
|
||||
(reduce assoc-topic-chat chats-map topics)))
|
||||
|
||||
(fx/defn handle-request-success [{{:keys [chats] :as db} :db}
|
||||
{:keys [request-id topics]}]
|
||||
(fx/defn handle-request-success
|
||||
{:events [:mailserver.callback/request-success]}
|
||||
[{{:keys [chats] :as db} :db} {:keys [request-id topics]}]
|
||||
(when (:mailserver/current-request db)
|
||||
(let [by-topic-never-synced-chats
|
||||
(reduce-kv
|
||||
|
@ -524,6 +523,7 @@
|
|||
"the current mailserver has been trusted
|
||||
update mailserver status to `:connected` and request messages
|
||||
if mailserver is ready"
|
||||
{:events [:mailserver.callback/mark-trusted-peer-success]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (update-mailserver-state db :connected)}
|
||||
|
@ -533,6 +533,7 @@
|
|||
"the current mailserver sym-key has been generated
|
||||
add sym-key to the mailserver in app-db and request messages if
|
||||
mailserver is ready"
|
||||
{:events [:mailserver.callback/generate-mailserver-symkey-success]}
|
||||
[{:keys [db] :as cofx} {:keys [id]} sym-key-id]
|
||||
(let [current-fleet (node/current-fleet-key db)]
|
||||
(fx/merge
|
||||
|
@ -545,6 +546,7 @@
|
|||
(process-next-messages-request))))
|
||||
|
||||
(fx/defn update-use-mailservers
|
||||
{:events [:mailserver.ui/use-history-switch-pressed]}
|
||||
[cofx use-mailservers?]
|
||||
(fx/merge cofx
|
||||
(multiaccounts.update/multiaccount-update :use-mailservers? use-mailservers? {})
|
||||
|
@ -604,6 +606,7 @@
|
|||
(fx/defn check-connection
|
||||
"Check connection checks that the connection is successfully connected,
|
||||
otherwise it will try to change mailserver and connect again"
|
||||
{:events [:mailserver/check-connection-timeout :mailserver.callback/mark-trusted-peer-error]}
|
||||
[{:keys [db now] :as cofx}]
|
||||
;; check if logged into multiaccount
|
||||
(when (contains? db :multiaccount)
|
||||
|
@ -894,6 +897,7 @@
|
|||
(process-next-messages-request))))))))
|
||||
|
||||
(fx/defn retry-next-messages-request
|
||||
{:events [:mailserver.ui/retry-request-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (dissoc db :mailserver/request-error)}
|
||||
|
@ -953,6 +957,7 @@
|
|||
(handle-request-error cofx errorMessage))))
|
||||
|
||||
(fx/defn show-request-error-popup
|
||||
{:events [:mailserver.ui/request-error-pressed]}
|
||||
[{:keys [db]}]
|
||||
(let [mailserver-error (:mailserver/request-error db)]
|
||||
{:utils/show-confirmation
|
||||
|
@ -991,6 +996,7 @@
|
|||
:request first-request})))))
|
||||
|
||||
(fx/defn resend-request
|
||||
{:events [:mailserver.callback/resend-request]}
|
||||
[{:keys [db] :as cofx} {:keys [request-id]}]
|
||||
(let [current-request (:mailserver/current-request db)
|
||||
gap-request? (executing-gap-request? db)]
|
||||
|
@ -1065,7 +1071,9 @@
|
|||
(let [[initial host] (extract-address-components address)]
|
||||
(str "enode://" initial ":" password "@" host)))
|
||||
|
||||
(fx/defn set-input [{:keys [db]} input-key value]
|
||||
(fx/defn set-input
|
||||
{:events [:mailserver.ui/input-changed]}
|
||||
[{:keys [db]} input-key value]
|
||||
{:db (update
|
||||
db
|
||||
:mailserver.edit/mailserver
|
||||
|
@ -1092,7 +1100,9 @@
|
|||
|
||||
(def default? (comp not :user-defined fetch))
|
||||
|
||||
(fx/defn edit [{:keys [db] :as cofx} id]
|
||||
(fx/defn edit
|
||||
{:events [:mailserver.ui/user-defined-mailserver-selected]}
|
||||
[{:keys [db] :as cofx} id]
|
||||
(let [{:keys [id address password name]} (fetch db id)
|
||||
url (when address (build-url address password))]
|
||||
(fx/merge cofx
|
||||
|
@ -1108,6 +1118,8 @@
|
|||
(update :id name)))
|
||||
|
||||
(fx/defn upsert
|
||||
{:events [:mailserver.ui/save-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[{{:mailserver.edit/keys [mailserver] :keys [multiaccount] :as db} :db
|
||||
random-id-generator :random-id-generator :as cofx}]
|
||||
|
||||
|
@ -1145,6 +1157,7 @@
|
|||
(connected? db id))))
|
||||
|
||||
(fx/defn delete
|
||||
{:events [:mailserver.ui/delete-confirmed]}
|
||||
[{:keys [db] :as cofx} id]
|
||||
(if (can-delete? db id)
|
||||
{:db (-> db
|
||||
|
@ -1161,6 +1174,7 @@
|
|||
{:dispatch [:navigate-back]}))
|
||||
|
||||
(fx/defn show-connection-confirmation
|
||||
{:events [:mailserver.ui/default-mailserver-selected :mailserver.ui/connect-pressed]}
|
||||
[{:keys [db]} mailserver-id]
|
||||
(let [current-fleet (node/current-fleet-key db)]
|
||||
{:ui/show-confirmation
|
||||
|
@ -1176,6 +1190,7 @@
|
|||
:on-cancel nil}}))
|
||||
|
||||
(fx/defn show-delete-confirmation
|
||||
{:events [:mailserver.ui/delete-pressed]}
|
||||
[{:keys [db]} mailserver-id]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/delete-mailserver-title)
|
||||
|
@ -1185,14 +1200,18 @@
|
|||
[:mailserver.ui/delete-confirmed mailserver-id])}})
|
||||
|
||||
(fx/defn set-url-from-qr
|
||||
{:events [:mailserver.callback/qr-code-scanned]}
|
||||
[cofx url]
|
||||
(assoc (set-input cofx :url url)
|
||||
:dispatch [:navigate-back]))
|
||||
|
||||
(fx/defn dismiss-connection-error [{:keys [db]} new-state]
|
||||
(fx/defn dismiss-connection-error
|
||||
{:events [:mailserver.ui/dismiss-connection-error]}
|
||||
[{:keys [db]} new-state]
|
||||
{:db (assoc db :mailserver/connection-error-dismissed new-state)})
|
||||
|
||||
(fx/defn save-settings
|
||||
{:events [:mailserver.ui/connect-confirmed]}
|
||||
[{:keys [db] :as cofx} current-fleet mailserver-id]
|
||||
(let [{:keys [address]} (fetch-current db)
|
||||
pinned-mailservers (get-in db [:multiaccount :pinned-mailservers])
|
||||
|
@ -1212,6 +1231,7 @@
|
|||
{})))))
|
||||
|
||||
(fx/defn unpin
|
||||
{:events [:mailserver.ui/unpin-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [current-fleet (node/current-fleet-key db)
|
||||
pinned-mailservers (get-in db [:multiaccount :pinned-mailservers])]
|
||||
|
@ -1223,6 +1243,7 @@
|
|||
(change-mailserver))))
|
||||
|
||||
(fx/defn pin
|
||||
{:events [:mailserver.ui/pin-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [current-fleet (node/current-fleet-key db)
|
||||
mailserver-id (:mailserver/current-id db)
|
||||
|
@ -1259,3 +1280,10 @@
|
|||
(assoc-in [:mailserver/gaps chat-id] gaps))}
|
||||
|
||||
(data-store.mailservers/delete-gaps outdated-gaps))))
|
||||
|
||||
(fx/defn mailserver-ui-add-pressed
|
||||
{:events [:mailserver.ui/add-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (dissoc db :mailserver.edit/mailserver)}
|
||||
(navigation/navigate-to-cofx :edit-mailserver nil)))
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue