diff --git a/.env.example b/.env.example
index a16758f7..287b2210 100644
--- a/.env.example
+++ b/.env.example
@@ -155,3 +155,4 @@ REACT_NATIVE_TWITTER_LINK=
REACT_NATIVE_DISCUSSION_LINK=
REACT_NATIVE_GOOGLE_CLOUD_PROJECT_ID=
+REACT_NATIVE_METADATA_CHECKING_RELEASE_DATE=
diff --git a/.eslintrc.js b/.eslintrc.js
index fe2cdd63..afc90a89 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -8,6 +8,7 @@ module.exports = {
'no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'off',
'@typescript-eslint/no-unused-vars': 'off',
+ 'react/react-in-jsx-scope': 'off',
'no-console': 0,
'unused-imports/no-unused-vars': [
'warn',
diff --git a/.gitignore b/.gitignore
index bab28d0a..8b964660 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@ web-build/
.idea/
.env
+
+/coverage/
diff --git a/App.tsx b/App.tsx
deleted file mode 100644
index 9beee754..00000000
--- a/App.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import {StatusBar} from 'expo-status-bar';
-import {StyleSheet, Text, View} from 'react-native';
-
-export default function App() {
- return (
-
- Open up App.js to start working on your app!
- TYPESCRIPT
-
-
- );
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: '#fff',
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 2aae09d7..e5461734 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -120,7 +120,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
- versionName "1.0.0"
+ versionName "2.0.0"
+ versionNameSuffix "-beta.2"
}
splits {
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index fa4d94a3..2d40f03c 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -28,13 +28,15 @@
-
-
-
-
+
+
+
+
+
+
diff --git a/android/app/src/main/assets/custom/README.md b/android/app/src/main/assets/custom/README.md
new file mode 100644
index 00000000..12726dbf
--- /dev/null
+++ b/android/app/src/main/assets/custom/README.md
@@ -0,0 +1,3 @@
+# Fonts
+
+> Fonts are in here
diff --git a/android/app/src/main/java/com/treejer/ranger/MainActivity.java b/android/app/src/main/java/com/treejer/ranger/MainActivity.java
index 4371a91b..4e23cba5 100644
--- a/android/app/src/main/java/com/treejer/ranger/MainActivity.java
+++ b/android/app/src/main/java/com/treejer/ranger/MainActivity.java
@@ -13,7 +13,7 @@
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
- // Set the theme to AppTheme BEFORE onCreate to support
+ // Set the theme to AppTheme BEFORE onCreate to support
// coloring the background, status bar, and navigation bar.
// This is required for expo-splash-screen.
setTheme(R.style.AppTheme);
diff --git a/android/build.gradle b/android/build.gradle
index c10a92e9..20e7faf1 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -13,6 +13,7 @@ buildscript {
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
ndkVersion = "23.1.7779620"
+ androidXBrowser = "1.5.0"
}
repositories {
google()
diff --git a/android/link-assets-manifest.json b/android/link-assets-manifest.json
new file mode 100644
index 00000000..272ba5af
--- /dev/null
+++ b/android/link-assets-manifest.json
@@ -0,0 +1,81 @@
+{
+ "migIndex": 1,
+ "data": [
+ {
+ "path": "assets/fonts/Montserrat-Black.ttf",
+ "sha1": "96d03479269d1ba7a3e38f4b64ff87ead267c998"
+ },
+ {
+ "path": "assets/fonts/Montserrat-BlackItalic.ttf",
+ "sha1": "6e84efcb6bf01c47102d6e9f0dbe5958e74c9f20"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Bold.ttf",
+ "sha1": "3a54407a2b26ff4718708a4726b10cb070d16534"
+ },
+ {
+ "path": "assets/fonts/Montserrat-BoldItalic.ttf",
+ "sha1": "6acf078ad5e1b77e6d68b8ff0cde39d81b9f057c"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraBold.ttf",
+ "sha1": "4b5c27dcf59df165606efa247190c0bfa3c02ff0"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraBoldItalic.ttf",
+ "sha1": "28423e53b60316c09f468055ca8c1d27c06ab45b"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraLight.ttf",
+ "sha1": "fe3c849af6231af6c5c43d1045f2011bf683f317"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraLightItalic.ttf",
+ "sha1": "40d3231d668844dab24536fa0c380bdc2311a992"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Italic.ttf",
+ "sha1": "798c701450f6bc08217f73c1ac569100cddc2947"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Light.ttf",
+ "sha1": "83879cec4c934d446eca63aa5cfedcebfd60d610"
+ },
+ {
+ "path": "assets/fonts/Montserrat-LightItalic.ttf",
+ "sha1": "659632ad8a33d96e6a00319d7b0c020e9cc6cc5b"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Medium.ttf",
+ "sha1": "65a98832079c4d2c67f3acc4f4ce2de630fe6cb0"
+ },
+ {
+ "path": "assets/fonts/Montserrat-MediumItalic.ttf",
+ "sha1": "ceadac9926836d5fc0ee14f94567f0ea25979fa2"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Regular.ttf",
+ "sha1": "d25b35242deb1c6ff888b8162ca2aacc356d3899"
+ },
+ {
+ "path": "assets/fonts/Montserrat-SemiBold.ttf",
+ "sha1": "f829de4c176fb2ccf5e33360920f48de6794434e"
+ },
+ {
+ "path": "assets/fonts/Montserrat-SemiBoldItalic.ttf",
+ "sha1": "3c2759411b32ad6779aba08e4c09ed1b3c0bc4d4"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Thin.ttf",
+ "sha1": "1d00ff2f5bc9331aa6e75b5a82dd698976615dc4"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ThinItalic.ttf",
+ "sha1": "ae19fb168e043e6408692c4bc50dd0aab76fdc22"
+ },
+ {
+ "path": "assets/fonts/README.md",
+ "sha1": "e40451f9fc81b083aec8b0df5d69f2c15c932a7e"
+ }
+ ]
+}
diff --git a/app.json b/app.json
index df820961..8502dcc9 100644
--- a/app.json
+++ b/app.json
@@ -1,8 +1,9 @@
{
"expo": {
"name": "RangerTreejer",
+ "scheme": "ranger-treejer",
"slug": "RangerTreejerV2",
- "version": "1.0.0",
+ "version": "1.0.0-beta.2",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
diff --git a/babel.config.js b/babel.config.js
index 2003437e..710a8469 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -26,12 +26,20 @@ module.exports = function (api) {
navigation: './src/navigation',
types: './src/types',
'ranger-redux': './src/redux',
+ 'ranger-testUtils': './src/testUtils',
+ webServices: './src/webServices',
},
},
],
'import-graphql',
- '@babel/plugin-proposal-export-namespace-from',
'react-native-reanimated/plugin',
+ ...(process.env.NODE_ENV === 'test'
+ ? [
+ '@babel/plugin-proposal-export-namespace-from',
+ '@babel/plugin-proposal-private-methods',
+ '@babel/plugin-proposal-class-properties',
+ ]
+ : []),
],
};
};
diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 00000000..fe9f365d
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# ==> USERNAME and SERVER_IP env variables are needed!!! <==
+
+echo "Start to build web production ..."
+
+yarn web:build
+
+echo "web:prod is done"
+
+SERVER_SSH="$SERVER_USERNAME@$SERVER_IP"
+TIME_FOLDER=$(date +'%m-%d-%Y-%H%M')
+if
+ [[ "$PORT" -eq "" || "$PORT" -eq "4000" ]];
+then
+ PORT_LOCAL=4000;
+ SERVER_FOLDER="/home/deploy/projects/mobiledev-build"
+ PM2_NAME="dev";
+else
+ PORT_LOCAL=$PORT;
+ SERVER_FOLDER="/home/deploy/projects/mobile-build"
+ PM2_NAME="main";
+fi
+BUILD_TAR_FILE="web-build-$TIME_FOLDER.tar.gz"
+
+echo "Start deploying ranger treejer web to $SERVER_IP on port $PORT_LOCAL"
+
+echo "$(TIME_FOLDER) => Folder for deploying"
+
+tar -zcvf "$BUILD_TAR_FILE" web-build
+
+echo "tar.gz file generated"
+
+scp "$BUILD_TAR_FILE" "$SERVER_SSH:$SERVER_FOLDER/$BUILD_TAR_FILE"
+
+echo "tar.gz successfully copied to server."
+
+rm -rf "$BUILD_TAR_FILE"
+
+SSH_COMMAND="ssh $SERVER_SSH 'cd $SERVER_FOLDER; pm2 delete $PM2_NAME; rm -rf web-build; tar -xvf $BUILD_TAR_FILE; pm2 serve web-build $PORT_LOCAL --name $PM2_NAME;'"
+eval "${SSH_COMMAND}"
diff --git a/index.css b/index.css
new file mode 100644
index 00000000..546e7534
--- /dev/null
+++ b/index.css
@@ -0,0 +1,102 @@
+.slick-slider,
+.slick-slider .slick-list,
+.slick-slider .slick-list .slick-track,
+.slick-slider .slick-list .slick-track .slick-slide,
+.slick-slider .slick-list .slick-track .slick-slide > div,
+.slick-slider .slick-list .slick-track .slick-slide > div > div {
+ height: 100%;
+}
+
+body {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #faf8f0;
+}
+
+#root {
+ max-width: 768px;
+ margin: auto;
+ box-shadow: 0 0 40px 4px rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+@media all and (min-width: 768px) {
+ #root {
+ border-radius: 12px;
+ }
+}
+
+#ranger-web {
+ min-height: -webkit-fill-available;
+ min-height: -moz-fill-available;
+ min-width: -webkit-fill-available;
+ overflow: hidden;
+ display: flex;
+ background-color: #faf8f0;
+}
+
+.mapboxgl-ctrl-top-right {
+ position: fixed !important;
+ top: auto !important;
+ right: 1rem !important;
+ bottom: 10vh !important;
+ width: 100px !important;
+ height: 100px !important;
+ display: none;
+}
+
+#ptr-container > div {
+ height: 100% !important;
+}
+
+@media all and (max-height: 677px) {
+ .mapboxgl-ctrl-top-right {
+ bottom: 13vh !important;
+ }
+}
+
+.mapboxgl-ctrl-geolocate {
+ width: 45px !important;
+ height: 45px !important;
+ padding: 4px !important;
+}
+
+.mapboxgl-ctrl-icon {
+ background-size: cover;
+}
+
+.mapboxgl-ctrl,
+.mapboxgl-ctrl-group {
+ border-radius: 50% !important;
+ overflow: hidden !important;
+}
+
+.mapboxgl-ctrl-bottom-right {
+ display: none !important;
+}
+
+.mapboxgl-ctrl-bottom-left {
+ display: none !important;
+}
+
+input {
+ outline: none;
+}
+
+.Toastify__toast-container--top-right {
+ top: env(safe-area-inset-top, 1em) !important;
+}
+
+@media all and (min-width: 768px) {
+ .Toastify__toast-container--top-right {
+ right: calc(100vw - 768px - calc(50vw - 392px));
+ }
+}
+
+
+#ptr-parent{
+ width: 100% !important;
+}
diff --git a/ios/Podfile b/ios/Podfile
index 274f39f2..dfe32e3b 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -10,7 +10,7 @@ podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties
ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
-platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'
+platform :ios, '13.0'
install! 'cocoapods',
:deterministic_uuids => false
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 1aba044d..9dc07726 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -27,19 +27,17 @@ PODS:
- React-Core
- React-RCTAppDelegate
- ReactCommon/turbomodule/core
- - ExpoWebBrowser (11.0.0):
- - ExpoModulesCore
- EXSplashScreen (0.18.1):
- ExpoModulesCore
- React-Core
- - FBLazyVector (0.71.4)
- - FBReactNativeSpec (0.71.4):
+ - FBLazyVector (0.71.8)
+ - FBReactNativeSpec (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTRequired (= 0.71.4)
- - RCTTypeSafety (= 0.71.4)
- - React-Core (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
+ - RCTRequired (= 0.71.8)
+ - RCTTypeSafety (= 0.71.8)
+ - React-Core (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
- Firebase/Analytics (10.6.0):
- Firebase/Core
- Firebase/Core (10.6.0):
@@ -69,9 +67,9 @@ PODS:
- FirebaseCoreInternal (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Logger (~> 7.8)
- - FirebaseCoreInternal (10.6.0):
+ - FirebaseCoreInternal (10.7.0):
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseInstallations (10.6.0):
+ - FirebaseInstallations (10.7.0):
- FirebaseCore (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
@@ -117,16 +115,16 @@ PODS:
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (7.11.0):
- GoogleUtilities/Logger
- - hermes-engine (0.71.4):
- - hermes-engine/Pre-built (= 0.71.4)
- - hermes-engine/Pre-built (0.71.4)
+ - hermes-engine (0.71.6):
+ - hermes-engine/Pre-built (= 0.71.6)
+ - hermes-engine/Pre-built (0.71.6)
- libevent (2.1.12)
- - MapboxCommon (23.3.2)
- - MapboxCoreMaps (10.11.1):
- - MapboxCommon (~> 23.3)
- - MapboxMaps (10.11.1):
- - MapboxCommon (= 23.3.2)
- - MapboxCoreMaps (= 10.11.1)
+ - MapboxCommon (23.2.3)
+ - MapboxCoreMaps (10.10.0):
+ - MapboxCommon (~> 23.2)
+ - MapboxMaps (10.10.2):
+ - MapboxCommon (= 23.2.3)
+ - MapboxCoreMaps (= 10.10.0)
- MapboxMobileEvents (= 1.0.10)
- Turf (~> 2.0)
- MapboxMobileEvents (1.0.10)
@@ -153,26 +151,26 @@ PODS:
- fmt (~> 6.2.1)
- glog
- libevent
- - RCTRequired (0.71.4)
- - RCTTypeSafety (0.71.4):
- - FBLazyVector (= 0.71.4)
- - RCTRequired (= 0.71.4)
- - React-Core (= 0.71.4)
- - React (0.71.4):
- - React-Core (= 0.71.4)
- - React-Core/DevSupport (= 0.71.4)
- - React-Core/RCTWebSocket (= 0.71.4)
- - React-RCTActionSheet (= 0.71.4)
- - React-RCTAnimation (= 0.71.4)
- - React-RCTBlob (= 0.71.4)
- - React-RCTImage (= 0.71.4)
- - React-RCTLinking (= 0.71.4)
- - React-RCTNetwork (= 0.71.4)
- - React-RCTSettings (= 0.71.4)
- - React-RCTText (= 0.71.4)
- - React-RCTVibration (= 0.71.4)
- - React-callinvoker (0.71.4)
- - React-Codegen (0.71.4):
+ - RCTRequired (0.71.8)
+ - RCTTypeSafety (0.71.8):
+ - FBLazyVector (= 0.71.8)
+ - RCTRequired (= 0.71.8)
+ - React-Core (= 0.71.8)
+ - React (0.71.8):
+ - React-Core (= 0.71.8)
+ - React-Core/DevSupport (= 0.71.8)
+ - React-Core/RCTWebSocket (= 0.71.8)
+ - React-RCTActionSheet (= 0.71.8)
+ - React-RCTAnimation (= 0.71.8)
+ - React-RCTBlob (= 0.71.8)
+ - React-RCTImage (= 0.71.8)
+ - React-RCTLinking (= 0.71.8)
+ - React-RCTNetwork (= 0.71.8)
+ - React-RCTSettings (= 0.71.8)
+ - React-RCTText (= 0.71.8)
+ - React-RCTVibration (= 0.71.8)
+ - React-callinvoker (0.71.8)
+ - React-Codegen (0.71.8):
- FBReactNativeSpec
- hermes-engine
- RCT-Folly
@@ -183,209 +181,209 @@ PODS:
- React-jsiexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-Core (0.71.4):
+ - React-Core (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.71.4)
- - React-cxxreact (= 0.71.4)
+ - React-Core/Default (= 0.71.8)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/CoreModulesHeaders (0.71.4):
+ - React-Core/CoreModulesHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/Default (0.71.4):
+ - React-Core/Default (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/DevSupport (0.71.4):
+ - React-Core/DevSupport (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.71.4)
- - React-Core/RCTWebSocket (= 0.71.4)
- - React-cxxreact (= 0.71.4)
+ - React-Core/Default (= 0.71.8)
+ - React-Core/RCTWebSocket (= 0.71.8)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-jsinspector (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-jsinspector (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTActionSheetHeaders (0.71.4):
+ - React-Core/RCTActionSheetHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTAnimationHeaders (0.71.4):
+ - React-Core/RCTAnimationHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTBlobHeaders (0.71.4):
+ - React-Core/RCTBlobHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTImageHeaders (0.71.4):
+ - React-Core/RCTImageHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTLinkingHeaders (0.71.4):
+ - React-Core/RCTLinkingHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTNetworkHeaders (0.71.4):
+ - React-Core/RCTNetworkHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTSettingsHeaders (0.71.4):
+ - React-Core/RCTSettingsHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTTextHeaders (0.71.4):
+ - React-Core/RCTTextHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTVibrationHeaders (0.71.4):
+ - React-Core/RCTVibrationHeaders (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-Core/RCTWebSocket (0.71.4):
+ - React-Core/RCTWebSocket (0.71.8):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.71.4)
- - React-cxxreact (= 0.71.4)
+ - React-Core/Default (= 0.71.8)
+ - React-cxxreact (= 0.71.8)
- React-hermes
- - React-jsi (= 0.71.4)
- - React-jsiexecutor (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-jsi (= 0.71.8)
+ - React-jsiexecutor (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- Yoga
- - React-CoreModules (0.71.4):
+ - React-CoreModules (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.71.4)
- - React-Codegen (= 0.71.4)
- - React-Core/CoreModulesHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
+ - RCTTypeSafety (= 0.71.8)
+ - React-Codegen (= 0.71.8)
+ - React-Core/CoreModulesHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
- React-RCTBlob
- - React-RCTImage (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-cxxreact (0.71.4):
+ - React-RCTImage (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-cxxreact (0.71.8):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-jsinspector (= 0.71.4)
- - React-logger (= 0.71.4)
- - React-perflogger (= 0.71.4)
- - React-runtimeexecutor (= 0.71.4)
- - React-hermes (0.71.4):
+ - React-callinvoker (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-jsinspector (= 0.71.8)
+ - React-logger (= 0.71.8)
+ - React-perflogger (= 0.71.8)
+ - React-runtimeexecutor (= 0.71.8)
+ - React-hermes (0.71.8):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- RCT-Folly/Futures (= 2021.07.22.00)
- - React-cxxreact (= 0.71.4)
+ - React-cxxreact (= 0.71.8)
- React-jsi
- - React-jsiexecutor (= 0.71.4)
- - React-jsinspector (= 0.71.4)
- - React-perflogger (= 0.71.4)
- - React-jsi (0.71.4):
+ - React-jsiexecutor (= 0.71.8)
+ - React-jsinspector (= 0.71.8)
+ - React-perflogger (= 0.71.8)
+ - React-jsi (0.71.8):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-jsiexecutor (0.71.4):
+ - React-jsiexecutor (0.71.8):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-cxxreact (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-perflogger (= 0.71.4)
- - React-jsinspector (0.71.4)
- - React-logger (0.71.4):
+ - React-cxxreact (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-perflogger (= 0.71.8)
+ - React-jsinspector (0.71.8)
+ - React-logger (0.71.8):
- glog
- react-native-geolocation-service (5.3.1):
- React
@@ -399,90 +397,90 @@ PODS:
- ReactCommon/turbomodule/core
- react-native-webview (11.26.1):
- React-Core
- - React-perflogger (0.71.4)
- - React-RCTActionSheet (0.71.4):
- - React-Core/RCTActionSheetHeaders (= 0.71.4)
- - React-RCTAnimation (0.71.4):
+ - React-perflogger (0.71.8)
+ - React-RCTActionSheet (0.71.8):
+ - React-Core/RCTActionSheetHeaders (= 0.71.8)
+ - React-RCTAnimation (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.71.4)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTAnimationHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTAppDelegate (0.71.4):
+ - RCTTypeSafety (= 0.71.8)
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTAnimationHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTAppDelegate (0.71.8):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- ReactCommon/turbomodule/core
- - React-RCTBlob (0.71.4):
+ - React-RCTBlob (0.71.8):
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTBlobHeaders (= 0.71.4)
- - React-Core/RCTWebSocket (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-RCTNetwork (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTImage (0.71.4):
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTBlobHeaders (= 0.71.8)
+ - React-Core/RCTWebSocket (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-RCTNetwork (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTImage (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.71.4)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTImageHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-RCTNetwork (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTLinking (0.71.4):
- - React-Codegen (= 0.71.4)
- - React-Core/RCTLinkingHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTNetwork (0.71.4):
+ - RCTTypeSafety (= 0.71.8)
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTImageHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-RCTNetwork (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTLinking (0.71.8):
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTLinkingHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTNetwork (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.71.4)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTNetworkHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTSettings (0.71.4):
+ - RCTTypeSafety (= 0.71.8)
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTNetworkHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTSettings (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.71.4)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTSettingsHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-RCTText (0.71.4):
- - React-Core/RCTTextHeaders (= 0.71.4)
- - React-RCTVibration (0.71.4):
+ - RCTTypeSafety (= 0.71.8)
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTSettingsHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-RCTText (0.71.8):
+ - React-Core/RCTTextHeaders (= 0.71.8)
+ - React-RCTVibration (0.71.8):
- RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.71.4)
- - React-Core/RCTVibrationHeaders (= 0.71.4)
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/core (= 0.71.4)
- - React-runtimeexecutor (0.71.4):
- - React-jsi (= 0.71.4)
- - ReactCommon/turbomodule/bridging (0.71.4):
+ - React-Codegen (= 0.71.8)
+ - React-Core/RCTVibrationHeaders (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/core (= 0.71.8)
+ - React-runtimeexecutor (0.71.8):
+ - React-jsi (= 0.71.8)
+ - ReactCommon/turbomodule/bridging (0.71.8):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.71.4)
- - React-Core (= 0.71.4)
- - React-cxxreact (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-logger (= 0.71.4)
- - React-perflogger (= 0.71.4)
- - ReactCommon/turbomodule/core (0.71.4):
+ - React-callinvoker (= 0.71.8)
+ - React-Core (= 0.71.8)
+ - React-cxxreact (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-logger (= 0.71.8)
+ - React-perflogger (= 0.71.8)
+ - ReactCommon/turbomodule/core (0.71.8):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.71.4)
- - React-Core (= 0.71.4)
- - React-cxxreact (= 0.71.4)
- - React-jsi (= 0.71.4)
- - React-logger (= 0.71.4)
- - React-perflogger (= 0.71.4)
+ - React-callinvoker (= 0.71.8)
+ - React-Core (= 0.71.8)
+ - React-cxxreact (= 0.71.8)
+ - React-jsi (= 0.71.8)
+ - React-logger (= 0.71.8)
+ - React-perflogger (= 0.71.8)
- RNCAsyncStorage (1.17.11):
- React-Core
- RNCClipboard (1.11.2):
@@ -498,11 +496,11 @@ PODS:
- RNFBApp (17.3.2):
- Firebase/CoreOnly (= 10.6.0)
- React-Core
- - RNFlashList (1.4.1):
+ - RNFlashList (1.4.3):
- React-Core
- RNFS (2.20.0):
- React-Core
- - RNGestureHandler (2.9.0):
+ - RNGestureHandler (2.12.1):
- React-Core
- RNImageCropPicker (0.39.0):
- React-Core
@@ -515,18 +513,18 @@ PODS:
- TOCropViewController
- RNInAppBrowser (3.7.0):
- React-Core
- - rnmapbox-maps (10.0.0-beta.76):
- - MapboxMaps (~> 10.11.1)
+ - rnmapbox-maps (10.0.0-beta.64):
+ - MapboxMaps (~> 10.10.0)
- React
- React-Core
- - rnmapbox-maps/DynamicLibrary (= 10.0.0-beta.76)
+ - rnmapbox-maps/DynamicLibrary (= 10.0.0-beta.64)
- Turf
- - rnmapbox-maps/DynamicLibrary (10.0.0-beta.76):
- - MapboxMaps (~> 10.11.1)
+ - rnmapbox-maps/DynamicLibrary (10.0.0-beta.64):
+ - MapboxMaps (~> 10.10.0)
- React
- React-Core
- Turf
- - RNPermissions (3.7.3):
+ - RNPermissions (3.8.0):
- React-Core
- RNReanimated (3.0.2):
- DoubleConversion
@@ -584,7 +582,6 @@ DEPENDENCIES:
- Expo (from `../node_modules/expo`)
- ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
- - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
- EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
@@ -688,8 +685,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-keep-awake/ios"
ExpoModulesCore:
:path: "../node_modules/expo-modules-core"
- ExpoWebBrowser:
- :path: "../node_modules/expo-web-browser/ios"
EXSplashScreen:
:path: "../node_modules/expo-splash-screen/ios"
FBLazyVector:
@@ -812,80 +807,79 @@ SPEC CHECKSUMS:
Expo: 04ba1ddde0be07aff4306ae636a1804810679145
ExpoKeepAwake: 69f5f627670d62318410392d03e0b5db0f85759a
ExpoModulesCore: 1667335d4f4c9b7801990930e6f0eea42c916a21
- ExpoWebBrowser: d682f920a7f34b1e09c0087bf70be64f9755c8e3
EXSplashScreen: cd7fb052dff5ba8311d5c2455ecbebffe1b7a8ca
- FBLazyVector: 446e84642979fff0ba57f3c804c2228a473aeac2
- FBReactNativeSpec: 241709e132e3bf1526c1c4f00bc5384dd39dfba9
+ FBLazyVector: f637f31eacba90d4fdeff3fa41608b8f361c173b
+ FBReactNativeSpec: 0d9a4f4de7ab614c49e98c00aedfd3bfbda33d59
Firebase: f13680471b021937f2230ea8503c7809d8c29806
FirebaseAnalytics: 9f382605c5ee412b039212f054bf7a403d9850c1
FirebaseCore: fa80ad16a62d52f67274b5b88304c3a318bbf9a4
- FirebaseCoreInternal: c7cd505e2136811096b225ac388d6254a2622362
- FirebaseInstallations: 13dde135fa0524e15bddb133ccc8465c53a1b3f3
+ FirebaseCoreInternal: 8845798510aae74703467480f71ac613788d0696
+ FirebaseInstallations: 59c0e4c7a816a0f76710d83f77e5369b3e45eb96
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
GoogleAppMeasurement: 686b48c3c895f3c55c70719041913d5d150b74f6
GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f
- hermes-engine: a1f157c49ea579c28b0296bda8530e980c45bdb3
+ hermes-engine: b434cea529ad0152c56c7cb6486b0c4c0b23b5de
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
- MapboxCommon: c3a35f6884b80d898de9f11d88cb28c5caba584a
- MapboxCoreMaps: 03e7214fabb54d496ff56314ff8159dd264b6093
- MapboxMaps: 85610575a8871b3f5e98be2a234f0229a33324a7
+ MapboxCommon: e7948335faacbe6f8b9b115511fd0dd0354bf565
+ MapboxCoreMaps: 4075a9e415b9b3ab6229d09623fef5f791826a5b
+ MapboxMaps: d8cf7d214d94ec18790c338f3a3fe59dd4048e97
MapboxMobileEvents: de50b3a4de180dd129c326e09cd12c8adaaa46d6
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
- RCTRequired: 5a024fdf458fa8c0d82fc262e76f982d4dcdecdd
- RCTTypeSafety: b6c253064466411c6810b45f66bc1e43ce0c54ba
- React: 715292db5bd46989419445a5547954b25d2090f0
- React-callinvoker: 105392d1179058585b564d35b4592fe1c46d6fba
- React-Codegen: b75333b93d835afce84b73472927cccaef2c9f8c
- React-Core: 88838ed1724c64905fc6c0811d752828a92e395b
- React-CoreModules: cd238b4bb8dc8529ccc8b34ceae7267b04ce1882
- React-cxxreact: 291bfab79d8098dc5ebab98f62e6bdfe81b3955a
- React-hermes: b1e67e9a81c71745704950516f40ee804349641c
- React-jsi: c9d5b563a6af6bb57034a82c2b0d39d0a7483bdc
- React-jsiexecutor: d6b7fa9260aa3cb40afee0507e3bc1d17ecaa6f2
- React-jsinspector: 1f51e775819199d3fe9410e69ee8d4c4161c7b06
- React-logger: 0d58569ec51d30d1792c5e86a8e3b78d24b582c6
+ RCTRequired: 8af6a32dfc2b65ec82193c2dee6e1011ff22ac2a
+ RCTTypeSafety: bee9dd161c175896c680d47ef1d9eaacf2b587f4
+ React: d850475db9ba8006a8b875d79e1e0d6ac8a0f8b6
+ React-callinvoker: 6a0c75475ddc17c9ed54e4ff0478074a18fd7ab5
+ React-Codegen: 786571642e87add634e7f4d299c85314ec6cc158
+ React-Core: 1adfab153f59e4f56e09b97a153089f466d7b8aa
+ React-CoreModules: 958d236715415d4ccdd5fa35c516cf0356637393
+ React-cxxreact: 2e7a6283807ce8755c3d501735acd400bec3b5cd
+ React-hermes: 8102c3112ba32207c3052619be8cfae14bf99d84
+ React-jsi: dd29264f041a587e91f994e4be97e86c127742b2
+ React-jsiexecutor: 747911ab5921641b4ed7e4900065896597142125
+ React-jsinspector: c712f9e3bb9ba4122d6b82b4f906448b8a281580
+ React-logger: 342f358b8decfbf8f272367f4eacf4b6154061be
react-native-geolocation-service: 608e1da71a1ac31b4de64d9ef2815f697978c55b
react-native-netinfo: 2517ad504b3d303e90d7a431b0fcaef76d207983
react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc
react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1
- React-perflogger: 0bb0522a12e058f6eb69d888bc16f40c16c4b907
- React-RCTActionSheet: bfd675a10f06a18728ea15d82082d48f228a213a
- React-RCTAnimation: 2fa220b2052ec75b733112aca39143d34546a941
- React-RCTAppDelegate: 8564f93c1d9274e95e3b0c746d08a87ff5a621b2
- React-RCTBlob: d0336111f46301ae8aba2e161817e451aad72dd6
- React-RCTImage: fec592c46edb7c12a9cde08780bdb4a688416c62
- React-RCTLinking: 14eccac5d2a3b34b89dbfa29e8ef6219a153fe2d
- React-RCTNetwork: 1fbce92e772e39ca3687a2ebb854501ff6226dd7
- React-RCTSettings: 1abea36c9bb16d9979df6c4b42e2ea281b4bbcc5
- React-RCTText: 15355c41561a9f43dfd23616d0a0dd40ba05ed61
- React-RCTVibration: ad17efcfb2fa8f6bfd8ac0cf48d96668b8b28e0b
- React-runtimeexecutor: 8fa50b38df6b992c76537993a2b0553d3b088004
- ReactCommon: 34f9369c376d5f335069dda29552b3e7351b9ec6
+ React-perflogger: d21f182895de9d1b077f8a3cd00011095c8c9100
+ React-RCTActionSheet: 0151f83ef92d2a7139bba7dfdbc8066632a6d47b
+ React-RCTAnimation: 5ec9c0705bb2297549c120fe6473aa3e4a01e215
+ React-RCTAppDelegate: 9895fd1b6d1176d88c4b10ddc169b2e1300c91f0
+ React-RCTBlob: f3634eb45b6e7480037655e1ca93d1136ac984dd
+ React-RCTImage: 3c12cb32dec49549ae62ed6cba4018db43841ffc
+ React-RCTLinking: 310e930ee335ef25481b4a173d9edb64b77895f9
+ React-RCTNetwork: b6837841fe88303b0c04c1e3c01992b30f1f5498
+ React-RCTSettings: 600d91fe25fa7c16b0ff891304082440f2904b89
+ React-RCTText: a0a19f749088280c6def5397ed6211b811e7eef3
+ React-RCTVibration: 43ffd976a25f6057a7cf95ea3648ba4e00287f89
+ React-runtimeexecutor: 7c51ae9d4b3e9608a2366e39ccaa606aa551b9ed
+ ReactCommon: 9957c7530467adbdf4a4a1476d636bd00b2e4dd8
RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60
RNCClipboard: 3f0451a8100393908bea5c5c5b16f96d45f30bfc
RNCMaskedView: bc0170f389056201c82a55e242e5d90070e18e5a
RNDeviceInfo: 749f2e049dcd79e2e44f134f66b73a06951b5066
RNFBAnalytics: 966d8734174a27dee0e84193f676aa3ffb8661bd
RNFBApp: 3bf62629c41ef65d82e763c25aeb77cdfa63bfae
- RNFlashList: 8ec7f7454721145fe84566bb9e88bcf58981c9fe
+ RNFlashList: ade81b4e928ebd585dd492014d40fb8d0e848aab
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
- RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39
+ RNGestureHandler: c0d04458598fcb26052494ae23dda8f8f5162b13
RNImageCropPicker: 14fe1c29298fb4018f3186f455c475ab107da332
RNInAppBrowser: e36d6935517101ccba0e875bac8ad7b0cb655364
- rnmapbox-maps: 288f46c37cf72119140bc9c39410ef7bce0af120
- RNPermissions: dde71861a8f9217a1de97533eb8d6f75d8b9c4ac
+ rnmapbox-maps: 80e50a60882744e9636d70fa3d3e91976b39e842
+ RNPermissions: 8abfb750efc0f5de4200a80a961d904ce430ae31
RNReanimated: f0dd6b881808e635ef0673f89642937d6c141314
RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f
RNSVG: c1e76b81c76cdcd34b4e1188852892dc280eb902
RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
Turf: 469ce2c3d22e5e8e4818d5a3b254699a5c89efa4
- Yoga: 79dd7410de6f8ad73a77c868d3d368843f0c93e0
+ Yoga: 065f0b74dba4832d6e328238de46eb72c5de9556
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
-PODFILE CHECKSUM: d21f29793352f630dfa867e8acf9afb1dad01219
+PODFILE CHECKSUM: caa9d3822fe921dd05cbad4b5429c9bce7abf299
COCOAPODS: 1.11.3
diff --git a/ios/RangerTreejerV2.xcodeproj/project.pbxproj b/ios/RangerTreejerV2.xcodeproj/project.pbxproj
index b92c9b9a..e591c17b 100644
--- a/ios/RangerTreejerV2.xcodeproj/project.pbxproj
+++ b/ios/RangerTreejerV2.xcodeproj/project.pbxproj
@@ -7,19 +7,39 @@
objects = {
/* Begin PBXBuildFile section */
+ 0082A060F21044738856DF9D /* Montserrat-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BCE273E800204FEBAE424286 /* Montserrat-ExtraLight.ttf */; };
0A8368BB2E3787E6D721CD27 /* Pods_RangerTreejerV2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D754DE6D24D7D074F1CD6A68 /* Pods_RangerTreejerV2.framework */; };
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 1B15794069034A799BC1C8AD /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 40EBD94655B44878BF051DEE /* README.md */; };
+ 2AE0A8E9BA2440EEB3D44CB5 /* Montserrat-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E76C73C35D77489B85206C8F /* Montserrat-ThinItalic.ttf */; };
+ 3043BA42AC894D9A890AAF99 /* Montserrat-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4558C5B39D374063AA8A0A72 /* Montserrat-Bold.ttf */; };
+ 31E90C6A3129438F90AF50AB /* Montserrat-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 01BC3A9DCF6942F9A61D49A9 /* Montserrat-Black.ttf */; };
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
653F78BF26F442D29C395F04 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0807D28359464B2DA3406B11 /* noop-file.swift */; };
+ 6EC2FE27CC1F4B949BDE1CEA /* Montserrat-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6C087CB598454C199C0204F7 /* Montserrat-LightItalic.ttf */; };
+ 74B3A13029704D4FB1246A71 /* Montserrat-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 683CA12F042D460787654D96 /* Montserrat-BlackItalic.ttf */; };
+ 768B12D31D38462D988ED025 /* Montserrat-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AED6C7CBE6048E896528494 /* Montserrat-SemiBold.ttf */; };
+ 7C8E38B9F752479D9C3B515C /* Montserrat-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 429B867D6838441792C0AE77 /* Montserrat-BoldItalic.ttf */; };
+ 8F9446A07F064B74B1C97B72 /* Montserrat-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FA31E819FD8E416284DBE4CE /* Montserrat-MediumItalic.ttf */; };
+ 9D942B32141E4016A84BC493 /* Montserrat-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A12EF525B91540158D3D7489 /* Montserrat-ExtraLightItalic.ttf */; };
B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
+ B8BC3F7262C64AE98E16E2FC /* Montserrat-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4080A1B9CC9A49A3969B0EC6 /* Montserrat-Medium.ttf */; };
+ BA6B05BF43E84E86A79A0510 /* Montserrat-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DD1EFA37E0344136AC8F8632 /* Montserrat-Light.ttf */; };
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
CE869ED929BFC68500FA25C0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = CE869ED829BFC68400FA25C0 /* GoogleService-Info.plist */; };
+ D23256E2B9B6464091DEF13B /* Montserrat-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 82BD9E6357C4495B8F3CF150 /* Montserrat-Thin.ttf */; };
+ DB2770F60631479E9053E667 /* Montserrat-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 397B1DD4D7F74DCDA40F5731 /* Montserrat-Italic.ttf */; };
+ DE1330DC14A445A8A667B695 /* Montserrat-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 61210969F5D24940AD2F91E0 /* Montserrat-SemiBoldItalic.ttf */; };
+ DF6F7E956307407FA04F582C /* Montserrat-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 31FA405151D149B294482E3C /* Montserrat-ExtraBoldItalic.ttf */; };
+ F6A864684BF2472D974C2D51 /* Montserrat-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E54846D5EEED498EB70DA8EA /* Montserrat-Regular.ttf */; };
+ FBD5D71593584632B0368825 /* Montserrat-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 21442F84E30249E3B2817EA6 /* Montserrat-ExtraBold.ttf */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
+ 01BC3A9DCF6942F9A61D49A9 /* Montserrat-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Black.ttf"; path = "../assets/fonts/Montserrat-Black.ttf"; sourceTree = ""; };
0807D28359464B2DA3406B11 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "RangerTreejerV2/noop-file.swift"; sourceTree = ""; };
13B07F961A680F5B00A75B9A /* RangerTreejerV2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RangerTreejerV2.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RangerTreejerV2/AppDelegate.h; sourceTree = ""; };
@@ -27,13 +47,31 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RangerTreejerV2/Images.xcassets; sourceTree = ""; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RangerTreejerV2/Info.plist; sourceTree = ""; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RangerTreejerV2/main.m; sourceTree = ""; };
+ 21442F84E30249E3B2817EA6 /* Montserrat-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-ExtraBold.ttf"; path = "../assets/fonts/Montserrat-ExtraBold.ttf"; sourceTree = ""; };
+ 31FA405151D149B294482E3C /* Montserrat-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-ExtraBoldItalic.ttf"; path = "../assets/fonts/Montserrat-ExtraBoldItalic.ttf"; sourceTree = ""; };
+ 397B1DD4D7F74DCDA40F5731 /* Montserrat-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Italic.ttf"; path = "../assets/fonts/Montserrat-Italic.ttf"; sourceTree = ""; };
+ 4080A1B9CC9A49A3969B0EC6 /* Montserrat-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Medium.ttf"; path = "../assets/fonts/Montserrat-Medium.ttf"; sourceTree = ""; };
+ 40EBD94655B44878BF051DEE /* README.md */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = README.md; path = ../assets/fonts/README.md; sourceTree = ""; };
+ 429B867D6838441792C0AE77 /* Montserrat-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-BoldItalic.ttf"; path = "../assets/fonts/Montserrat-BoldItalic.ttf"; sourceTree = ""; };
+ 4558C5B39D374063AA8A0A72 /* Montserrat-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Bold.ttf"; path = "../assets/fonts/Montserrat-Bold.ttf"; sourceTree = ""; };
+ 61210969F5D24940AD2F91E0 /* Montserrat-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-SemiBoldItalic.ttf"; path = "../assets/fonts/Montserrat-SemiBoldItalic.ttf"; sourceTree = ""; };
+ 683CA12F042D460787654D96 /* Montserrat-BlackItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-BlackItalic.ttf"; path = "../assets/fonts/Montserrat-BlackItalic.ttf"; sourceTree = ""; };
+ 6C087CB598454C199C0204F7 /* Montserrat-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-LightItalic.ttf"; path = "../assets/fonts/Montserrat-LightItalic.ttf"; sourceTree = ""; };
6C2E3173556A471DD304B334 /* Pods-RangerTreejerV2.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RangerTreejerV2.debug.xcconfig"; path = "Target Support Files/Pods-RangerTreejerV2/Pods-RangerTreejerV2.debug.xcconfig"; sourceTree = ""; };
7A4D352CD337FB3A3BF06240 /* Pods-RangerTreejerV2.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RangerTreejerV2.release.xcconfig"; path = "Target Support Files/Pods-RangerTreejerV2/Pods-RangerTreejerV2.release.xcconfig"; sourceTree = ""; };
+ 7AED6C7CBE6048E896528494 /* Montserrat-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-SemiBold.ttf"; path = "../assets/fonts/Montserrat-SemiBold.ttf"; sourceTree = ""; };
+ 82BD9E6357C4495B8F3CF150 /* Montserrat-Thin.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Thin.ttf"; path = "../assets/fonts/Montserrat-Thin.ttf"; sourceTree = ""; };
+ A12EF525B91540158D3D7489 /* Montserrat-ExtraLightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-ExtraLightItalic.ttf"; path = "../assets/fonts/Montserrat-ExtraLightItalic.ttf"; sourceTree = ""; };
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = RangerTreejerV2/SplashScreen.storyboard; sourceTree = ""; };
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; };
+ BCE273E800204FEBAE424286 /* Montserrat-ExtraLight.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-ExtraLight.ttf"; path = "../assets/fonts/Montserrat-ExtraLight.ttf"; sourceTree = ""; };
CE869ED829BFC68400FA25C0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
D754DE6D24D7D074F1CD6A68 /* Pods_RangerTreejerV2.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RangerTreejerV2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ DD1EFA37E0344136AC8F8632 /* Montserrat-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Light.ttf"; path = "../assets/fonts/Montserrat-Light.ttf"; sourceTree = ""; };
+ E54846D5EEED498EB70DA8EA /* Montserrat-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Regular.ttf"; path = "../assets/fonts/Montserrat-Regular.ttf"; sourceTree = ""; };
+ E76C73C35D77489B85206C8F /* Montserrat-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-ThinItalic.ttf"; path = "../assets/fonts/Montserrat-ThinItalic.ttf"; sourceTree = ""; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ FA31E819FD8E416284DBE4CE /* Montserrat-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-MediumItalic.ttf"; path = "../assets/fonts/Montserrat-MediumItalic.ttf"; sourceTree = ""; };
FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-RangerTreejerV2/ExpoModulesProvider.swift"; sourceTree = ""; };
/* End PBXFileReference section */
@@ -74,6 +112,33 @@
name = Frameworks;
sourceTree = "";
};
+ 344E1280B06E4EAC989BE1E9 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 01BC3A9DCF6942F9A61D49A9 /* Montserrat-Black.ttf */,
+ 683CA12F042D460787654D96 /* Montserrat-BlackItalic.ttf */,
+ 4558C5B39D374063AA8A0A72 /* Montserrat-Bold.ttf */,
+ 429B867D6838441792C0AE77 /* Montserrat-BoldItalic.ttf */,
+ 21442F84E30249E3B2817EA6 /* Montserrat-ExtraBold.ttf */,
+ 31FA405151D149B294482E3C /* Montserrat-ExtraBoldItalic.ttf */,
+ BCE273E800204FEBAE424286 /* Montserrat-ExtraLight.ttf */,
+ A12EF525B91540158D3D7489 /* Montserrat-ExtraLightItalic.ttf */,
+ 397B1DD4D7F74DCDA40F5731 /* Montserrat-Italic.ttf */,
+ DD1EFA37E0344136AC8F8632 /* Montserrat-Light.ttf */,
+ 6C087CB598454C199C0204F7 /* Montserrat-LightItalic.ttf */,
+ 4080A1B9CC9A49A3969B0EC6 /* Montserrat-Medium.ttf */,
+ FA31E819FD8E416284DBE4CE /* Montserrat-MediumItalic.ttf */,
+ E54846D5EEED498EB70DA8EA /* Montserrat-Regular.ttf */,
+ 7AED6C7CBE6048E896528494 /* Montserrat-SemiBold.ttf */,
+ 61210969F5D24940AD2F91E0 /* Montserrat-SemiBoldItalic.ttf */,
+ 82BD9E6357C4495B8F3CF150 /* Montserrat-Thin.ttf */,
+ E76C73C35D77489B85206C8F /* Montserrat-ThinItalic.ttf */,
+ 40EBD94655B44878BF051DEE /* README.md */,
+ );
+ name = Resources;
+ path = "";
+ sourceTree = "";
+ };
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
@@ -91,6 +156,7 @@
2D16E6871FA4F8E400B85C8A /* Frameworks */,
D65327D7A22EEC0BE12398D9 /* Pods */,
D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
+ 344E1280B06E4EAC989BE1E9 /* Resources */,
);
indentWidth = 2;
sourceTree = "";
@@ -205,6 +271,25 @@
CE869ED929BFC68500FA25C0 /* GoogleService-Info.plist in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
+ 31E90C6A3129438F90AF50AB /* Montserrat-Black.ttf in Resources */,
+ 74B3A13029704D4FB1246A71 /* Montserrat-BlackItalic.ttf in Resources */,
+ 3043BA42AC894D9A890AAF99 /* Montserrat-Bold.ttf in Resources */,
+ 7C8E38B9F752479D9C3B515C /* Montserrat-BoldItalic.ttf in Resources */,
+ FBD5D71593584632B0368825 /* Montserrat-ExtraBold.ttf in Resources */,
+ DF6F7E956307407FA04F582C /* Montserrat-ExtraBoldItalic.ttf in Resources */,
+ 0082A060F21044738856DF9D /* Montserrat-ExtraLight.ttf in Resources */,
+ 9D942B32141E4016A84BC493 /* Montserrat-ExtraLightItalic.ttf in Resources */,
+ DB2770F60631479E9053E667 /* Montserrat-Italic.ttf in Resources */,
+ BA6B05BF43E84E86A79A0510 /* Montserrat-Light.ttf in Resources */,
+ 6EC2FE27CC1F4B949BDE1CEA /* Montserrat-LightItalic.ttf in Resources */,
+ B8BC3F7262C64AE98E16E2FC /* Montserrat-Medium.ttf in Resources */,
+ 8F9446A07F064B74B1C97B72 /* Montserrat-MediumItalic.ttf in Resources */,
+ F6A864684BF2472D974C2D51 /* Montserrat-Regular.ttf in Resources */,
+ 768B12D31D38462D988ED025 /* Montserrat-SemiBold.ttf in Resources */,
+ DE1330DC14A445A8A667B695 /* Montserrat-SemiBoldItalic.ttf in Resources */,
+ D23256E2B9B6464091DEF13B /* Montserrat-Thin.ttf in Resources */,
+ 2AE0A8E9BA2440EEB3D44CB5 /* Montserrat-ThinItalic.ttf in Resources */,
+ 1B15794069034A799BC1C8AD /* README.md in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/RangerTreejerV2/Info.plist b/ios/RangerTreejerV2/Info.plist
index 2eafe826..75726c5a 100644
--- a/ios/RangerTreejerV2/Info.plist
+++ b/ios/RangerTreejerV2/Info.plist
@@ -1,97 +1,110 @@
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleDisplayName
- Treejer Ranger
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- $(PRODUCT_BUNDLE_PACKAGE_TYPE)
- CFBundleShortVersionString
- 1.0.0
- CFBundleSignature
- ????
- CFBundleURLTypes
-
-
- CFBundleURLSchemes
-
- com.treejer.ranger
-
-
-
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
-
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
-
- UILaunchStoryboardName
- SplashScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UIRequiresFullScreen
-
- UIStatusBarStyle
- UIStatusBarStyleDefault
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIUserInterfaceStyle
- Light
- UIViewControllerBasedStatusBarAppearance
-
- UIAppFonts
-
- Montserrat-Black.ttf
- Montserrat-BlackItalic.ttf
- Montserrat-Bold.ttf
- Montserrat-BoldItalic.ttf
- Montserrat-ExtraBold.ttf
- Montserrat-ExtraBoldItalic.ttf
- Montserrat-ExtraLight.ttf
- Montserrat-ExtraLightItalic.ttf
- Montserrat-Italic.ttf
- Montserrat-Light.ttf
- Montserrat-LightItalic.ttf
- Montserrat-Medium.ttf
- Montserrat-MediumItalic.ttf
- Montserrat-Regular.ttf
- Montserrat-SemiBold.ttf
- Montserrat-SemiBoldItalic.ttf
- Montserrat-Thin.ttf
- Montserrat-ThinItalic.ttf
-
-
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Treejer Ranger
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ com.treejer.ranger
+
+
+
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSExceptionDomains
+
+ localhost
+
+ NSExceptionAllowsInsecureHTTPLoads
+
+
+
+
+ UIAppFonts
+
+ Montserrat-Black.ttf
+ Montserrat-BlackItalic.ttf
+ Montserrat-Bold.ttf
+ Montserrat-BoldItalic.ttf
+ Montserrat-ExtraBold.ttf
+ Montserrat-ExtraBoldItalic.ttf
+ Montserrat-ExtraLight.ttf
+ Montserrat-ExtraLightItalic.ttf
+ Montserrat-Italic.ttf
+ Montserrat-Light.ttf
+ Montserrat-LightItalic.ttf
+ Montserrat-Medium.ttf
+ Montserrat-MediumItalic.ttf
+ Montserrat-Regular.ttf
+ Montserrat-SemiBold.ttf
+ Montserrat-SemiBoldItalic.ttf
+ Montserrat-Thin.ttf
+ Montserrat-ThinItalic.ttf
+
+ UILaunchStoryboardName
+ SplashScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UIRequiresFullScreen
+
+ UIStatusBarStyle
+ UIStatusBarStyleDefault
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
+ UIUserInterfaceStyle
+ Light
+ UIViewControllerBasedStatusBarAppearance
+
+ NSCameraUsageDescription
+ Treejer Ranger
+ NSLocationAlwaysAndWhenInUseUsageDescription
+ Treejer Ranger
+ NSLocationAlwaysUsageDescription
+ Treejer Ranger
+ NSLocationWhenInUseUsageDescription
+ Treejer Ranger
+ NSPhotoLibraryUsageDescription
+ Treejer Ranger
+ NSPhotoLibraryAddUsageDescription
+ Treejer Ranger
+
diff --git a/ios/link-assets-manifest.json b/ios/link-assets-manifest.json
new file mode 100644
index 00000000..272ba5af
--- /dev/null
+++ b/ios/link-assets-manifest.json
@@ -0,0 +1,81 @@
+{
+ "migIndex": 1,
+ "data": [
+ {
+ "path": "assets/fonts/Montserrat-Black.ttf",
+ "sha1": "96d03479269d1ba7a3e38f4b64ff87ead267c998"
+ },
+ {
+ "path": "assets/fonts/Montserrat-BlackItalic.ttf",
+ "sha1": "6e84efcb6bf01c47102d6e9f0dbe5958e74c9f20"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Bold.ttf",
+ "sha1": "3a54407a2b26ff4718708a4726b10cb070d16534"
+ },
+ {
+ "path": "assets/fonts/Montserrat-BoldItalic.ttf",
+ "sha1": "6acf078ad5e1b77e6d68b8ff0cde39d81b9f057c"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraBold.ttf",
+ "sha1": "4b5c27dcf59df165606efa247190c0bfa3c02ff0"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraBoldItalic.ttf",
+ "sha1": "28423e53b60316c09f468055ca8c1d27c06ab45b"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraLight.ttf",
+ "sha1": "fe3c849af6231af6c5c43d1045f2011bf683f317"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ExtraLightItalic.ttf",
+ "sha1": "40d3231d668844dab24536fa0c380bdc2311a992"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Italic.ttf",
+ "sha1": "798c701450f6bc08217f73c1ac569100cddc2947"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Light.ttf",
+ "sha1": "83879cec4c934d446eca63aa5cfedcebfd60d610"
+ },
+ {
+ "path": "assets/fonts/Montserrat-LightItalic.ttf",
+ "sha1": "659632ad8a33d96e6a00319d7b0c020e9cc6cc5b"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Medium.ttf",
+ "sha1": "65a98832079c4d2c67f3acc4f4ce2de630fe6cb0"
+ },
+ {
+ "path": "assets/fonts/Montserrat-MediumItalic.ttf",
+ "sha1": "ceadac9926836d5fc0ee14f94567f0ea25979fa2"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Regular.ttf",
+ "sha1": "d25b35242deb1c6ff888b8162ca2aacc356d3899"
+ },
+ {
+ "path": "assets/fonts/Montserrat-SemiBold.ttf",
+ "sha1": "f829de4c176fb2ccf5e33360920f48de6794434e"
+ },
+ {
+ "path": "assets/fonts/Montserrat-SemiBoldItalic.ttf",
+ "sha1": "3c2759411b32ad6779aba08e4c09ed1b3c0bc4d4"
+ },
+ {
+ "path": "assets/fonts/Montserrat-Thin.ttf",
+ "sha1": "1d00ff2f5bc9331aa6e75b5a82dd698976615dc4"
+ },
+ {
+ "path": "assets/fonts/Montserrat-ThinItalic.ttf",
+ "sha1": "ae19fb168e043e6408692c4bc50dd0aab76fdc22"
+ },
+ {
+ "path": "assets/fonts/README.md",
+ "sha1": "e40451f9fc81b083aec8b0df5d69f2c15c932a7e"
+ }
+ ]
+}
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 00000000..8ce30f82
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,15 @@
+module.exports = {
+ preset: 'jest-expo',
+ // setupFilesAfterEnv: ['@rnmapbox/maps/setup-jest'],
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
+ setupFiles: ['./jest.setup.js'],
+ transformIgnorePatterns: [
+ 'node_modules/(?!(jest-)?@?react-native|@react-native-community|@react-navigation)',
+ // 'node_modules/(?!(...|@rnmapbox))',
+ // 'node_modules/?!(@react-navigation)',
+ // 'node_modules/?!(react-native-gesture-handler)',
+ ],
+ testPathIgnorePatterns: ['node_modules/(?!(react-native|react-native-button)/)', './web-build/'],
+ extensionsToTreatAsEsm: [],
+ transform: {},
+};
diff --git a/jest.setup.js b/jest.setup.js
index 5ab4ba5e..bdae4306 100644
--- a/jest.setup.js
+++ b/jest.setup.js
@@ -1,7 +1,259 @@
+import {Text, View} from 'react-native';
+
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock';
+import 'react-native-gesture-handler/jestSetup';
jest.mock('react-native-device-info', () => mockRNDeviceInfo);
+jest.mock('react-native-reanimated', () => {
+ const Reanimated = require('react-native-reanimated/mock');
+
+ // The mock for `call` immediately calls the callback which is incorrect
+ // So we override it with a no-op
+ Reanimated.default.call = () => {};
+
+ return Reanimated;
+});
+
+global.toast = {
+ show: jest.fn(),
+};
+
+jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
jest.mock('@react-native-async-storage/async-storage', () =>
require('@react-native-async-storage/async-storage/jest/async-storage-mock'),
);
+
+// jest.mock('@react-navigation/native', () => {
+// const actualNav = jest.requireActual('@react-navigation/native');
+// return {
+// ...actualNav,
+// useNavigation: () => ({
+// navigate: jest.fn(),
+// dispatch: jest.fn(),
+// }),
+// };
+// });
+
+// jest.mock('@react-navigation/stack', () => {
+// return {
+// createAppContainer: jest.fn().mockReturnValue(function NavigationContainer(props) {
+// return null;
+// }),
+// createBottomTabNavigator: jest.fn(),
+// createDrawerNavigator: jest.fn(),
+// createMaterialTopTabNavigator: jest.fn(),
+// createStackNavigator: jest.fn(),
+// StackActions: {
+// push: jest.fn().mockImplementation(x => ({...x, type: 'Navigation/PUSH'})),
+// replace: jest.fn().mockImplementation(x => ({...x, type: 'Navigation/REPLACE'})),
+// },
+// NavigationActions: {
+// navigate: jest.fn().mockImplementation(x => x),
+// },
+// };
+// });
+
+jest.mock('@react-navigation/native/lib/commonjs/useLinking.native', () => ({
+ default: () => ({getInitialState: {then: jest.fn()}}),
+ __esModule: true,
+}));
+
+// jest.mock('react-native-gesture-handler', () => {});
+
+jest.mock('react-native-permissions', () => {
+ return require('react-native-permissions/mock');
+});
+
+jest.mock('react-native-geolocation-service', () => {
+ return {
+ watchPosition: jest.fn(),
+ clearWatch: jest.fn(),
+ getCurrentPosition: jest.fn(),
+ };
+});
+
+jest.mock('@react-native-firebase/analytics', () => {});
+
+const Icon = testProp => ;
+
+jest.mock('react-native-vector-icons/FontAwesome5', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/FontAwesome', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/Feather', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/MaterialIcons', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/Octicons', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/Ionicons', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/AntDesign', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/MaterialCommunityIcons', () => {
+ return Icon;
+});
+jest.mock('react-native-vector-icons/Entypo', () => {
+ return Icon;
+});
+
+jest.mock('@magic-sdk/react-native-bare', () => {
+ return {
+ Magic: jest.fn(),
+ };
+});
+
+jest.mock('@magic-ext/react-native-bare-oauth', () => {
+ return {
+ OAuthExtension: jest.fn(),
+ };
+});
+
+jest.mock('web3', () => {
+ return function notJestFn() {
+ return {
+ eth: {
+ Contract: jest.fn(),
+ },
+ utils: {
+ fromWei: str => str,
+ },
+ };
+ };
+});
+
+// jest.mock('@magic-ext/react-native-oauth', () => {
+// return {
+// OAuthExtension: jest.fn(),
+// };
+// });
+
+jest.mock('@react-native-community/netinfo', () => {
+ return {
+ fetch: () =>
+ new Promise(resolve => {
+ resolve({
+ isConnected: true,
+ isInternetReachable: true,
+ });
+ }),
+ useNetInfo: () => ({
+ isConnected: true,
+ isInternetReachable: true,
+ }),
+ };
+});
+jest.mock('react-native-image-crop-picker', () => {
+ return {
+ Image: jest.fn(),
+ Options: jest.fn(),
+ openPicker: jest.fn(),
+ openLibrary: jest.fn(),
+ };
+});
+
+jest.mock('@rnmapbox/maps', () => {
+ return {
+ setAccessToken: jest.fn(),
+ setWellKnownTileServer: jest.fn(),
+ MapView: TransComponent,
+ Camera: TransComponent,
+ UserLocation: TransComponent,
+ offlineManager: {createPack: ({name, styleURl, minZoom, maxZoom, bounds}, fn, fn2) => {}},
+ };
+});
+jest.mock('react-native-snap-carousel', () => {});
+jest.mock('@react-native-clipboard/clipboard', () => {});
+
+jest.mock('expo-barcode-scanner', () => {
+ return {
+ BarCodeScanner: jest.fn(),
+ };
+});
+
+const TransComponent = testProp => ;
+
+jest.mock('react-i18next', () => ({
+ // this mock makes sure any components using the translate hook can use it without a warning being shown
+ useTranslation: () => {
+ return {
+ t: str => str,
+ };
+ },
+ Trans: TransComponent,
+}));
+
+jest.mock('i18next', () => ({
+ t: str => str,
+ use: jest.fn(() => {
+ return {
+ init: jest.fn(),
+ };
+ }),
+}));
+
+jest.mock('redux-persist', () => {
+ const real = jest.requireActual('redux-persist');
+ return {
+ ...real,
+ persistReducer: jest.fn().mockImplementation((config, reducers) => reducers),
+ };
+});
+
+jest.mock('./src/utilities/hooks/useTreeUpdateInterval', () => {
+ return {
+ useTreeUpdateInterval: () => 200,
+ };
+});
+
+jest.mock('./src/utilities/helpers/IPFS', () => {
+ return {
+ upload: (url, uri) =>
+ new Promise((resolve, reject) => {
+ resolve({Hash: 'https://www.file.com'});
+ }),
+ getHttpDownloadUrl: () => 'https://www.file.com',
+ uploadContent: () =>
+ new Promise((resolve, reject) => {
+ resolve({Hash: 'HASH'});
+ }),
+ };
+});
+
+jest.mock('./src/utilities/helpers/submitTree', () => {
+ const actualImports = jest.requireActual('./src/utilities/helpers/submitTree');
+ return {
+ ...actualImports,
+ photoToUpload: file => {
+ return 'storage://file';
+ },
+ };
+});
+
+jest.mock('./src/screens/GreenBlock/screens/TreeDetails/TreePhotos', () => {
+ return {
+ TreePhotos: Icon,
+ };
+});
+
+jest.mock('./src/utilities/helpers/photoToBase64', () => {
+ return {
+ photoToBase64: () => 'base 64 generated',
+ };
+});
+
+jest.mock('./src/utilities/helpers/cropImage', () => {
+ return () => 1;
+});
+
+jest.mock('./src/components/WebImagePickerCropper/WebImagePickerCropper', () => {
+ return () => ;
+});
diff --git a/package.json b/package.json
index 6021edad..b8aba870 100644
--- a/package.json
+++ b/package.json
@@ -1,22 +1,30 @@
{
"name": "rangertreejerv2",
- "version": "1.0.0",
+ "version": "2.0.0-beta.2",
"main": "index",
"scripts": {
+ "native:start": "npx react-native start",
"start": "expo start --dev-client",
"android": "expo run:android",
+ "android:clean": "cd android && ./gradlew clean && cd ..",
+ "android:release": "yarn android:clean && cd android && ./gradlew assembleRelease && cd ..",
+ "android:restart": "rm -rf node_modules yarn.lock && yarn && yarn android:clean && yarn android",
"ios": "expo run:ios",
- "web": "expo start --web"
+ "web": "REACT_APP_WEB=true expo start --web",
+ "web:build": "rm -rf ./web-build && REACT_APP_WEB=true npx expo-cli build:web",
+ "code-gen": "yarn run graphql-typescript-definitions --schema-path 'build/schema.json' --schema-types-path 'src/data/schema' --custom-scalars '{\"Web3Result\": {\"name\": \"Record\"}, \"Any\": {\"name\": \"any\"}}'",
+ "test": "jest --coverage",
+ "ios-permissions": "npx react-native setup-ios-permissions && cd ios && pod install && cd .."
},
"dependencies": {
"@apollo/client": "3.7.10",
- "@babel/plugin-proposal-export-namespace-from": "7.18.9",
"@biconomy/mexa": "2.0.38",
"@expo/config-plugins": "6.0.1",
"@expo/webpack-config": "18.0.1",
"@hookform/resolvers": "2.9.7",
- "@magic-ext/react-native-oauth": "7.0.0",
- "@magic-sdk/react-native": "14.0.0",
+ "@magic-ext/oauth": "13.1.0",
+ "@magic-ext/react-native-bare-oauth": "14.1.0",
+ "@magic-sdk/react-native-bare": "20.1.0",
"@react-native-async-storage/async-storage": "1.17.11",
"@react-native-clipboard/clipboard": "1.11.2",
"@react-native-community/netinfo": "9.3.7",
@@ -27,8 +35,8 @@
"@react-navigation/native": "6.0.8",
"@react-navigation/native-stack": "6.5.0",
"@react-navigation/stack": "6.1.1",
- "@rnmapbox/maps": "10.0.0-beta.76",
- "@shopify/flash-list": "1.4.1",
+ "@rnmapbox/maps": "10.0.0-beta.64",
+ "@shopify/flash-list": "1.4.3",
"apollo-link-ethereum": "0.1.3",
"apollo-link-ethereum-resolver-web3js": "0.1.3",
"apollo-link-rest": "0.9.0",
@@ -40,9 +48,11 @@
"expo-status-bar": "1.4.4",
"graphql": "16.6.0",
"humanize-duration": "3.27.1",
- "i18next": "21.6.11",
+ "i18next": "22.4.13",
+ "jest-expo": "^48.0.2",
+ "libphonenumber-js": "^1.10.34",
"lodash": "4.17.21",
- "magic-sdk": "13.6.0",
+ "magic-sdk": "19.1.0",
"mapbox-gl": "2.7.0",
"moment": "2.29.4",
"node-libs-browser": "2.2.1",
@@ -52,15 +62,16 @@
"react-dom": "18.2.0",
"react-easy-crop": "4.1.4",
"react-hook-form": "7.35.0",
- "react-i18next": "11.15.4",
- "react-js-pull-to-refresh": "1.2.3",
+ "react-i18next": "12.2.0",
+ "react-js-pull-to-refresh": "1.3.0",
"react-loading-skeleton": "3.1.0",
"react-mapbox-gl": "5.1.1",
- "react-native": "0.71.4",
+ "react-native": "0.71.8",
"react-native-big-list": "1.6.0",
"react-native-country-picker-modal": "2.0.0",
"react-native-crypto": "2.2.0",
"react-native-device-info": "10.4.0",
+ "react-native-drop-shadow": "0.0.6",
"react-native-fs": "2.20.0",
"react-native-geolocation-service": "5.3.1",
"react-native-gesture-handler": "^2.9.0",
@@ -69,7 +80,8 @@
"react-native-keyboard-aware-scroll-view": "0.9.5",
"react-native-level-fs": "3.0.1",
"react-native-linear-gradient": "2.6.2",
- "react-native-permissions": "3.7.3",
+ "react-native-modal": "^13.0.1",
+ "react-native-permissions": "3.8.0",
"react-native-phone-number-input": "2.1.0",
"react-native-reanimated": "3.0.2",
"react-native-safe-area-context": "4.5.0",
@@ -97,6 +109,7 @@
"web3-core": "1.8.2",
"web3-eth-contract": "1.8.2",
"webpack": "5.76.1",
+ "webpack-dev-server": "^4.13.2",
"workbox-background-sync": "6.5.3",
"workbox-broadcast-update": "6.5.3",
"workbox-cacheable-response": "6.5.3",
@@ -114,11 +127,16 @@
},
"devDependencies": {
"@babel/core": "7.21.0",
+ "@babel/plugin-proposal-class-properties": "7.18.6",
+ "@babel/plugin-proposal-export-namespace-from": "7.18.9",
+ "@babel/plugin-proposal-private-methods": "7.18.6",
"@babel/preset-env": "7.20.2",
"@babel/preset-typescript": "7.21.0",
"@babel/runtime": "7.20.0",
"@react-native-community/eslint-config": "3.2.0",
"@shopify/eslint-plugin": "40.5.0",
+ "@testing-library/react-hooks": "^8.0.1",
+ "@testing-library/react-native": "^12.0.1",
"@tsconfig/react-native": "2.0.3",
"@types/google-libphonenumber": "7.4.23",
"@types/jest": "29.2.1",
@@ -137,12 +155,12 @@
"babel-plugin-inline-dotenv": "1.6.0",
"babel-plugin-module-resolver": "4.1.0",
"babel-preset-expo": "9.3.0",
- "eslint": "8.19.0",
- "eslint-plugin-unused-imports": "1.1.5",
+ "eslint": "8.38.0",
+ "eslint-plugin-unused-imports": "2.0.0",
"graphql-typescript-definitions": "0.24.2",
"invariant": "2.2.4",
"jest": "29.2.1",
- "metro-react-native-babel-preset": "0.73.8",
+ "metro-react-native-babel-preset": "^0.76.0",
"prettier": "2.8.4",
"react-test-renderer": "18.2.0",
"ts-invariant": "0.9.4",
@@ -156,26 +174,6 @@
"@types/react-dom": "18",
"graphql": "16"
},
- "jest": {
- "preset": "react-native",
- "moduleFileExtensions": [
- "ts",
- "tsx",
- "js",
- "jsx",
- "json",
- "node"
- ],
- "setupFiles": [
- "./jest.setup.js"
- ],
- "testPathIgnorePatterns": [
- "node_modules/(?!(react-native|react-native-button)/)",
- "./web-build/"
- ],
- "extensionsToTreatAsEsm": [],
- "transform": {}
- },
"reactNativePermissionsIOS": [
"Camera",
"LocationAccuracy",
diff --git a/react-native.config.js b/react-native.config.js
index 096ef3ac..a98caa94 100644
--- a/react-native.config.js
+++ b/react-native.config.js
@@ -5,6 +5,18 @@ module.exports = {
},
assets: ['./assets/fonts/'],
dependencies: {
+ 'react-js-pull-to-refresh': {
+ platforms: {
+ android: null,
+ ios: null,
+ },
+ },
+ '@magic-ext/oauth': {
+ platforms: {
+ android: null,
+ ios: null,
+ },
+ },
'magic-sdk': {
platforms: {
android: null,
diff --git a/src/App.tsx b/src/App.tsx
index 209d3f81..8f56fa0c 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,18 +1,14 @@
-// @ts-ignore
import React from 'react';
import {I18nextProvider} from 'react-i18next';
-import {useInitialDeepLinking} from 'utilities/hooks/useDeepLinking';
+import {GestureHandlerRootView} from 'react-native-gesture-handler';
import {Provider} from 'react-redux';
-import {persistor, store} from 'ranger-redux/store';
import {PersistGate} from 'redux-persist/integration/react';
-import {InitNavigation} from 'navigation/InitNavigation';
import {SafeAreaProvider} from 'react-native-safe-area-context';
-import MapboxGL from '@rnmapbox/maps';
-import {mapboxPrivateToken} from 'services/config';
-import {i18next} from './localization';
-import {GestureHandlerRootView} from 'react-native-gesture-handler';
-MapboxGL.setAccessToken(mapboxPrivateToken);
+import {useInitialDeepLinking} from 'utilities/hooks/useDeepLinking';
+import {persistor, store} from 'ranger-redux/store';
+import {InitNavigation} from 'navigation/InitNavigation';
+import {i18next} from './localization';
export default function App() {
useInitialDeepLinking();
@@ -21,7 +17,6 @@ export default function App() {
- {/* @ts-ignore */}
diff --git a/src/App.web.tsx b/src/App.web.tsx
index 69d344c1..1be80c8c 100644
--- a/src/App.web.tsx
+++ b/src/App.web.tsx
@@ -1,14 +1,14 @@
-// @ts-ignore
-import React, {useEffect} from 'react';
-import {i18next} from './src/localization';
-import {I18nextProvider} from 'react-i18next';
-import {useInitialDeepLinking} from './src/utilities/hooks/useDeepLinking';
+import React from 'react';
import {Provider} from 'react-redux';
-import {persistor, store} from './src/redux/store';
+import {I18nextProvider} from 'react-i18next';
import {PersistGate} from 'redux-persist/integration/react';
-import {InitNavigation} from './src/navigation/InitNavigation';
import {SafeAreaProvider} from 'react-native-safe-area-context';
+import {i18next} from './localization';
+import {persistor, store} from 'ranger-redux/store';
+import {InitNavigation} from 'navigation/InitNavigation';
+import {useInitialDeepLinking} from 'utilities/hooks/useDeepLinking';
+
export default function App() {
useInitialDeepLinking();
diff --git a/src/components/Activity/ActivityItem.tsx b/src/components/Activity/ActivityItem.tsx
index 0a78cfc4..57db6ddc 100644
--- a/src/components/Activity/ActivityItem.tsx
+++ b/src/components/Activity/ActivityItem.tsx
@@ -1,16 +1,16 @@
import React, {useCallback, useEffect, useMemo, useState} from 'react';
-import {Image, Linking, StyleSheet, Text, TouchableOpacity, View} from 'react-native';
+import {Image, Linking, Modal, StyleSheet, Text, TouchableOpacity, View} from 'react-native';
import {TFunction, useTranslation} from 'react-i18next';
import FIcon from 'react-native-vector-icons/Feather';
import IIcon from 'react-native-vector-icons/Ionicons';
import Clipboard from '@react-native-clipboard/clipboard';
-import {useToast} from 'react-native-toast-notifications';
import {InAppBrowser} from 'react-native-inappbrowser-reborn';
import moment from 'moment';
import {Hr} from 'components/Common/Hr';
import Spacer from 'components/Spacer';
import {colors} from 'constants/values';
+import {RenderIf} from 'components/Common/RenderIf';
import globalStyles from 'constants/styles';
import {AlertMode} from 'utilities/helpers/alert';
import {wrapUpString} from 'utilities/helpers/shortenedString';
@@ -50,17 +50,20 @@ export enum ContractTypes {
export type TActivityItemProps = {
activity: GetUserActivitiesQueryPartialData.AddressHistories;
isLast: boolean;
+ inModal?: boolean;
+ onClose?: () => void;
};
export function ActivityItem(props: TActivityItemProps) {
- const {activity, isLast} = props;
+ const {activity, isLast, inModal, onClose} = props;
- const [isOpen, setIsOpen] = useState(false);
+ const [isOpen, setIsOpen] = useState(inModal || false);
+ const [openModal, setOpenModal] = useState(false);
const {t} = useTranslation();
useEffect(() => {
- setIsOpen(false);
+ setIsOpen(inModal || false);
}, [props]);
const AIcon = ActivityStatus.BalanceWithdrew === activity.event ? IIcon : FIcon;
@@ -135,59 +138,72 @@ export function ActivityItem(props: TActivityItemProps) {
}, [activity]);
const handleOpenDetails = useCallback(() => {
- setIsOpen(prevIsOpen => !prevIsOpen);
+ if (isWeb()) {
+ setOpenModal(prevOpenModal => !prevOpenModal);
+ } else {
+ setIsOpen(prevIsOpen => !prevIsOpen);
+ }
}, []);
return (
-
-
-
-
- {isRelatedToTree ? (
-
-
-
- ) : (
-
-
-
- )}
-
-
-
- {title}
-
- {date}
+ <>
+
+ setOpenModal(false)}>
+
+ setOpenModal(false)} />
+
+
+
+
+
+
+
+ {isRelatedToTree ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+
+ {title}
+
+ {date}
+
+
+ {t(`activities.${activity.event}`)}
+
+
+
-
- {t(`activities.${activity.event}`)}
-
-
-
+ {isOpen && (
+ <>
+
+
+
+
+ >
+ )}
- {isOpen && (
- <>
-
-
-
-
- >
- )}
+
+ {!isOpen && !isLast &&
}
-
- {!isOpen && !isLast &&
}
-
+ >
);
}
@@ -199,15 +215,13 @@ export type TMoreDetailProps = {
export function MoreDetail(props: TMoreDetailProps) {
const {t, txHash} = props;
- const toast = useToast();
-
const {explorerUrl} = useConfig();
const handleCopy = useCallback(() => {
if (txHash) {
Clipboard.setString(txHash);
}
- toast.show('myProfile.copied', {type: AlertMode.Success, translate: true});
+ toast?.show('myProfile.copied', {type: AlertMode.Success, translate: true});
}, [toast, txHash]);
const handleOpenInBrowser = useCallback(async () => {
@@ -254,29 +268,30 @@ export function MoreDetail(props: TMoreDetailProps) {
{t('activities.receipt')}
-
- {wrapUpString(`${explorerUrl}/tx/${txHash}`, 20, 3)}
-
+
+
+ {wrapUpString(`${explorerUrl}/tx/${txHash}`, 20, 3)}
+
+
- {/**/}
- {/* console.log('show more details pressed')}>*/}
- {/* {t('activities.showMore')}*/}
- {/**/}
);
}
const styles = StyleSheet.create({
- // open: {
- // marginTop: -9,
- // marginBottom: 24,
- // },
container: {
width: 358,
padding: 8,
backgroundColor: colors.khaki,
borderRadius: 10,
},
+ modalContainer: {
+ position: 'relative',
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.modalBg,
+ },
tree: {
width: 25,
height: 25,
diff --git a/src/components/Activity/ActivityList.tsx b/src/components/Activity/ActivityList.tsx
index c9799af7..2f924ada 100644
--- a/src/components/Activity/ActivityList.tsx
+++ b/src/components/Activity/ActivityList.tsx
@@ -1,5 +1,5 @@
-import React, {useCallback} from 'react';
-import {ActivityIndicator, StyleSheet, Text, View} from 'react-native';
+import React, {useCallback, forwardRef} from 'react';
+import {StyleSheet, Text, View} from 'react-native';
import Icon from 'react-native-vector-icons/AntDesign';
import {useTranslation} from 'react-i18next';
import {FlashList, ListRenderItemInfo} from '@shopify/flash-list';
@@ -9,21 +9,23 @@ import {colors} from 'constants/values';
import {GetUserActivitiesQueryPartialData} from 'screens/Profile/screens/Activity/graphQl/getUserActivites.graphql';
import Spacer from 'components/Spacer';
import {ActivityItem, ActivityStatus} from 'components/Activity/ActivityItem';
-import {isWeb} from 'utilities/helpers/web';
-import RefreshControl from 'components/RefreshControl/RefreshControl';
+import {OptimizedList} from 'components/OptimizedList/OptimizedList';
export type TActivityListProps = {
- ref: React.RefObject>;
wallet: string;
filters: ActivityStatus[];
activities: GetUserActivitiesQueryPartialData.AddressHistories[] | null;
refreshing: boolean;
- onRefresh: () => void;
+ loading: boolean;
+ onRefresh: () => Promise;
onLoadMore: () => void;
};
-export function ActivityList(props: TActivityListProps) {
- const {activities, refreshing, ref, onRefresh, onLoadMore} = props;
+export const ActivityList = forwardRef<
+ FlashList,
+ TActivityListProps
+>((props, ref) => {
+ const {activities, refreshing, loading, onRefresh, onLoadMore} = props;
const {t} = useTranslation();
@@ -52,24 +54,23 @@ export function ActivityList(props: TActivityListProps) {
}, [activities]);
return (
-
-
+
+
ref={ref}
- refreshing
- onRefresh={onRefresh}
+ refetching={refreshing}
+ loading={loading}
+ onRefetch={onRefresh}
data={activities}
renderItem={renderItem}
- estimatedItemSize={100}
+ estimatedItemSize={78}
ListEmptyComponent={emptyList}
- showsVerticalScrollIndicator={false}
- refreshControl={isWeb() ? undefined : }
- onEndReachedThreshold={0.1}
onEndReached={onLoadMore}
keyExtractor={item => (item.id as string).toString()}
+ separate={false}
/>
);
-}
+});
const styles = StyleSheet.create({
container: {
diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx
index 84abe383..096e2657 100644
--- a/src/components/Button/Button.tsx
+++ b/src/components/Button/Button.tsx
@@ -14,6 +14,7 @@ import {
} from 'react-native';
export type TButtonProps = {
+ testID?: string;
textAlign?: string;
size?: 'sm' | 'lg';
iconPlace?: 'left' | 'right';
@@ -47,11 +48,13 @@ function Button({
textStyle = null,
loading = false,
onPress,
+ testID,
...props
}: TButtonProps) {
const Component = (disabled ? View : TouchableOpacity) as React.ComponentType;
return (
{React.createElement(icon, {
color: styles[`${variant}Text`].color ?? 'white',
+ testID: 'icon-left',
})}
)}
{!round && Boolean(caption) ? (
{React.createElement(icon, {
color: styles[`${variant}Text`].color ?? 'white',
+ testID: 'icon-right',
})}
)}
{loading && (
{
+ it('Button component should be defined', () => {
+ expect(Button).toBeDefined();
+ expect(typeof Button).toBe('function');
+ });
+
+ describe('elements/components should be defined', () => {
+ it('Button without icon', () => {
+ let getElementByTestId, queryElementByTestId;
+ const caption = 'Hello world';
+ const element = render(