From c9e6f0aff7163059c7bc288ff11a2392d94c7b2f Mon Sep 17 00:00:00 2001 From: Gheorghe Pinzaru Date: Thu, 5 Mar 2020 10:01:30 +0300 Subject: [PATCH] Add animation to wallet header transition Add reanimated lib Wallet header animation Animate android elevation Move constants into styles Ensure line width Signed-off-by: Gheorghe Pinzaru --- clj-rn.conf.edn | 3 + ios/Podfile.lock | 10 +- mobile/js_files/package.json | 4 +- mobile/js_files/yarn.lock | 69 +++- .../maven-and-npm-deps/maven/maven-inputs.txt | 26 ++ .../maven/maven-sources.nix | 390 ++++++++++++++++++ .../react_native/js_dependencies.cljs | 6 +- .../ui/components/button/haptic.cljs | 27 ++ src/status_im/ui/components/reanimated.cljs | 159 +++++++ src/status_im/ui/components/tabbar/core.cljs | 3 +- src/status_im/ui/components/topbar.cljs | 1 + .../ui/screens/routing/wallet_stack.cljs | 1 + .../ui/screens/wallet/accounts/styles.cljs | 69 +++- .../ui/screens/wallet/accounts/views.cljs | 123 +++--- .../react_native/js_dependencies.cljs | 57 ++- 15 files changed, 882 insertions(+), 66 deletions(-) create mode 100644 src/status_im/ui/components/button/haptic.cljs create mode 100644 src/status_im/ui/components/reanimated.cljs diff --git a/clj-rn.conf.edn b/clj-rn.conf.edn index f46bfacc6e..a650e62817 100644 --- a/clj-rn.conf.edn +++ b/clj-rn.conf.edn @@ -44,6 +44,9 @@ "react-native-shake" "@react-native-community/netinfo" "react-native-gesture-handler" + "react-native-reanimated" + "react-native-redash" + "react-native-haptic-feedback" "react-native-safe-area-context" "react-native-dark-mode"] ;; Desktop modules diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 20f24af5b8..23d7dc8e58 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -248,7 +248,7 @@ PODS: - React - RNFS (2.14.1): - React - - RNGestureHandler (1.5.3): + - RNGestureHandler (1.6.0): - React - RNImageCropPicker (0.25.3): - QBImagePickerController @@ -259,6 +259,8 @@ PODS: - React - RNLanguages (3.0.2): - React + - RNReactNativeHapticFeedback (1.9.0): + - React - RNReanimated (1.7.0): - React - RNScreens (2.3.0): @@ -320,6 +322,7 @@ DEPENDENCIES: - RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`) - RNKeychain (from `../node_modules/react-native-keychain`) - RNLanguages (from `../node_modules/react-native-languages`) + - RNReactNativeHapticFeedback (from `../node_modules/react-native-haptic-feedback`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNScreens (from `../node_modules/react-native-screens`) - RNSVG (from `../node_modules/react-native-svg`) @@ -417,6 +420,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-keychain" RNLanguages: :path: "../node_modules/react-native-languages" + RNReactNativeHapticFeedback: + :path: "../node_modules/react-native-haptic-feedback" RNReanimated: :path: "../node_modules/react-native-reanimated" RNScreens: @@ -467,10 +472,11 @@ SPEC CHECKSUMS: ReactNativeDarkMode: 0178ffca3b10f6a7c9f49d6f9810232b328fa949 RNCMaskedView: a88953beefbd347a29072d9eba90e42945fe291e RNFS: a8fbe7060fa49157d819466404794ad9c58e58cf - RNGestureHandler: 02905abe54e1f6e59c081a10b4bd689721e17aa6 + RNGestureHandler: dde546180bf24af0b5f737c8ad04b6f3fa51609a RNImageCropPicker: bfb3ea9c8622f290532e2fe63f369e0d5a52f597 RNKeychain: 216f37338fcb9e5c3a2530f1e3295f737a690cb1 RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e + RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071 RNReanimated: 031fe8d9ea93c2bd689a40f05320ef9d96f74d7f RNScreens: 03bf608b92ac0acf323f47d8f5b63a8f829340c8 RNSVG: be27aa7c58819f97399388ae53d7fa0572f32c7f diff --git a/mobile/js_files/package.json b/mobile/js_files/package.json index 7e0fe02714..605e83bc1a 100644 --- a/mobile/js_files/package.json +++ b/mobile/js_files/package.json @@ -32,7 +32,8 @@ "react-native-dialogs": "^1.0.4", "react-native-fetch-polyfill": "^1.1.2", "react-native-fs": "^2.14.1", - "react-native-gesture-handler": "^1.5.3", + "react-native-gesture-handler": "^1.6.0", + "react-native-haptic-feedback": "^1.9.0", "react-native-image-crop-picker": "^0.25.0", "react-native-image-resizer": "git+https://github.com/status-im/react-native-image-resizer.git#1.0.0-1-status", "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status", @@ -40,6 +41,7 @@ "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v4.0.0-status", "react-native-navigation-twopane": "git+https://github.com/status-im/react-native-navigation-twopane.git#v0.0.2-status", "react-native-reanimated": "^1.7.0", + "react-native-redash": "^10.0.1", "react-native-safe-area-context": "^0.7.3", "react-native-screens": "^2.3.0", "react-native-shake": "^3.3.1", diff --git a/mobile/js_files/yarn.lock b/mobile/js_files/yarn.lock index e758e8fcb9..ad9ca9c749 100644 --- a/mobile/js_files/yarn.lock +++ b/mobile/js_files/yarn.lock @@ -838,6 +838,13 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + "@hapi/address@2.x.x": version "2.1.2" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" @@ -1061,6 +1068,11 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@types/hammerjs@^2.0.36": + version "2.0.36" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" + integrity sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1130,6 +1142,11 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +abs-svg-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" + integrity sha1-32Acjo0roQ1KdtYl4japo5wnI78= + absolute-path@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" @@ -2790,11 +2807,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -hammerjs@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" - integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE= - handlebars@^4.1.2: version "4.4.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.2.tgz#8810a9821a9d6d52cb2f57d326d6ce7c3dfe741d" @@ -4263,6 +4275,13 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-svg-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.0.1.tgz#6f729ad6b70bb4ca4eff2fe4b107489efe1d56fe" + integrity sha1-b3Ka1rcLtMpO/y/ksQdInv4dVv4= + dependencies: + svg-arc-to-cubic-bezier "^3.0.0" + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -4592,6 +4611,11 @@ parse-node-version@^1.0.0: resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== +parse-svg-path@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb" + integrity sha1-en7A0esG+lMlx9PgCbhZoJtdSes= + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -4912,16 +4936,21 @@ react-native-fs@^2.14.1: base-64 "^0.1.0" utf8 "^2.1.1" -react-native-gesture-handler@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.5.3.tgz#191b44701fab7ba54c27a2438cb5eaa252666e66" - integrity sha512-y2/jw0uHAQtEPR02PHAah6tdMymrVtZFoHqjlEWdhK807w2sgU5CySYINK/nOTczd+zB4GMX+9euA3VfbGJ5aA== +react-native-gesture-handler@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.6.0.tgz#e9a4e1d0c7ac21eb0d6b6ec013e73f9c0c33a629" + integrity sha512-KulGCWKTxa6xBpPP4LWEPmmLqBqOe2jbtdlILOVF/dR4EgImiaBVrKdOHeRMyMzJOYAWxs5uDZsyA8hgSsm+lw== dependencies: - hammerjs "^2.0.8" + "@egjs/hammerjs" "^2.0.17" hoist-non-react-statics "^2.3.1" invariant "^2.2.4" prop-types "^15.7.2" +react-native-haptic-feedback@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/react-native-haptic-feedback/-/react-native-haptic-feedback-1.9.0.tgz#7d62c54536f04dd5d8f1c2bb8ee444009f2294b9" + integrity sha512-tIRbq8k7HK9AoyvXrOHUEFmJd65ZAh1HP9mDyD/gDisG1ApY4Im9UKn0q0of9z7s8AJY3sZA9GMuSKdSBGdKKQ== + react-native-image-crop-picker@^0.25.0: version "0.25.3" resolved "https://registry.yarnpkg.com/react-native-image-crop-picker/-/react-native-image-crop-picker-0.25.3.tgz#46ee28b4a0a187240e388bd28a44cf8c274caec6" @@ -4958,6 +4987,16 @@ react-native-reanimated@^1.7.0: resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.7.0.tgz#896db2576552ac59d288a1f6c7f00afc171f240c" integrity sha512-FQWSqP605eQVJumuK2HpR+7heF0ZI+qfy4jNguv3Xv8nPFHeIgZaRTXHCEQL2AcuSIj50zy8jGJf5l134QMQWQ== +react-native-redash@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/react-native-redash/-/react-native-redash-10.0.1.tgz#ffcc554e407b0382635ab1370c9c52b1706d8af1" + integrity sha512-oXmYqr6NM3I5FTGpG5Yt4HkTafoSCjgy63nTSSGvQv3IUnHhUjHge7v+boUd8boZWkor96pMwNsb5pKREGDacQ== + dependencies: + abs-svg-path "^0.1.1" + normalize-svg-path "^1.0.1" + parse-svg-path "^0.1.2" + use-memo-one "^1.1.1" + react-native-safe-area-context@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-0.7.3.tgz#ad6bd4abbabe195332c53810e4ce5851eb21aa2a" @@ -5830,6 +5869,11 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +svg-arc-to-cubic-bezier@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6" + integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g== + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -6090,6 +6134,11 @@ url-set-query@^1.0.0: resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= +use-memo-one@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" + integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== + use-subscription@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.3.0.tgz#3df13a798e826c8d462899423293289a3362e4e6" diff --git a/nix/mobile/android/maven-and-npm-deps/maven/maven-inputs.txt b/nix/mobile/android/maven-and-npm-deps/maven/maven-inputs.txt index 7c592857c5..c250b07511 100644 --- a/nix/mobile/android/maven-and-npm-deps/maven/maven-inputs.txt +++ b/nix/mobile/android/maven-and-npm-deps/maven/maven-inputs.txt @@ -66,33 +66,40 @@ https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedpa https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0 https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0 https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.0/viewpager2-1.0.0 +https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.0/baseLibrary-3.0.0 https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.1/baseLibrary-3.0.1 https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.2.1/baseLibrary-3.2.1 https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.3.1/baseLibrary-3.3.1 https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.4.1/baseLibrary-3.4.1 +https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.0/compilerCommon-3.0.0 https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.1/compilerCommon-3.0.1 https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.2.1/crash-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.3.1/crash-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.4.1/crash-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.0/protos-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.1/protos-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.2.1/protos-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.3.1/protos-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.4.1/protos-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.0/shared-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.1/shared-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.2.1/shared-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.3.1/shared-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.4.1/shared-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.0/tracker-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.1/tracker-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.2.1/tracker-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.3.1/tracker-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.4.1/tracker-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.0/annotations-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.1/annotations-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.2.1/annotations-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.3.1/annotations-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.4.1/annotations-26.4.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.3.1/aapt2-proto-0.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.4.1-5326820/aapt2-3.4.1-5326820 +https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.0/apksig-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.1/apksig-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.2.1/apksig-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.3.1/apksig-3.3.1 @@ -100,14 +107,17 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.4.1/apk https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.2.1/apkzlib-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.3.1/apkzlib-3.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.4.1/apkzlib-3.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.0/builder-model-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.1/builder-model-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.2.1/builder-model-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.3.1/builder-model-3.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.4.1/builder-model-3.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.0/builder-test-api-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.1/builder-test-api-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.2.1/builder-test-api-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.3.1/builder-test-api-3.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.4.1/builder-test-api-3.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.0/builder-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.2.1/builder-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.3.1/builder-3.3.1 @@ -115,11 +125,14 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.4.1/bu https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.5.0/bundletool-0.5.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.6.0/bundletool-0.6.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.7.2/bundletool-0.7.2 +https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.0/gradle-api-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.1/gradle-api-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.2.1/gradle-api-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.3.1/gradle-api-3.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.4.1/gradle-api-3.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.0/gradle-core-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.1/gradle-core-3.0.1 +https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.0/gradle-3.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.2.1/gradle-3.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.1/gradle-3.3.1 @@ -130,50 +143,63 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifie https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-alpha10/jetifier-processor-1.0.0-alpha10 https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-beta02/jetifier-processor-1.0.0-beta02 https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-beta04/jetifier-processor-1.0.0-beta04 +https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.0.0/manifest-merger-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.0.1/manifest-merger-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.2.1/manifest-merger-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.3.1/manifest-merger-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.4.1/manifest-merger-26.4.1 https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api +https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.0/common-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.1/common-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/common/26.2.1/common-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/common/26.3.1/common-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/common/26.4.1/common-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.0/ddmlib-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.1/ddmlib-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.3.1/ddmlib-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.4.1/ddmlib-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.0/dvlib-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.1/dvlib-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.2.1/dvlib-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.3.1/dvlib-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.4.1/dvlib-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.0/intellij-core-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.1/intellij-core-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.4.1/intellij-core-26.4.1 https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.4.1/kotlin-compiler-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.0/uast-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.1/uast-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.4.1/uast-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.0/layoutlib-api-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.1/layoutlib-api-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.2.1/layoutlib-api-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.3.1/layoutlib-api-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.4.1/layoutlib-api-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.0/lint-api-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.1/lint-api-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.4.1/lint-api-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.0/lint-checks-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.1/lint-checks-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.4.1/lint-checks-26.4.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.2.1/lint-gradle-api-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.3.1/lint-gradle-api-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.4.1/lint-gradle-api-26.4.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.4.1/lint-gradle-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.0/lint-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.1/lint-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.4.1/lint-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.0/repository-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.1/repository-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.2.1/repository-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.3.1/repository-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.4.1/repository-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.0/sdk-common-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.2.1/sdk-common-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.3.1/sdk-common-26.3.1 https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.4.1/sdk-common-26.4.1 +https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.0/sdklib-26.0.0 https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.1/sdklib-26.0.1 https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.2.1/sdklib-26.2.1 https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.3.1/sdklib-26.3.1 diff --git a/nix/mobile/android/maven-and-npm-deps/maven/maven-sources.nix b/nix/mobile/android/maven-and-npm-deps/maven/maven-sources.nix index 623480b848..fb2447329d 100644 --- a/nix/mobile/android/maven-and-npm-deps/maven/maven-sources.nix +++ b/nix/mobile/android/maven-and-npm-deps/maven/maven-sources.nix @@ -1040,6 +1040,21 @@ in { sha256 = "1bvm08rj02f9lzz5mf3rki6ybknjb1z2iilnh7a7q96cshqh0p79"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.0/baseLibrary-3.0.0" = + { + host = repositories.google; + path = + "com/android/databinding/baseLibrary/3.0.0/baseLibrary-3.0.0"; + type = "jar"; + pom = { + sha1 = "4a8ee25298c652798f2bd8a1d1aab5e943b9d601"; + sha256 = "150bmgklpfinmsrlcg9s426pg9vs9szl1xdhz9vjmfdf6q2jpq1g"; + }; + jar = { + sha1 = "223fbb31236b0714328c415c1475fc8f55a4416e"; + sha256 = "18j8j2mlzg1crqk31529y8qgx0bdhr98bf8vfq6rsvv3rn49f7rf"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.1/baseLibrary-3.0.1" = { host = repositories.google; @@ -1100,6 +1115,21 @@ in { sha256 = "0wp2m15sm187swbknkgfl92kdz9sjzhjayrv6nihz11yv324vf5h"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.0/compilerCommon-3.0.0" = + { + host = repositories.google; + path = + "com/android/databinding/compilerCommon/3.0.0/compilerCommon-3.0.0"; + type = "jar"; + pom = { + sha1 = "6d366470bcc2b81c66400a9c69bcade266cb83aa"; + sha256 = "04591ic395xxkrvnazik9hfsavh461r2fwsfjv4mjd0riwdmz5kv"; + }; + jar = { + sha1 = "243ebf26597dca96c60681106157e27f0762edf9"; + sha256 = "1bpvsq8jr4hpwa771mha0mx8v9fbn00k9bs7hhizb47phfdxdpg3"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.1/compilerCommon-3.0.1" = { host = repositories.google; @@ -1175,6 +1205,21 @@ in { sha256 = "1nqlhwd9vqi3qgb7s54prn2fx0ddcckzqn63l3a3mjjb67d9j1dc"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.0/protos-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/analytics-library/protos/26.0.0/protos-26.0.0"; + type = "jar"; + pom = { + sha1 = "04fc6ffa9c1e43cbd58c62d81c55a55da5baf80c"; + sha256 = "1sw6pjch8qqhydwqmwwb84cwxmxrbb04x2bj5q0igg98rm2b83vc"; + }; + jar = { + sha1 = "9700759196d267fc7cf3c85806c157050ea37dc9"; + sha256 = "1c5dj1iygs8mv09qi6djwsb5ywsxb56yacpfg7k8pvrjx3ayncj2"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.1/protos-26.0.1" = { host = repositories.google; @@ -1235,6 +1280,21 @@ in { sha256 = "0d87m41ckp0163bpxsc562xc86raqjc872yjjiwby9vxjbx73y5j"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.0/shared-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/analytics-library/shared/26.0.0/shared-26.0.0"; + type = "jar"; + pom = { + sha1 = "c41a448d5cd94b349b12a4ca13005cb2470181be"; + sha256 = "0cqymxirzrwpnjwnkagfgf9xx8wyf3w73wj8hs5dmyaznjwds02z"; + }; + jar = { + sha1 = "bf1943bf2ff33b50f8f18e25353cd82d70ab24ba"; + sha256 = "0i3pr82km4pm22fdhw7nyr0cvwp92jnw9wvi6s38frlc2cj40ac9"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.1/shared-26.0.1" = { host = repositories.google; @@ -1295,6 +1355,21 @@ in { sha256 = "00h7ybbbin5639vmpq7nb6660mji2px1h4hmshc12wgnbcpb0s11"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.0/tracker-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/analytics-library/tracker/26.0.0/tracker-26.0.0"; + type = "jar"; + pom = { + sha1 = "70bbb640b9c8d187263a03fbf9858fc638c2c11b"; + sha256 = "17id91rl0rg2xvvglqllrldjl7yxbcz4s8qwpw8zqp4vqf2mc9x9"; + }; + jar = { + sha1 = "f75df0e15d6db4ed1ba42e9d22bde29868db3f0f"; + sha256 = "1cigmc4s4hav70g7ly8q0ml3awnqaja20xvrv6clrgcppikl49m6"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.1/tracker-26.0.1" = { host = repositories.google; @@ -1355,6 +1430,21 @@ in { sha256 = "081w2pzq4x2v18a5nbanrr5alnrapdigd7q23w8j4kgq5ir7yb4p"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.0/annotations-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/annotations/26.0.0/annotations-26.0.0"; + type = "jar"; + pom = { + sha1 = "36a4991057a688236cca1b1b55e575bfa979a4e4"; + sha256 = "14n97s6yw56cyb4xy6mxlr3xah65ayd8wydp7fxh8sg9320172lh"; + }; + jar = { + sha1 = "fc587b91f1d2390a90d0b02a3e41a0bed140e9c1"; + sha256 = "0iyqms07qadihcnha4li2gk88x2504w7xvdmichjqc52hsq47kik"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.1/annotations-26.0.1" = { host = repositories.google; @@ -1463,6 +1553,21 @@ in { sha256 = "08448m7if0fjmq0a7d5cq3ghndmphm28v1n5q6r5ynci93g3fg58"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.0/apksig-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/apksig/3.0.0/apksig-3.0.0"; + type = "jar"; + pom = { + sha1 = "23c8d16e6aac3ab71c39e37e860a8ab8cff0979c"; + sha256 = "1ha5d3bh36q4kj0gh1qmg9ncqwbv2n209mfbfnmwxw4gnj4l9a18"; + }; + jar = { + sha1 = "21465a36db10551cfcfd8ad39bb496511f78354c"; + sha256 = "11jc8f5xb3i0mhr2r2sbrajlh26xkgrz4vs5l09sxi77y2iqqz3q"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.1/apksig-3.0.1" = { host = repositories.google; @@ -1568,6 +1673,21 @@ in { sha256 = "0k1qiqk4yj07lmwli1rdn0y3cymlr8xnp9nrv3sqfgvfr1fnbgf0"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.0/builder-model-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/builder-model/3.0.0/builder-model-3.0.0"; + type = "jar"; + pom = { + sha1 = "770e663a3729b0665f5b73bd2fbd8a196e2cb9ab"; + sha256 = "0sv1v487fs5z5m131rpmdviqrysh7xdkwj3jga673wdd3phzm6x4"; + }; + jar = { + sha1 = "a86b254415fded5297e1d849fa1884dfdf62ff42"; + sha256 = "1fii28knmbd3jxvmp0b06zv403vkwv3pap4s5i180cwc0wl7789p"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.1/builder-model-3.0.1" = { host = repositories.google; @@ -1628,6 +1748,21 @@ in { sha256 = "1wb2yv4y4qk3g0g5rymzqrv6ngn7xzc4a9qf9lxkg451xxxxlkrp"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.0/builder-test-api-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/builder-test-api/3.0.0/builder-test-api-3.0.0"; + type = "jar"; + pom = { + sha1 = "a73df0f8a961d459e2b726b41867ffd9dd624952"; + sha256 = "16vrjm0czd9alch5mghmfp4aldp5xnvfl1pq3xh5hr9x5rvmdc3b"; + }; + jar = { + sha1 = "9bb354af21d8754ecc9c1c07f80bd85e3a76695f"; + sha256 = "1kalacq30ydcivyp2pwql59j2xckifv1c6f517ll15pjdxskdnzb"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.1/builder-test-api-3.0.1" = { host = repositories.google; @@ -1688,6 +1823,21 @@ in { sha256 = "093wfl4adllz3gbawakd6nh4ar192k7z1hx2xniff6jdlx9z63l6"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.0/builder-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/builder/3.0.0/builder-3.0.0"; + type = "jar"; + pom = { + sha1 = "8b498ff308f743e8689f528efa56837ac5fdbde6"; + sha256 = "0a4pal1w33v90cfpd72brb2chqfqmpqs52klg9xigwrkbyjgkp4b"; + }; + jar = { + sha1 = "36884960f350cb29f1c2c93107f4fa27f4e7444e"; + sha256 = "07pwrxv5igr4v1886rjdfrrqx4sa5b64yz0p41450qywzm2n880n"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1" = { host = repositories.google; @@ -1793,6 +1943,21 @@ in { sha256 = "153qkzflw3s2k9dyg982v4p0pnrisd5bp47shcak9qy98i6b62s2"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.0/gradle-api-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/gradle-api/3.0.0/gradle-api-3.0.0"; + type = "jar"; + pom = { + sha1 = "ac9fda7c14cac6f32f55f5083eb4f05c686de023"; + sha256 = "1f7im02c138frynchbkndrw6lrbc0pyh6vmkx7a99g4jplb1lgmn"; + }; + jar = { + sha1 = "e98ade5c308a99980d2a61f4ce1d9286df0105e3"; + sha256 = "1cslx6qiffrq292ka2390yk4jypd3d5f3qx6kwcrr5k6cg1idw24"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.1/gradle-api-3.0.1" = { host = repositories.google; @@ -1853,6 +2018,21 @@ in { sha256 = "10w0jbigcckap9kpkj7pl47qb3yxlxlp2ybcrryzrlldj6ysag0k"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.0/gradle-core-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/gradle-core/3.0.0/gradle-core-3.0.0"; + type = "jar"; + pom = { + sha1 = "92aba105dcd9d8fb6e42dbc959affdbcfe5cc136"; + sha256 = "1h4a1gfr432kxs6r3gpx7hpc4v6xrd4f48rahizmrix2dw2405i5"; + }; + jar = { + sha1 = "b4b02fa623c5a618e68478d9a4a67e1e87c023c6"; + sha256 = "1z6yh3aviy8hvrcihz1xnsggrzjp6yd4wipdw03l1l4f2w378x2p"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.1/gradle-core-3.0.1" = { host = repositories.google; @@ -1868,6 +2048,21 @@ in { sha256 = "09w0jxh7vkmgy6ing49l8xpyp7jrcz56g2j5sfsyipacdyahyr0a"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.0/gradle-3.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/gradle/3.0.0/gradle-3.0.0"; + type = "jar"; + pom = { + sha1 = "efe9a4c336629561a04b7eafd895054908807cdb"; + sha256 = "07qm0bfvivx0h2ww7z5sdws78j4gkn75x2hy2mhbhhwq9k20nf4d"; + }; + jar = { + sha1 = "2356ee8e98b68c53dafc28898e7034080e5c91aa"; + sha256 = "00ivxwq5rgrx7wfkr8g5z1n21vap9r2vaid9djdqfr9f3jygq8mb"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1" = { host = repositories.google; @@ -2018,6 +2213,21 @@ in { sha256 = "1ysf9z2k3mqyv4mm74pphal5n73xya0axn88i6331jvcc3kq3m0x"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.0.0/manifest-merger-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/build/manifest-merger/26.0.0/manifest-merger-26.0.0"; + type = "jar"; + pom = { + sha1 = "2f38803314752b67d1f3ee093b400bb6c5f3b0ee"; + sha256 = "1s8gfdlhb08cg7g5lxibh9m9pkanyffv4qih488pkn2036pf1256"; + }; + jar = { + sha1 = "f625bcad5f5dc0cb373e6b62595d64a552a8d073"; + sha256 = "02bmi5s1vd8n6a38fifhsva0ijqs0c6100k72cl8aa2fcc67dmf9"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.0.1/manifest-merger-26.0.1" = { host = repositories.google; @@ -2093,6 +2303,21 @@ in { sha256 = "0h2p4b7900j3girbkayq6b92pfw283rqnn74p4nlqlqwbv8a7r2d"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.0/common-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/common/26.0.0/common-26.0.0"; + type = "jar"; + pom = { + sha1 = "f479fa906584db620744108a4a94fe86cbeaad1b"; + sha256 = "1xklng15h3pfafldlx36zm1w2y7a78nlxi7dxfhfzgqyxxv0bdr6"; + }; + jar = { + sha1 = "a75e1cbf30e55dd23f73801c32cd565b6eb5fb3f"; + sha256 = "0701n8yyfya6f931vv5jg5y4fafkhvrciv6pdbj3y3gp0hvmlmi8"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.1/common-26.0.1" = { host = repositories.google; @@ -2153,6 +2378,21 @@ in { sha256 = "0kb17bjrlccb7w0yi381baz3l45bvkzsphvy6bmm68075q99byfg"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.0/ddmlib-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/ddms/ddmlib/26.0.0/ddmlib-26.0.0"; + type = "jar"; + pom = { + sha1 = "a8884215b3a37eb3e9a4872b80cd81b58c03e235"; + sha256 = "125hxfgm6aczic9w6xh1ri13fa1il0rn4dn6727x987wzcp9bj55"; + }; + jar = { + sha1 = "79daeff3eab3fc4ff963f5717392f1f2476ed788"; + sha256 = "18smk8glkclb77rrryz416lksswlbvvd357d34di5ggqd0xap7q5"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.1/ddmlib-26.0.1" = { host = repositories.google; @@ -2213,6 +2453,21 @@ in { sha256 = "0xc8b1vphh9snblnf5xw0v63x42661b5nix3p36rlg0pplsiaxdj"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.0/dvlib-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/dvlib/26.0.0/dvlib-26.0.0"; + type = "jar"; + pom = { + sha1 = "ac0dededfd324bb533f2635fee7778f38874c025"; + sha256 = "0na1h2kg479ikcxvdrqyxppgsxns4qjh11jlyj6grlnwqcfsv1z2"; + }; + jar = { + sha1 = "50d8b18ccc5233c4e7ca4c98f9708d44f80ace82"; + sha256 = "1i37rn56dw92ldsw4qq0la8xjz6hc355675c792grpm2r1gl867m"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.1/dvlib-26.0.1" = { host = repositories.google; @@ -2273,6 +2528,21 @@ in { sha256 = "0jnpy9gnapf74s907gs6l6xk65lbbjn2kzz5sggmvp00gdgp9962"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.0/intellij-core-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/external/com-intellij/intellij-core/26.0.0/intellij-core-26.0.0"; + type = "jar"; + pom = { + sha1 = "ae746b3669aec380b72026deb74b4b0f82cce484"; + sha256 = "1c3m5sd0pagay1pp1ni0s86q1gz9y5dyc9c6lyw1m211dknrgi7w"; + }; + jar = { + sha1 = "47396aa1fead8512c246fdf4698552c1f33b1710"; + sha256 = "1ysyx3hi0m98w9a59jw96n5fkvx9g2zwbl3839qzg1fwrmc8194c"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.1/intellij-core-26.0.1" = { host = repositories.google; @@ -2318,6 +2588,21 @@ in { sha256 = "15zh9w56xs6mqz9drxjk6h1518b1x1v1hgpkfpdi6b6sdb85lqbj"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.0/uast-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/external/org-jetbrains/uast/26.0.0/uast-26.0.0"; + type = "jar"; + pom = { + sha1 = "a905919feddc68e5ebc6f0cddeaf6a2fff8b5195"; + sha256 = "0q97i1gj5g7f3vfkldn8dyf3f6x962x3ch4gdv7irgh6p9mcs5lb"; + }; + jar = { + sha1 = "86234f897e27e97c4aebe5686fa0e21139a1fc4e"; + sha256 = "0wjbfnvhq1himxjj389rlxqr4cqa9ahfkjy74cad1b00mg8yjhgv"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.1/uast-26.0.1" = { host = repositories.google; @@ -2348,6 +2633,21 @@ in { sha256 = "0d5c01kxqdinjgy7a42g4rc5nvfcqsf4y2gcxd5xfsbk13m0jzww"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.0/layoutlib-api-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/layoutlib/layoutlib-api/26.0.0/layoutlib-api-26.0.0"; + type = "jar"; + pom = { + sha1 = "d96e1f06822faea2caceaa5ff82a0f9ed344c07b"; + sha256 = "0d9ya2bkidfl4i8nwmvzx3vvysw2fpa55m559jdgcy6mpblcngm5"; + }; + jar = { + sha1 = "2e64aac3c6a6f201df4b7e1c0bd452d8839fb47b"; + sha256 = "0ayxvqvr18pd7nygrkwyws6vnhscfv2g1a445zqj5zjdgw7rw3id"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.1/layoutlib-api-26.0.1" = { host = repositories.google; @@ -2408,6 +2708,21 @@ in { sha256 = "1l1n8l74f391nkppw482rb2lqnpygwsil1p2xhb4w9gwrrc6ss45"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.0/lint-api-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/lint/lint-api/26.0.0/lint-api-26.0.0"; + type = "jar"; + pom = { + sha1 = "ae56cef8b3f46c122554ad6befbb0dc9ff359992"; + sha256 = "0gqdixv8z2add5n30y7hq7hhrchqcmi66jffmdlpadbvn0gsmmwl"; + }; + jar = { + sha1 = "ba8981e318f342456c77a2420b9d9f0967eaf138"; + sha256 = "0yy2fw3ircsz38imnwwvhh6si4cc9v3w1a6s2zwacgsvniysvsil"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.1/lint-api-26.0.1" = { host = repositories.google; @@ -2438,6 +2753,21 @@ in { sha256 = "0f9qx4fy8cnxd5yd5jglkfznhglcnm8lf3afjvyccick7x5d368z"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.0/lint-checks-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/lint/lint-checks/26.0.0/lint-checks-26.0.0"; + type = "jar"; + pom = { + sha1 = "02c59a652ac555341479025c928f351201794868"; + sha256 = "1cvaagg9s0lcyla4fhay31nflcjb6wj6n2qwysnpwiqd4wxba705"; + }; + jar = { + sha1 = "fe04d508baa247a0d32cafbfd158ca439f875dbd"; + sha256 = "0gq4h53qx2iy9a343pknbr1zj83k4qs2wrh8gzvl8d10chqjwxd0"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.1/lint-checks-26.0.1" = { host = repositories.google; @@ -2528,6 +2858,21 @@ in { sha256 = "099vnvpqqmlnl3i3zpxg19gls9rfsxr059yw8kckw3m5xww3vm8q"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.0/lint-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/lint/lint/26.0.0/lint-26.0.0"; + type = "jar"; + pom = { + sha1 = "c3b178af06d72d16de1b0e6546026c6ef80d6f09"; + sha256 = "1n0z0ky9v8qg03k0s7rahb4zi9q6rpl3jr91yzwmv5lp1yfq3h94"; + }; + jar = { + sha1 = "6c58c8b0066addaaffd174b78d701948b819cf23"; + sha256 = "07ywh5pg74sw1p60g8wwcdv82azd56h11161r4dzalz300l9g6ll"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.1/lint-26.0.1" = { host = repositories.google; @@ -2558,6 +2903,21 @@ in { sha256 = "1g933660i0yd45bgjw6yn1rqp2svfzbjgcpcbdb9bl4sd452mwn4"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.0/repository-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/repository/26.0.0/repository-26.0.0"; + type = "jar"; + pom = { + sha1 = "bfc1e8e4da7822065f06e8e71f56137535842668"; + sha256 = "0z8c67369rch3z1mc52ipfk85wsj2kcwlhk4s3jv1pmf31wzyczd"; + }; + jar = { + sha1 = "7ad3d113c50642163badf3b8d890c6b41b1c6238"; + sha256 = "0582xlsbbnwl6dzj67yjjjnh5ysiva5pbd10szfvdi4gcnkvn26q"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.1/repository-26.0.1" = { host = repositories.google; @@ -2618,6 +2978,21 @@ in { sha256 = "1vmqkgh3vfhyj6ji74hiccvsp5vai8k2yqn9vp767v7mnk72mj1l"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.0/sdk-common-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/sdk-common/26.0.0/sdk-common-26.0.0"; + type = "jar"; + pom = { + sha1 = "8fd56dc612f1f282fcddf1d2c5b4a8a2c1878bd7"; + sha256 = "0915xd566szrd7zkmmq3f4swgx9s55qa9ys31dqpfvbqrpb361ap"; + }; + jar = { + sha1 = "3cf21b0652068a57852663610e8c7f0a044dc700"; + sha256 = "1f33bn2f8y83s02nzmw124lm217bj82kp8m516r69z1k3wz9nb67"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1" = { host = repositories.google; @@ -2678,6 +3053,21 @@ in { sha256 = "0yq803xfl7pbqv8qndr54mwqa37qdgvph1pkr0c0lmczjgf70sjj"; }; }; + "https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.0/sdklib-26.0.0" = + { + host = repositories.google; + path = + "com/android/tools/sdklib/26.0.0/sdklib-26.0.0"; + type = "jar"; + pom = { + sha1 = "4f9acbbb89224b1731deb41d5add787c304e2097"; + sha256 = "1zmpmzaqh4124kh4py51s12ddgpw5dx35spiq1lxv8946kn4m62v"; + }; + jar = { + sha1 = "5bc6118beed3c516fba2057e5feea3af932c1e22"; + sha256 = "1jyh2zzy1mnp3692c6v2lahm75wv2d87iwm9bq2rnsip3pjhzhwv"; + }; + }; "https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.1/sdklib-26.0.1" = { host = repositories.google; diff --git a/react-native/src/mobile/status_im/react_native/js_dependencies.cljs b/react-native/src/mobile/status_im/react_native/js_dependencies.cljs index 95cccea835..c68204dd6f 100644 --- a/react-native/src/mobile/status_im/react_native/js_dependencies.cljs +++ b/react-native/src/mobile/status_im/react_native/js_dependencies.cljs @@ -44,4 +44,8 @@ (def react-navigation-stack (js/require "@react-navigation/stack")) (def react-navigation-bottom-tabs (js/require "@react-navigation/bottom-tabs")) -(def react-native-gesture-handler (js/require "react-native-gesture-handler")) \ No newline at end of file +(def react-native-haptic-feedback (js/require "react-native-haptic-feedback")) + +(def react-native-reanimated (js/require "react-native-reanimated")) +(def react-native-redash (js/require "react-native-redash")) +(def react-native-gesture-handler (js/require "react-native-gesture-handler")) diff --git a/src/status_im/ui/components/button/haptic.cljs b/src/status_im/ui/components/button/haptic.cljs new file mode 100644 index 0000000000..fe13897f59 --- /dev/null +++ b/src/status_im/ui/components/button/haptic.cljs @@ -0,0 +1,27 @@ +(ns status-im.ui.components.button.haptic + (:require [oops.core :refer [oget ocall]] + [status-im.react-native.js-dependencies :as js-deps])) + +(def haptic-feedback (oget js-deps/react-native-haptic-feedback "default")) + +(def haptic-methods + {:selection "selection" + :impacet-light "impactLight" + :impact-medium "impactMedium" + :impact-heavy "impactHeavy" + :notification-success "notificationSuccess" + :notification-warning "notificationWarning" + :notification-error "notificationError" + :clock-tick "clockTick" ; (Android only) + :context-click "contextClick" ; (Android only) + :keyboard-press "keyboardPress" ; (Android only) + :keyboard-release "keyboardRelease" ; (Android only) + :keyboard-tap "keyboardTap" ; (Android only) + :long-press "longPress" ; (Android only) + :text-handle-move "textHandleMove" ; (Android only) + :virtual-key "virtualKey" ; (Android only) + :virtual-key-release "virtualKeyRelease" ; (Android only) +}) + +(defn trigger [method] + (ocall haptic-feedback "trigger" (get haptic-methods method))) diff --git a/src/status_im/ui/components/reanimated.cljs b/src/status_im/ui/components/reanimated.cljs new file mode 100644 index 0000000000..f839a6f08d --- /dev/null +++ b/src/status_im/ui/components/reanimated.cljs @@ -0,0 +1,159 @@ +(ns status-im.ui.components.reanimated + (:refer-clojure :exclude [set]) + (:require [reagent.core :as reagent] + [oops.core :refer [oget ocall]] + [status-im.react-native.js-dependencies :as js-deps])) + +(def animated (oget js-deps/react-native-reanimated "default")) +(def createAnimatedComponent (oget animated "createAnimatedComponent")) + +(def view (reagent/adapt-react-class (oget animated "View"))) +(def text (reagent/adapt-react-class (oget animated "Text"))) +(def scroll-view (reagent/adapt-react-class (oget animated "ScrollView"))) +(def code (reagent/adapt-react-class (oget animated "Code"))) + +(def clock-running (oget js-deps/react-native-reanimated "clockRunning")) +(def Easing (oget js-deps/react-native-reanimated "Easing")) + +(def eq (oget animated "eq")) +(def neq (oget animated "neq")) +(def greater-or-eq (oget animated "greaterOrEq")) +(def not* (oget animated "not")) +(def or* (oget animated "or")) +(def and* (oget animated "and")) + +(def add (oget animated "add")) +(def sub (oget animated "sub")) +(def multiply (oget animated "multiply")) +(def abs (oget animated "abs")) + +(def min* (oget animated "min")) +(def max* (oget animated "max")) + +(def set (oget animated "set")) +(def start-clock (oget animated "startClock")) +(def stop-clock (oget animated "stopClock")) +(def bezier (oget Easing "bezier")) +(def linear (oget Easing "linear")) + +(defn set-value [anim val] + (ocall anim "setValue" val)) + +(def Value (oget animated "Value")) + +(defn value [x] + (new Value x)) + +(def Clock (oget animated "Clock")) + +(defn clock [] + (new Clock)) + +(def debug (oget animated "debug")) +(def log (oget animated "log")) + +(defn event + ([config] + (event config {})) + ([config options] + (ocall animated "event" (clj->js config) (clj->js options)))) + +(defn on-change [state node] + (ocall animated "onChange" + state + (if (vector? node) + (clj->js node) + node))) + +(defn cond* + ([condition node] + (ocall animated "cond" + condition + (if (vector? node) + (clj->js node) + node))) + ([condition if-node else-node] + (ocall animated "cond" + condition + (if (vector? if-node) + (clj->js if-node) + if-node) + (if (vector? else-node) + (clj->js else-node) + else-node)))) + +(defn block [opts] + (ocall animated "block" (clj->js opts))) + +(defn interpolate [anim-value config] + (ocall anim-value "interpolate" (clj->js config))) + +(defn call* [args callback] + (ocall animated "call" (clj->js args) callback)) + +(defn timing [clock-value opts config] + (ocall animated "timing" clock-value + (clj->js opts) (clj->js config))) + +(defn spring [clock-value opts config] + (ocall animated "spring" clock-value + (clj->js opts) (clj->js config))) + +(def extrapolate {:clamp (oget animated "Extrapolate" "CLAMP")}) + +;; Gesture handler + +(def tap-gesture-handler + (reagent/adapt-react-class + (oget js-deps/react-native-gesture-handler "TapGestureHandler"))) + +(def pan-gesture-handler + (reagent/adapt-react-class + (oget js-deps/react-native-gesture-handler "PanGestureHandler"))) + +(def long-press-gesture-handler + (reagent/adapt-react-class + (oget js-deps/react-native-gesture-handler "LongPressGestureHandler"))) + +(def pure-native-button (oget js-deps/react-native-gesture-handler "PureNativeButton")) + +(def touchable-without-feedback-class + (oget js-deps/react-native-gesture-handler "TouchableWithoutFeedback")) + +(def createNativeWrapper + (oget js-deps/react-native-gesture-handler "createNativeWrapper")) + +(def touchable-without-feedback + (reagent/adapt-react-class touchable-without-feedback-class)) + +(def animated-raw-button + (reagent/adapt-react-class + (createNativeWrapper + (createAnimatedComponent touchable-without-feedback-class)))) + +(def state (oget js-deps/react-native-gesture-handler "State")) + +(def states {:began (oget state "BEGAN") + :active (oget state "ACTIVE") + :cancelled (oget state "CANCELLED") + :end (oget state "END") + :failed (oget state "FAILED") + :undetermined (oget state "UNDETERMINED")}) + +;; utilities + +(def redash js-deps/react-native-redash) + +(def clamp (oget redash "clamp")) + +(defn with-spring [config] + (ocall redash "withSpring" (clj->js config))) + +(defn with-timing [val config] + (ocall redash "withTimingTransition" val (clj->js config))) + +(defn re-timing [config] + (ocall redash "timing" (clj->js config))) + +(defn on-scroll [opts] + (ocall redash "onScroll" (clj->js opts))) diff --git a/src/status_im/ui/components/tabbar/core.cljs b/src/status_im/ui/components/tabbar/core.cljs index 18864ff299..4aa010c325 100644 --- a/src/status_im/ui/components/tabbar/core.cljs +++ b/src/status_im/ui/components/tabbar/core.cljs @@ -1,6 +1,7 @@ (ns status-im.ui.components.tabbar.core (:require [status-im.ui.components.animation :as animation] + [status-im.ui.components.reanimated :as reanimated] [status-im.ui.components.tabbar.styles :as tabs.styles] [reagent.core :as reagent] [oops.core :refer [oget]] @@ -68,7 +69,7 @@ accessibility-label count-subscription]}] (let [count (when count-subscription @(re-frame/subscribe [count-subscription]))] [react/view {:style tabs.styles/touchable-container} - [react/touchable-without-feedback-gesture + [reanimated/touchable-without-feedback {:style {:height "100%" :width "100%"} :on-press on-press diff --git a/src/status_im/ui/components/topbar.cljs b/src/status_im/ui/components/topbar.cljs index 3c69a6071c..df46c21928 100644 --- a/src/status_im/ui/components/topbar.cljs +++ b/src/status_im/ui/components/topbar.cljs @@ -33,6 +33,7 @@ [react/text {:style {:color colors/blue}} (utils.label/stringify label)])]])) +;; TODO(Ferossgp): Tobbar should handle safe area (defn topbar [_] (let [title-padding (reagent/atom 16)] (fn [& [{:keys [title navigation accessories show-border? modal? content]}]] diff --git a/src/status_im/ui/screens/routing/wallet_stack.cljs b/src/status_im/ui/screens/routing/wallet_stack.cljs index 51e5079dbe..5317d7df40 100644 --- a/src/status_im/ui/screens/routing/wallet_stack.cljs +++ b/src/status_im/ui/screens/routing/wallet_stack.cljs @@ -19,6 +19,7 @@ [stack {:initial-route-name :wallet :header-mode :none} [{:name :wallet + :insets {:top false} :style {:padding-bottom tabbar.styles/tabs-diff} :component wallet.accounts/accounts-overview} {:name :wallet-account diff --git a/src/status_im/ui/screens/wallet/accounts/styles.cljs b/src/status_im/ui/screens/wallet/accounts/styles.cljs index e417a05dc8..c07af8eb71 100644 --- a/src/status_im/ui/screens/wallet/accounts/styles.cljs +++ b/src/status_im/ui/screens/wallet/accounts/styles.cljs @@ -1,5 +1,72 @@ (ns status-im.ui.screens.wallet.accounts.styles - (:require [status-im.ui.components.colors :as colors])) + (:require [status-im.ui.components.colors :as colors] + [status-im.ui.components.reanimated :as reanimated] + [status-im.utils.platform :as platform])) + +(def ^:const tabbar-height 56) +;; TODO(Ferossgp): get layout size of total-value +(def ^:const value-height (+ 40 22 8)) +(def ^:const scroll-offset value-height) +(def ^:const minimized-value-line-height 28) + +(defn topbar [{:keys [value offset inset-top]}] + (merge + {:flex-direction :row + :padding-horizontal 8 + :background-color colors/white + :padding-top inset-top} + (when platform/android? + {:elevation (reanimated/interpolate + value + {:inputRange [0 offset] + :outputRange [0 4] + :extrapolate (:clamp reanimated/extrapolate)})}) + (when platform/ios? + {:shadow-opacity (reanimated/interpolate + value + {:inputRange [0 offset] + :outputRange [0 1] + :extrapolate (:clamp reanimated/extrapolate)}) + :shadow-radius 16 + :z-index 2 + :shadow-color (if (colors/dark?) + "rgba(0, 0, 0, 0.75)" + "rgba(0, 9, 26, 0.12)") + :shadow-offset {:width 0 :height 4}}))) + +(defn value-container [y] + {:position :absolute + :left 8 + :top 0 + :transform [{:translateY + (reanimated/interpolate + y + {:inputRange [0 scroll-offset] + :outputRange [scroll-offset + (/ (- tabbar-height + minimized-value-line-height) 2)] + :extrapolateRight (:clamp reanimated/extrapolate)})}]}) + +(defn value-text [y] + {:font-size (reanimated/interpolate + y + {:inputRange [0 scroll-offset] + :outputRange [32 20] + :extrapolate (:clamp reanimated/extrapolate)}) + :color colors/black + :font-weight "600"}) + +(defn value-helper [y] + {:opacity (reanimated/interpolate y + {:inputRange [0 scroll-offset] + :outputRange [1 0]})}) + +(defn accounts-mnemonic [y] + {:flex 1 + :justify-content :center + :opacity (reanimated/interpolate y + {:inputRange [0 scroll-offset] + :outputRange [1 0]})}) (defn card-common [] {:margin-vertical 16 diff --git a/src/status_im/ui/screens/wallet/accounts/views.cljs b/src/status_im/ui/screens/wallet/accounts/views.cljs index 69f9d2d9c2..e892d6c600 100644 --- a/src/status_im/ui/screens/wallet/accounts/views.cljs +++ b/src/status_im/ui/screens/wallet/accounts/views.cljs @@ -11,6 +11,8 @@ [status-im.wallet.utils :as wallet.utils] [reagent.core :as reagent] [re-frame.core :as re-frame] + [status-im.ui.components.reanimated :as reanimated] + [oops.core :refer [oget]] [status-im.ui.screens.wallet.accounts.sheets :as sheets] [status-im.ui.screens.wallet.accounts.styles :as styles] [status-im.utils.utils :as utils.utils])) @@ -94,17 +96,20 @@ :key-fn :name :render-fn (render-asset (:code currency) prices-loading?)}])) -(views/defview total-value [] +(views/defview total-value [{:keys [y]}] (views/letsubs [currency [:wallet/currency] portfolio-value [:portfolio-value] prices-loading? [:prices-loading?]] - [react/view {:style {:padding-horizontal 16}} - [react/view {:style {:flex-direction :row}} - (if prices-loading? - [react/small-loading-indicator] - [react/text {:style {:font-size 32 :color colors/black :font-weight "600"}} portfolio-value]) - [react/text {:style {:font-size 32 :color colors/gray :font-weight "600"}} (str " " (:code currency))]] - [react/text {:style {:color colors/gray}} (i18n/label :t/wallet-total-value)]])) + [reanimated/view {:style (styles/value-container y)} + [reanimated/text {:style (styles/value-text y)} + portfolio-value + [reanimated/text {:style {:color colors/gray}} + (str " " (:code currency))]] + [reanimated/view {:style (styles/value-helper y)} + [react/text {:style {:color colors/gray + :font-size 15 + :line-height 22}} + (i18n/label :t/wallet-total-value)]]])) (defn- request-camera-permissions [] (let [options {:handler :wallet.send/qr-scanner-result}] @@ -120,39 +125,57 @@ (i18n/label :t/camera-access-error))) 50)}]))) -(views/defview accounts-options [] +(views/defview accounts-options [{:keys [y]}] (views/letsubs [{:keys [mnemonic]} [:multiaccount] empty-balances? [:empty-balances?]] - [react/view {:flex-direction :row :align-items :center} - [react/view {:flex 1 :padding-left 16} - (when (and mnemonic - (not empty-balances?)) - [react/touchable-highlight - {:on-press #(re-frame/dispatch [:navigate-to :backup-seed])} - [react/view {:flex-direction :row :align-items :center} - [react/view {:width 14 :height 14 :background-color colors/gray :border-radius 7 :align-items :center - :justify-content :center :margin-right 9} - [react/text {:style {:color colors/white - :font-size 13 - :font-weight "700"}} - "!"]] - [react/text {:style {:color colors/gray} - :accessibility-label :back-up-your-seed-phrase-warning} - (i18n/label :t/back-up-your-seed-phrase)]]])] - [react/touchable-highlight - {:on-press #(request-camera-permissions)} - [react/view {:height toolbar.styles/toolbar-height - :width 24 :align-items :center - :justify-content :center} - [icons/icon :main-icons/qr {:accessibility-label :accounts-qr-code}]]] - [react/touchable-highlight - {:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet - {:content (sheets/accounts-options mnemonic) - :content-height (if mnemonic 250 190)}])} - [react/view {:height toolbar.styles/toolbar-height - :width toolbar.styles/toolbar-height :align-items :center - :justify-content :center} - [icons/icon :main-icons/more {:accessibility-label :accounts-more-options}]]]])) + ;; TODO(Ferossgp): Use topbar component here + [react/safe-area-consumer + (fn [insets] + (reagent/as-element + [reanimated/view {:style (styles/topbar {:inset-top (oget insets "top") + :value y + :offset styles/scroll-offset})} + [react/view {:flex 1 + :height styles/tabbar-height + :padding-horizontal 8 + :flex-direction :row + :align-items :center} + [total-value {:y y}] + (when (and mnemonic + (not empty-balances?)) + [reanimated/view {:style (styles/accounts-mnemonic y)} + [react/touchable-highlight + {:on-press #(re-frame/dispatch [:navigate-to :backup-seed])} + [react/view {:flex-direction :row :align-items :center} + [react/view {:width 14 + :height 14 + :background-color colors/gray + :border-radius 7 + :align-items :center + :justify-content :center + :margin-right 9} + [react/text {:style {:color colors/white + :font-size 13 + :font-weight "700"}} + "!"]] + [react/text {:style {:color colors/gray} + :accessibility-label :back-up-your-seed-phrase-warning} + (i18n/label :t/back-up-your-seed-phrase)]]]])] + [react/touchable-highlight + {:on-press #(request-camera-permissions)} + [react/view {:height toolbar.styles/toolbar-height + :padding-horizontal 8 + :align-items :center + :justify-content :center} + [icons/icon :main-icons/qr {:accessibility-label :accounts-qr-code}]]] + [react/touchable-highlight + {:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet + {:content (sheets/accounts-options mnemonic)}])} + [react/view {:height toolbar.styles/toolbar-height + :padding-horizontal 8 + :align-items :center + :justify-content :center} + [icons/icon :main-icons/more {:accessibility-label :accounts-more-options}]]]]))])) (views/defview send-button [] (views/letsubs [account [:multiaccount/default-account]] @@ -175,12 +198,16 @@ [add-card]]])) (defn accounts-overview [] - [react/view {:flex 1} - [react/scroll-view - [accounts-options] - [react/view {:margin-top 8} - [total-value] - [accounts]] - [assets] - [react/view {:height 68}]] - [send-button]]) + (let [y (reanimated/value 0) + on-scroll (reanimated/on-scroll {:y y})] + (fn [] + [react/view {:flex 1} + [accounts-options {:y y}] + [reanimated/scroll-view {:on-scroll on-scroll + :style {:padding-top styles/value-height} + :scrollEventThrottle 1} + [react/view {:margin-top 8} + [accounts]] + [assets] + [react/view {:height 68}]] + [send-button]]))) diff --git a/test/cljs/status_im/react_native/js_dependencies.cljs b/test/cljs/status_im/react_native/js_dependencies.cljs index 9e0d4d7b58..7ee4e923c6 100644 --- a/test/cljs/status_im/react_native/js_dependencies.cljs +++ b/test/cljs/status_im/react_native/js_dependencies.cljs @@ -61,7 +61,9 @@ :removeEventListener identity}) (def react #js {:useCallback nil :useEffect nil - :useRef nil}) + :useRef nil + :createRef nil + :Fragment identity}) (def react-navigation-native #js {:NavigationContainer #js {} :useFocusEffect identity :CommonActions #js {} @@ -70,4 +72,55 @@ :TransitionPresets #js {:ModalPresentationIOS #js {}}}) (def react-navigation-bottom-tabs #js {:createBottomTabNavigator identity}) -(def react-native-gesture-handler #js {}) +(def react-native-haptic-feedback #js {:default #js {:trigger nil}}) + +(def react-native-reanimated #js {:default #js {:createAnimatedComponent identity + :eq nil + :greaterOrEq nil + :add nil + :sub nil + :multiply nil + :abs nil + :min nil + :max nil + :neq nil + :and nil + :or nil + :not nil + :set nil + :startClock nil + :stopClock nil + :Value nil + :Clock nil + :debug nil + :log nil + :event nil + :cond nil + :block nil + :interpolate nil + :call nil + :timing nil + :onChange nil + :View #js {} + :ScrollView #js {} + :Text #js {} + :extrapolate #js {:CLAMP nil} + :Code #js {}} + :Easing #js {:bezier nil + :linear nil} + :clockRunning nil}) +(def react-native-gesture-handler #js {:default #js {} + :State #js {:BEGAN nil + :ACTIVE nil + :CANCELLED nil + :END nil + :FAILED nil + :UNDETERMINED nil} + :PureNativeButton #js {} + :TapGestureHandler #js {} + :PanGestureHandler #js {} + :LongPressGestureHandler #js {} + :TouchableWithoutFeedback #js {} + :createNativeWrapper identity}) + +(def react-native-redash #js {:clamp nil})