mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-06-23 06:59:10 -04:00
Merge branch 'main' into mob-1186-stub-log-the-persisted-stuff-to-see-its-size
This commit is contained in:
@@ -3108,7 +3108,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/core
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNReanimated (4.1.6):
|
||||
- RNReanimated (4.2.2):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -3135,11 +3135,11 @@ PODS:
|
||||
- ReactCodegen
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNReanimated/reanimated (= 4.1.6)
|
||||
- RNReanimated/reanimated (= 4.2.2)
|
||||
- RNWorklets
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNReanimated/reanimated (4.1.6):
|
||||
- RNReanimated/reanimated (4.2.2):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -3166,11 +3166,11 @@ PODS:
|
||||
- ReactCodegen
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNReanimated/reanimated/apple (= 4.1.6)
|
||||
- RNReanimated/reanimated/apple (= 4.2.2)
|
||||
- RNWorklets
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNReanimated/reanimated/apple (4.1.6):
|
||||
- RNReanimated/reanimated/apple (4.2.2):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -3372,7 +3372,7 @@ PODS:
|
||||
- ReactCommon/turbomodule/core
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNWorklets (0.5.2):
|
||||
- RNWorklets (0.7.4):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -3399,10 +3399,10 @@ PODS:
|
||||
- ReactCodegen
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNWorklets/worklets (= 0.5.2)
|
||||
- RNWorklets/worklets (= 0.7.4)
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNWorklets/worklets (0.5.2):
|
||||
- RNWorklets/worklets (0.7.4):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -3429,10 +3429,10 @@ PODS:
|
||||
- ReactCodegen
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- RNWorklets/worklets/apple (= 0.5.2)
|
||||
- RNWorklets/worklets/apple (= 0.7.4)
|
||||
- SocketRocket
|
||||
- Yoga
|
||||
- RNWorklets/worklets/apple (0.5.2):
|
||||
- RNWorklets/worklets/apple (0.7.4):
|
||||
- boost
|
||||
- DoubleConversion
|
||||
- fast_float
|
||||
@@ -4059,12 +4059,12 @@ SPEC CHECKSUMS:
|
||||
RNGoogleSignin: b126da02b9402311c8093e72b064a7e85d139921
|
||||
RNLocalize: d8ccb568b40c72c767714db3808ce66a1ecf444a
|
||||
RNPermissions: 79345e03d8bede3692368496ec89dcc4768585b5
|
||||
RNReanimated: 84b0ffbe148232bda35e2527d0b938a97a51c5e7
|
||||
RNReanimated: 372fdfc5e6abdf42bddf588e206d15aedf46121a
|
||||
RNScreens: 4f2aed147a2775017923789d8a0a2d377712ec2e
|
||||
RNShareMenu: 8871da57c9d3ed2b94d30c784d6f67d062e3b016
|
||||
RNStoreReview: 8f6061907efb6474757db004ee8faac728fd2ada
|
||||
RNSVG: f2979aa72b14050b9220415c19de398f9cec9aaf
|
||||
RNWorklets: 88b4f0eb7d19cbc07d19274ee66b15200e206d38
|
||||
RNWorklets: ca03ce776c15a592ef0700386071466810c41ea0
|
||||
SensitiveInfo: 09107b865dc23b4e9c0a61ec01385387bf3391a8
|
||||
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
|
||||
VisionCamera: 0044a94f7489f19e19d5938e97dfc36f4784af3c
|
||||
|
||||
257
package-lock.json
generated
257
package-lock.json
generated
@@ -33,12 +33,12 @@
|
||||
"@react-navigation/native": "^7.1.17",
|
||||
"@react-navigation/native-stack": "^7.3.25",
|
||||
"@realm/react": "^0.20.0",
|
||||
"@rozenite/metro": "^1.2.0",
|
||||
"@rozenite/mmkv-plugin": "^1.2.0",
|
||||
"@rozenite/network-activity-plugin": "^1.2.0",
|
||||
"@rozenite/react-navigation-plugin": "^1.3.0",
|
||||
"@rozenite/require-profiler-plugin": "^1.2.0",
|
||||
"@rozenite/tanstack-query-plugin": "^1.2.0",
|
||||
"@rozenite/metro": "^1.4.0",
|
||||
"@rozenite/mmkv-plugin": "^1.4.0",
|
||||
"@rozenite/network-activity-plugin": "^1.4.0",
|
||||
"@rozenite/react-navigation-plugin": "^1.4.0",
|
||||
"@rozenite/require-profiler-plugin": "^1.4.0",
|
||||
"@rozenite/tanstack-query-plugin": "^1.4.0",
|
||||
"@sayem314/react-native-keep-awake": "^1.3.1",
|
||||
"@shopify/flash-list": "^2.2.0",
|
||||
"@tanstack/react-query": "5.90.14",
|
||||
@@ -90,7 +90,7 @@
|
||||
"react-native-orientation-locker": "github:wonday/react-native-orientation-locker",
|
||||
"react-native-paper": "^5.12.3",
|
||||
"react-native-permissions": "^4.1.5",
|
||||
"react-native-reanimated": "~4.1.0",
|
||||
"react-native-reanimated": "^4.2.2",
|
||||
"react-native-reanimated-carousel": "^4.0.3",
|
||||
"react-native-render-html": "^6.3.4",
|
||||
"react-native-restart": "^0.0.27",
|
||||
@@ -105,7 +105,7 @@
|
||||
"react-native-vision-camera": "^4.7.3",
|
||||
"react-native-volume-manager": "^2.0.8",
|
||||
"react-native-webview": "^13.15.0",
|
||||
"react-native-worklets": "^0.5.0",
|
||||
"react-native-worklets": "^0.7.0",
|
||||
"react-native-worklets-core": "^1.6.2",
|
||||
"realm": "^20.2.0",
|
||||
"sanitize-html": "^2.13.0",
|
||||
@@ -219,9 +219,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz",
|
||||
"integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
|
||||
"integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.28.5",
|
||||
@@ -300,13 +300,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/generator": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz",
|
||||
"integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==",
|
||||
"version": "7.29.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
|
||||
"integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.28.6",
|
||||
"@babel/types": "^7.28.6",
|
||||
"@babel/parser": "^7.29.0",
|
||||
"@babel/types": "^7.29.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.12",
|
||||
"@jridgewell/trace-mapping": "^0.3.28",
|
||||
"jsesc": "^3.0.2"
|
||||
@@ -325,12 +325,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-annotate-as-pure": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz",
|
||||
"integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==",
|
||||
"version": "7.27.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
|
||||
"integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.27.1"
|
||||
"@babel/types": "^7.27.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -646,12 +646,12 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz",
|
||||
"integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
|
||||
"integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.28.6"
|
||||
"@babel/types": "^7.29.0"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
@@ -1158,17 +1158,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-classes": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz",
|
||||
"integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==",
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
|
||||
"integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.27.1",
|
||||
"@babel/helper-compilation-targets": "^7.27.1",
|
||||
"@babel/helper-annotate-as-pure": "^7.27.3",
|
||||
"@babel/helper-compilation-targets": "^7.27.2",
|
||||
"@babel/helper-globals": "^7.28.0",
|
||||
"@babel/helper-plugin-utils": "^7.27.1",
|
||||
"@babel/helper-replace-supers": "^7.27.1",
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"globals": "^11.1.0"
|
||||
"@babel/traverse": "^7.28.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -2264,17 +2264,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.27.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz",
|
||||
"integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
|
||||
"integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.27.5",
|
||||
"@babel/parser": "^7.27.7",
|
||||
"@babel/template": "^7.27.2",
|
||||
"@babel/types": "^7.27.7",
|
||||
"debug": "^4.3.1",
|
||||
"globals": "^11.1.0"
|
||||
"@babel/code-frame": "^7.29.0",
|
||||
"@babel/generator": "^7.29.0",
|
||||
"@babel/helper-globals": "^7.28.0",
|
||||
"@babel/parser": "^7.29.0",
|
||||
"@babel/template": "^7.28.6",
|
||||
"@babel/types": "^7.29.0",
|
||||
"debug": "^4.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -2300,9 +2301,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.28.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz",
|
||||
"integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
|
||||
"integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
@@ -6413,13 +6414,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/metro": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/metro/-/metro-1.2.0.tgz",
|
||||
"integrity": "sha512-SY9rZ0JtGsGSmJFC/thXoMcnYsP3DchVBdUGeLOtM7ZrBuHw3RlwtZYcKDMxGlAcufD4XUPkkhR53/hN/VmJXA==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/metro/-/metro-1.4.0.tgz",
|
||||
"integrity": "sha512-rcsmJ4paeU944IBiahOLc21o3YEUPuOMy3sNeYpyLvXnfbp64/sXf3jCYu5WzjojB1pjV8dXz64cqQJuAtp2pA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/middleware": "1.2.0",
|
||||
"@rozenite/tools": "1.2.0",
|
||||
"@rozenite/middleware": "1.4.0",
|
||||
"@rozenite/tools": "1.4.0",
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -6427,13 +6428,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/middleware": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/middleware/-/middleware-1.2.0.tgz",
|
||||
"integrity": "sha512-iMESes1NpLuPk05cQ9MMrkdqoGO977HkbyL/Pjn4IDPwDej3qIRzoI6htP1nogrn+SOI41FOJXOuP51TLo1BDw==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/middleware/-/middleware-1.4.0.tgz",
|
||||
"integrity": "sha512-1bxRpCqLkqeMtRpVDbhZnnTYanEM/ye43osuatqv/shgIssx+9ahH3ew21RiOtrE3KftpeC7DOm/7Ou4CeBZ5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/runtime": "1.2.0",
|
||||
"@rozenite/tools": "1.2.0",
|
||||
"@rozenite/runtime": "1.4.0",
|
||||
"@rozenite/tools": "1.4.0",
|
||||
"express": "^5.1.0",
|
||||
"semver": "^7.7.2",
|
||||
"tslib": "^2.3.0"
|
||||
@@ -6455,12 +6456,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/mmkv-plugin": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/mmkv-plugin/-/mmkv-plugin-1.2.0.tgz",
|
||||
"integrity": "sha512-1cIOUU8AMT7ITi3rRx2uVPksRF8YJnHpRCOku1cOmkW2mJSjgsqOrPk8M2GewCoZj45xXPbSBJKp5x7+4jzEmA==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/mmkv-plugin/-/mmkv-plugin-1.4.0.tgz",
|
||||
"integrity": "sha512-L1Gt8mT+dlIkiUOYc5jNmHu4Kz/KAVaUthHhmbWJks7MOtdDuCqWsk2xkFjjLg125WMN+824eeGIpBH+iKbZmw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/plugin-bridge": "1.2.0",
|
||||
"@rozenite/plugin-bridge": "1.4.0",
|
||||
"nanoevents": "^9.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -6470,12 +6471,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/network-activity-plugin": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/network-activity-plugin/-/network-activity-plugin-1.2.0.tgz",
|
||||
"integrity": "sha512-3l2+w8hXUMg+YmRadYdCoknpCH0IURYJh2fR0ZF5hx3F5cYbfXaJ7Dk31fmKuUA+iyPgaZvmvegbHbSoD1wjjQ==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/network-activity-plugin/-/network-activity-plugin-1.4.0.tgz",
|
||||
"integrity": "sha512-1BD+0PDmXI1cKayccRcn3JL/P3YUcsWaigdxV80/Gu1liSzlrBN6PvZ7EKLaVXua6sSM24coQg05rZ4bjTcaHg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/plugin-bridge": "1.2.0",
|
||||
"@rozenite/plugin-bridge": "1.4.0",
|
||||
"nanoevents": "^9.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -6488,9 +6489,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/plugin-bridge": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.2.0.tgz",
|
||||
"integrity": "sha512-f+rdHD9ACx52SWicVqxB0w82y2bCNk7xda6+EdtVMcchDyzMeqKJWso0BN3yruyB0zFxMeIxd3m7gPtPQPaOdg==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.4.0.tgz",
|
||||
"integrity": "sha512-Ug8DqdXmLvy4IXU6VfzXE02RLdnP5wBPmwxnuF8Lw/4WHAeNTazWVHvjyhVTSlTd4Ov25bTgEnHaDxABnGZ2cA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
@@ -6503,41 +6504,26 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/react-navigation-plugin": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/react-navigation-plugin/-/react-navigation-plugin-1.3.0.tgz",
|
||||
"integrity": "sha512-5FkW/xRNnW2THXA6ZraydhvmrxJuq2ejRQf77RZsW+pSoDRwT4CBj90cfP4ATS8A9lfG/I1S/yd5nnoQnjoKBQ==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/react-navigation-plugin/-/react-navigation-plugin-1.4.0.tgz",
|
||||
"integrity": "sha512-by9kHVz5T8CFaW373F3iglJXXHdqwjyLA2rhGUI3MyCSbpq34J3m7uhia4Mf9qAGGCrtH7QJa/opybzVpC7nyA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/plugin-bridge": "1.3.0",
|
||||
"@rozenite/plugin-bridge": "1.4.0",
|
||||
"fast-deep-equal": "^3.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@react-navigation/core": "^7.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/react-navigation-plugin/node_modules/@rozenite/plugin-bridge": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.3.0.tgz",
|
||||
"integrity": "sha512-OBo+glOyzpAFkhrUYKcpF+W+uHq8S3xRcelVniM2rwrqd7Xr+nfHU1lIJA4Phh6eSiLw4H6k3Uw5saSPis6a8g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=17"
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/require-profiler-plugin": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/require-profiler-plugin/-/require-profiler-plugin-1.2.0.tgz",
|
||||
"integrity": "sha512-4iAnSW3dwmTkzRCkBovfdSjnRU/BxquyTpe7hn0ihCL37YnxGCs5BmN/dsFj4euYdIE8YMjfO8eEsQO2y4TSwA==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/require-profiler-plugin/-/require-profiler-plugin-1.4.0.tgz",
|
||||
"integrity": "sha512-lgF7QBPJ+mDHMoSNvzmJ/IBMCw6qsM7IZnDHNG47bwSn6NTOyx/GHdBqqFsZHvo+BZgGlIh8I4uqc6r2N9vErQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/plugin-bridge": "1.2.0",
|
||||
"@rozenite/tools": "1.2.0",
|
||||
"@rozenite/plugin-bridge": "1.4.0",
|
||||
"@rozenite/tools": "1.4.0",
|
||||
"nanoevents": "^9.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -6546,9 +6532,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/runtime": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/runtime/-/runtime-1.2.0.tgz",
|
||||
"integrity": "sha512-37oqM/zfe53g9GCqjzGgCKGquOCKiw/h8Ydiqh3kRfdKUWiXWZTHRgPuo6UV0HIACIJBWEKuJUpnGyO6DNBxzw==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/runtime/-/runtime-1.4.0.tgz",
|
||||
"integrity": "sha512-3QyBJTdpTzkxd8jt5yyveTfTGHDmkFPLli4j5alvKeb09xVb+fxDhleDJhEGJwgmUBuYg5weBZGNpkyg5K0ArA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
@@ -6558,12 +6544,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/tanstack-query-plugin": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/tanstack-query-plugin/-/tanstack-query-plugin-1.2.0.tgz",
|
||||
"integrity": "sha512-aanyt23jW/kPKh/Aip8O4Mu8z2g/PkqOWoiTJak1K8gQ1YLu0KUz9+l+kXKc/ceK6xQcgUbZZB7WqYqzMY5n/w==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/tanstack-query-plugin/-/tanstack-query-plugin-1.4.0.tgz",
|
||||
"integrity": "sha512-dOib20914G4aCqxJgQ+TAYP+c3Laxj+6KwaMvYAmTPi61hOPkFPNZqwuAXu+Z4iK/kLoJaRI3ef4gNDRlQudtA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rozenite/plugin-bridge": "1.2.0",
|
||||
"@rozenite/plugin-bridge": "1.4.0",
|
||||
"fast-deep-equal": "^3.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -6573,9 +6559,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rozenite/tools": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/tools/-/tools-1.2.0.tgz",
|
||||
"integrity": "sha512-I5E4az+EWq2xRf9aKDg02bubm+2l6fvbQG63DmIOykjQtQ50uFR9t65UMv0/nvdwDlK2aSIyXCr8aJF/O6GA6g==",
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@rozenite/tools/-/tools-1.4.0.tgz",
|
||||
"integrity": "sha512-Ptq7g5cfrvl6Ct0BAyZnSiUf9ojkkHkN/snwgyNsoqN92m6wztgUfUSxglpoynf/2SLVU6WQhJh8noseAn0VfA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@sayem314/react-native-keep-awake": {
|
||||
@@ -14571,14 +14557,6 @@
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/globalthis": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
|
||||
@@ -20941,19 +20919,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-reanimated": {
|
||||
"version": "4.1.6",
|
||||
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.6.tgz",
|
||||
"integrity": "sha512-F+ZJBYiok/6Jzp1re75F/9aLzkgoQCOh4yxrnwATa8392RvM3kx+fiXXFvwcgE59v48lMwd9q0nzF1oJLXpfxQ==",
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.2.tgz",
|
||||
"integrity": "sha512-o3kKvdD8cVlg12Z4u3jv0MFAt53QV4k7gD9OLwQqU8eZLyd8QvaOjVZIghMZhC2pjP93uUU44PlO5JgF8S4Vxw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"react-native-is-edge-to-edge": "^1.2.1",
|
||||
"semver": "7.7.2"
|
||||
"react-native-is-edge-to-edge": "1.2.1",
|
||||
"semver": "7.7.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0",
|
||||
"react": "*",
|
||||
"react-native": "*",
|
||||
"react-native-worklets": ">=0.5.0"
|
||||
"react-native-worklets": ">=0.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-reanimated-carousel": {
|
||||
@@ -20968,10 +20945,20 @@
|
||||
"react-native-reanimated": ">=3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-reanimated/node_modules/react-native-is-edge-to-edge": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz",
|
||||
"integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
"react-native": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-reanimated/node_modules/semver": {
|
||||
"version": "7.7.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||
"version": "7.7.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
@@ -21221,25 +21208,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-worklets": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.2.tgz",
|
||||
"integrity": "sha512-lCzmuIPAK/UaOJYEPgYpVqrsxby1I54f7PyyZUMEO04nwc00CDrCvv9lCTY1daLHYTF8lS3f9zlzErfVsIKqkA==",
|
||||
"version": "0.7.4",
|
||||
"resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.4.tgz",
|
||||
"integrity": "sha512-NYOdM1MwBb3n+AtMqy1tFy3Mn8DliQtd8sbzAVRf9Gc+uvQ0zRfxN7dS8ZzoyX7t6cyQL5THuGhlnX+iFlQTag==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/plugin-transform-arrow-functions": "^7.0.0-0",
|
||||
"@babel/plugin-transform-class-properties": "^7.0.0-0",
|
||||
"@babel/plugin-transform-classes": "^7.0.0-0",
|
||||
"@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0",
|
||||
"@babel/plugin-transform-optional-chaining": "^7.0.0-0",
|
||||
"@babel/plugin-transform-shorthand-properties": "^7.0.0-0",
|
||||
"@babel/plugin-transform-template-literals": "^7.0.0-0",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.0.0-0",
|
||||
"@babel/preset-typescript": "^7.16.7",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"semver": "7.7.2"
|
||||
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
||||
"@babel/plugin-transform-class-properties": "7.27.1",
|
||||
"@babel/plugin-transform-classes": "7.28.4",
|
||||
"@babel/plugin-transform-nullish-coalescing-operator": "7.27.1",
|
||||
"@babel/plugin-transform-optional-chaining": "7.27.1",
|
||||
"@babel/plugin-transform-shorthand-properties": "7.27.1",
|
||||
"@babel/plugin-transform-template-literals": "7.27.1",
|
||||
"@babel/plugin-transform-unicode-regex": "7.27.1",
|
||||
"@babel/preset-typescript": "7.27.1",
|
||||
"convert-source-map": "2.0.0",
|
||||
"semver": "7.7.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0",
|
||||
"@babel/core": "*",
|
||||
"react": "*",
|
||||
"react-native": "*"
|
||||
}
|
||||
@@ -21258,9 +21245,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-worklets/node_modules/semver": {
|
||||
"version": "7.7.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||
"version": "7.7.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
|
||||
16
package.json
16
package.json
@@ -69,12 +69,12 @@
|
||||
"@react-navigation/native": "^7.1.17",
|
||||
"@react-navigation/native-stack": "^7.3.25",
|
||||
"@realm/react": "^0.20.0",
|
||||
"@rozenite/metro": "^1.2.0",
|
||||
"@rozenite/mmkv-plugin": "^1.2.0",
|
||||
"@rozenite/network-activity-plugin": "^1.2.0",
|
||||
"@rozenite/react-navigation-plugin": "^1.3.0",
|
||||
"@rozenite/require-profiler-plugin": "^1.2.0",
|
||||
"@rozenite/tanstack-query-plugin": "^1.2.0",
|
||||
"@rozenite/metro": "^1.4.0",
|
||||
"@rozenite/mmkv-plugin": "^1.4.0",
|
||||
"@rozenite/network-activity-plugin": "^1.4.0",
|
||||
"@rozenite/react-navigation-plugin": "^1.4.0",
|
||||
"@rozenite/require-profiler-plugin": "^1.4.0",
|
||||
"@rozenite/tanstack-query-plugin": "^1.4.0",
|
||||
"@sayem314/react-native-keep-awake": "^1.3.1",
|
||||
"@shopify/flash-list": "^2.2.0",
|
||||
"@tanstack/react-query": "5.90.14",
|
||||
@@ -126,7 +126,7 @@
|
||||
"react-native-orientation-locker": "github:wonday/react-native-orientation-locker",
|
||||
"react-native-paper": "^5.12.3",
|
||||
"react-native-permissions": "^4.1.5",
|
||||
"react-native-reanimated": "~4.1.0",
|
||||
"react-native-reanimated": "^4.2.2",
|
||||
"react-native-reanimated-carousel": "^4.0.3",
|
||||
"react-native-render-html": "^6.3.4",
|
||||
"react-native-restart": "^0.0.27",
|
||||
@@ -139,9 +139,9 @@
|
||||
"react-native-svg-transformer": "^1.5.2",
|
||||
"react-native-url-polyfill": "^2.0.0",
|
||||
"react-native-vision-camera": "^4.7.3",
|
||||
"react-native-worklets": "^0.5.0",
|
||||
"react-native-volume-manager": "^2.0.8",
|
||||
"react-native-webview": "^13.15.0",
|
||||
"react-native-worklets": "^0.7.0",
|
||||
"react-native-worklets-core": "^1.6.2",
|
||||
"realm": "^20.2.0",
|
||||
"sanitize-html": "^2.13.0",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { PropsWithChildren } from "react";
|
||||
import React from "react";
|
||||
import type { ViewStyle } from "react-native";
|
||||
import { View } from "react-native";
|
||||
import DeviceInfo from "react-native-device-info";
|
||||
import type { AnimatedStyle } from "react-native-reanimated";
|
||||
import Animated from "react-native-reanimated";
|
||||
@@ -18,7 +19,11 @@ const RotatableIconWrapper = ( {
|
||||
containerClass,
|
||||
}: Props ) => {
|
||||
if ( isTablet || !rotatableAnimatedStyle ) {
|
||||
return children;
|
||||
return (
|
||||
<View className={containerClass}>
|
||||
{children}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
@@ -12,12 +12,12 @@ import {
|
||||
import {
|
||||
Extrapolation,
|
||||
interpolate,
|
||||
runOnJS,
|
||||
useAnimatedProps,
|
||||
useSharedValue,
|
||||
withSpring,
|
||||
} from "react-native-reanimated";
|
||||
import type { CameraDevice, CameraProps } from "react-native-vision-camera";
|
||||
import { scheduleOnRN } from "react-native-worklets";
|
||||
|
||||
// This is taken from react-native-vision library itself: https://github.com/mrousavy/react-native-vision-camera/blob/9eed89aac6155eba155595f3e006707152550d0d/package/example/src/Constants.ts#L19 https://github.com/mrousavy/react-native-vision-camera/blob/9eed89aac6155eba155595f3e006707152550d0d/package/example/src/CameraPage.tsx#L34
|
||||
|
||||
@@ -115,7 +115,7 @@ const useZoom = ( device: CameraDevice ): object => {
|
||||
);
|
||||
zoom.set( newZoom );
|
||||
|
||||
runOnJS( updateZoomTextValue )( newZoom );
|
||||
scheduleOnRN( updateZoomTextValue, newZoom );
|
||||
}, [maxZoomWithPinch, minZoom, updateZoomTextValue, startZoom, zoom] );
|
||||
|
||||
const animatedProps = useAnimatedProps < CameraProps >(
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { useNavigation } from "@react-navigation/native";
|
||||
import { WarningSheet } from "components/SharedComponents";
|
||||
import type { ScrollView } from "components/styledComponents";
|
||||
import { View } from "components/styledComponents";
|
||||
import { t } from "i18next";
|
||||
import React, { useCallback, useState } from "react";
|
||||
import { Keyboard, TouchableWithoutFeedback } from "react-native";
|
||||
import { openInbox } from "sharedHelpers/mail";
|
||||
import useKeyboardInfo from "sharedHooks/useKeyboardInfo";
|
||||
|
||||
import {
|
||||
resetPassword,
|
||||
@@ -13,14 +14,10 @@ import ForgotPasswordForm from "./ForgotPasswordForm";
|
||||
import Header from "./Header";
|
||||
import LoginSignUpWrapper from "./LoginSignUpWrapper";
|
||||
|
||||
interface RenderProps {
|
||||
// eslint-disable-next-line react/no-unused-prop-types
|
||||
scrollViewRef: { current: null | React.Ref<typeof ScrollView> };
|
||||
}
|
||||
|
||||
const ForgotPassword = ( ) => {
|
||||
const navigation = useNavigation( );
|
||||
const [showSheet, setShowSheet] = useState( false );
|
||||
const { keyboardShown } = useKeyboardInfo( );
|
||||
|
||||
const reset = useCallback( async ( email: string ) => {
|
||||
await resetPassword( email );
|
||||
@@ -32,34 +29,30 @@ const ForgotPassword = ( ) => {
|
||||
Keyboard.dismiss( );
|
||||
};
|
||||
|
||||
const renderForgotPassword = useCallback( ( { scrollViewRef }: RenderProps ) => (
|
||||
<>
|
||||
{showSheet && (
|
||||
<WarningSheet
|
||||
onPressClose={( ) => setShowSheet( false )}
|
||||
confirm={openInbox}
|
||||
headerText={t( "CHECK-YOUR-EMAIL" )}
|
||||
text={t( "If-an-account-with-that-email-exists" )}
|
||||
buttonText={t( "OPEN-EMAIL" )}
|
||||
secondButtonText={t( "BACK-TO-LOGIN" )}
|
||||
handleSecondButtonPress={( ) => {
|
||||
setShowSheet( false );
|
||||
navigation.navigate( "LoginStackNavigator", { screen: "Login" } );
|
||||
}}
|
||||
buttonType="focus"
|
||||
loading={false}
|
||||
/>
|
||||
)}
|
||||
<Header />
|
||||
<ForgotPasswordForm reset={reset} scrollViewRef={scrollViewRef} />
|
||||
</>
|
||||
), [showSheet, setShowSheet, reset, navigation] );
|
||||
|
||||
return (
|
||||
<TouchableWithoutFeedback accessibilityRole="button" onPress={blurFields}>
|
||||
<LoginSignUpWrapper backgroundSource={require( "images/background/butterfly.jpg" )}>
|
||||
{renderForgotPassword}
|
||||
</LoginSignUpWrapper>
|
||||
<View>
|
||||
{showSheet && (
|
||||
<WarningSheet
|
||||
onPressClose={( ) => setShowSheet( false )}
|
||||
confirm={openInbox}
|
||||
headerText={t( "CHECK-YOUR-EMAIL" )}
|
||||
text={t( "If-an-account-with-that-email-exists" )}
|
||||
buttonText={t( "OPEN-EMAIL" )}
|
||||
secondButtonText={t( "BACK-TO-LOGIN" )}
|
||||
handleSecondButtonPress={( ) => {
|
||||
setShowSheet( false );
|
||||
navigation.navigate( "LoginStackNavigator", { screen: "Login" } );
|
||||
}}
|
||||
buttonType="focus"
|
||||
loading={false}
|
||||
/>
|
||||
)}
|
||||
<LoginSignUpWrapper backgroundSource={require( "images/background/butterfly.jpg" )}>
|
||||
<Header hideHeader={keyboardShown} />
|
||||
<ForgotPasswordForm reset={reset} />
|
||||
</LoginSignUpWrapper>
|
||||
</View>
|
||||
</TouchableWithoutFeedback>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -3,30 +3,22 @@ import {
|
||||
Body1,
|
||||
Button,
|
||||
} from "components/SharedComponents";
|
||||
import type { ScrollView } from "components/styledComponents";
|
||||
import { View } from "components/styledComponents";
|
||||
import { t } from "i18next";
|
||||
import type { ElementRef, Node } from "react";
|
||||
import React, {
|
||||
useCallback, useEffect, useRef, useState,
|
||||
} from "react";
|
||||
import type { Node } from "react";
|
||||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { TouchableWithoutFeedback } from "react-native";
|
||||
import useKeyboardInfo from "sharedHooks/useKeyboardInfo";
|
||||
|
||||
import LoginSignUpInputField from "./LoginSignUpInputField";
|
||||
|
||||
interface Props {
|
||||
reset: ( email: string ) => Promise<void>;
|
||||
scrollViewRef?: { current: null | ElementRef<typeof ScrollView> };
|
||||
}
|
||||
|
||||
const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
|
||||
const ForgotPasswordForm = ( { reset }: Props ): Node => {
|
||||
const [email, setEmail] = useState( "" );
|
||||
const emailRef = useRef( null );
|
||||
const navigation = useNavigation( );
|
||||
const { keyboardShown } = useKeyboardInfo( );
|
||||
|
||||
const inputFieldRef = useRef<typeof View | null>( null );
|
||||
|
||||
const blurFields = () => {
|
||||
if ( emailRef.current ) {
|
||||
@@ -46,24 +38,6 @@ const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
|
||||
return unsubscribeTransition;
|
||||
}, [navigation] );
|
||||
|
||||
const scrollToItem = useCallback( ( ) => {
|
||||
if ( scrollViewRef?.current && inputFieldRef?.current ) {
|
||||
inputFieldRef.current?.measureLayout(
|
||||
scrollViewRef.current,
|
||||
( _, y ) => {
|
||||
scrollViewRef.current?.scrollTo( { y, animated: true } );
|
||||
},
|
||||
() => console.log( "Failed to measure" ),
|
||||
);
|
||||
}
|
||||
}, [scrollViewRef] );
|
||||
|
||||
useEffect( ( ) => {
|
||||
if ( keyboardShown ) {
|
||||
scrollToItem( );
|
||||
}
|
||||
}, [keyboardShown, scrollToItem] );
|
||||
|
||||
return (
|
||||
<TouchableWithoutFeedback accessibilityRole="button" onPress={blurFields}>
|
||||
<View className="px-4 my-5 justify-end">
|
||||
@@ -79,17 +53,15 @@ const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
|
||||
onChangeText={text => setEmail( text )}
|
||||
testID="Login.email"
|
||||
/>
|
||||
<View ref={inputFieldRef}>
|
||||
<Button
|
||||
level="focus"
|
||||
forceDark
|
||||
text={t( "RESET-PASSWORD" )}
|
||||
onPress={( ) => reset( email )}
|
||||
className="my-[30px]"
|
||||
disabled={!email}
|
||||
testID="Login.forgotPasswordButton"
|
||||
/>
|
||||
</View>
|
||||
<Button
|
||||
level="focus"
|
||||
forceDark
|
||||
text={t( "RESET-PASSWORD" )}
|
||||
onPress={( ) => reset( email )}
|
||||
className="my-[30px]"
|
||||
disabled={!email}
|
||||
testID="Login.forgotPasswordButton"
|
||||
/>
|
||||
</View>
|
||||
</TouchableWithoutFeedback>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
ImageBackground, ScrollView, View,
|
||||
} from "components/styledComponents";
|
||||
import type { PropsWithChildren } from "react";
|
||||
import React, { useEffect, useRef } from "react";
|
||||
import React, { useCallback, useEffect, useRef } from "react";
|
||||
import type {
|
||||
ImageSourcePropType,
|
||||
ImageStyle,
|
||||
@@ -17,6 +17,8 @@ import {
|
||||
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
||||
import colors from "styles/tailwindColors";
|
||||
|
||||
type ScrollViewRef = { scrollTo: ( options: { y: number; animated: boolean } ) => void } | null;
|
||||
|
||||
interface Props extends PropsWithChildren {
|
||||
backgroundSource: ImageSourcePropType;
|
||||
imageStyle?: StyleProp<ImageStyle>;
|
||||
@@ -34,21 +36,23 @@ const LoginSignupWrapper = ( {
|
||||
children,
|
||||
imageStyle,
|
||||
}: Props ) => {
|
||||
const scrollViewRef = useRef( null );
|
||||
const scrollViewRef = useRef<ScrollViewRef>( null );
|
||||
const navigation = useNavigation( );
|
||||
const insets = useSafeAreaInsets();
|
||||
|
||||
const resetScroll = useCallback( ( ) => {
|
||||
const scrollNode = scrollViewRef.current;
|
||||
if ( scrollNode && typeof scrollNode.scrollTo === "function" ) {
|
||||
scrollNode.scrollTo( { y: 0, animated: false } );
|
||||
}
|
||||
}, [] );
|
||||
|
||||
useEffect( ( ) => {
|
||||
const resetScroll = ( ) => {
|
||||
if ( scrollViewRef.current ) {
|
||||
scrollViewRef.current?.scrollTo( { y: 0, animated: false } );
|
||||
}
|
||||
};
|
||||
const unsubscribe = navigation.addListener( "focus", ( ) => {
|
||||
resetScroll( );
|
||||
} );
|
||||
return unsubscribe;
|
||||
}, [navigation] );
|
||||
}, [navigation, resetScroll] );
|
||||
|
||||
// Make the StatusBar translucent in Android but reset it when we leave
|
||||
// because this alters the layout.
|
||||
@@ -56,20 +60,13 @@ const LoginSignupWrapper = ( {
|
||||
if ( Platform.OS !== "android" ) return ( ) => undefined;
|
||||
// Hide on first render
|
||||
StatusBar.setTranslucent( true );
|
||||
|
||||
const resetScroll = () => {
|
||||
if ( scrollViewRef.current ) {
|
||||
scrollViewRef.current?.scrollTo( { y: 0, animated: false } );
|
||||
}
|
||||
};
|
||||
const unsubscribe = navigation.addListener( "focus", ( ) => {
|
||||
console.log( "resetting scroll" );
|
||||
resetScroll( );
|
||||
// Hide when focused
|
||||
StatusBar.setTranslucent( true );
|
||||
} );
|
||||
return unsubscribe;
|
||||
}, [navigation] );
|
||||
}, [navigation, resetScroll] );
|
||||
|
||||
useEffect( ( ) => {
|
||||
if ( Platform.OS !== "android" ) return ( ) => undefined;
|
||||
|
||||
@@ -109,7 +109,7 @@ const ProjectDetails = ( {
|
||||
/>
|
||||
);
|
||||
|
||||
const iconClassName = "h-[134px] w-[134px] rounded-full bg-white -top-6";
|
||||
const iconClassName = "h-[90px] w-[90px] rounded-full bg-white -top-6";
|
||||
|
||||
const displayProjectIcon = icon => {
|
||||
const productionIcon = icon?.replace( "staticdev", "static" );
|
||||
@@ -153,14 +153,6 @@ const ProjectDetails = ( {
|
||||
{displayProjectIcon( project?.icon )}
|
||||
</ImageBackground>
|
||||
</View>
|
||||
|
||||
{/* <Image
|
||||
source={{ uri: project.icon }}
|
||||
className="h-[70px] w-[70px] rounded-full bottom-6 z-100 bg-white"
|
||||
testID="ProjectDetails.projectIcon"
|
||||
accessibilityIgnoresInvertColors
|
||||
/> */}
|
||||
{/* </ImageBackground> */}
|
||||
<View className="mx-4 pb-8">
|
||||
<Heading1 className="shrink mt-4">{project.title}</Heading1>
|
||||
<Subheading1>
|
||||
|
||||
@@ -11,11 +11,11 @@ import type { SharedValue } from "react-native-reanimated";
|
||||
import Animated, {
|
||||
Easing,
|
||||
interpolate,
|
||||
runOnJS,
|
||||
useAnimatedStyle,
|
||||
useSharedValue,
|
||||
withTiming,
|
||||
} from "react-native-reanimated";
|
||||
import { scheduleOnRN } from "react-native-worklets";
|
||||
import colors from "styles/tailwindColors";
|
||||
|
||||
type ConfettiProps = PropsWithChildren<{
|
||||
@@ -85,7 +85,7 @@ const Confetti = ( { count, duration = 5000 }: ConfettiProps ) => {
|
||||
},
|
||||
finished => {
|
||||
if ( finished ) {
|
||||
runOnJS( setAutoDestroy )( true );
|
||||
scheduleOnRN( setAutoDestroy, true );
|
||||
}
|
||||
},
|
||||
) );
|
||||
|
||||
@@ -55,6 +55,11 @@ jest.mock( "@react-native-community/netinfo", () => mockRNCNetInfo );
|
||||
jest.mock( "react-native-device-info", () => mockRNDeviceInfo );
|
||||
jest.mock( "react-native-safe-area-context", () => mockSafeAreaContext );
|
||||
|
||||
// Reanimated 4.2 + Worklets 0.7: Jest loads native worklets which fails in Node. See:
|
||||
// https://github.com/software-mansion/react-native-reanimated/discussions/8806
|
||||
// we can remove this once the fix is released
|
||||
jest.mock( "react-native-worklets", () => require( "react-native-worklets/src/mock" ) );
|
||||
|
||||
require( "react-native-reanimated" ).setUpTests();
|
||||
|
||||
// Some test environments may need a little more time
|
||||
|
||||
@@ -70,7 +70,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="0"
|
||||
style={
|
||||
[
|
||||
{
|
||||
@@ -248,7 +247,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="1"
|
||||
style={
|
||||
[
|
||||
{
|
||||
@@ -426,7 +424,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="2"
|
||||
style={
|
||||
[
|
||||
{
|
||||
@@ -648,7 +645,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="3"
|
||||
style={
|
||||
[
|
||||
{
|
||||
@@ -831,7 +827,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="4"
|
||||
style={
|
||||
[
|
||||
{
|
||||
@@ -1014,7 +1009,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="5"
|
||||
style={
|
||||
[
|
||||
{
|
||||
|
||||
@@ -48,7 +48,6 @@ exports[`UploadStatus displays complete icon when progress is 1 1`] = `
|
||||
"value": {},
|
||||
}
|
||||
}
|
||||
nativeID="2"
|
||||
testID="UploadIcon.complete.undefined"
|
||||
>
|
||||
<View
|
||||
@@ -308,7 +307,6 @@ exports[`UploadStatus displays rotating circle progress when upload is queued bu
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="1"
|
||||
style={
|
||||
[
|
||||
[
|
||||
@@ -513,7 +511,6 @@ exports[`UploadStatus displays start icon when upload is unsynced and not queued
|
||||
}
|
||||
}
|
||||
jestInlineStyle={{}}
|
||||
nativeID="0"
|
||||
style={
|
||||
[
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user