mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2025-12-23 22:18:36 -05:00
Upgrade to RN 0.73 (#1339)
* Upgrade to RN 0.73 with upgrade helper
* Upgrade testing-library
* Comment announcements
* Comment out UserProfle test
* Mock function used to calculate masonry layout
* There should not be a modal here
* There is actually also no modal here
* Use View if SafeAreaView is undefined
* Replace fast image library that was failing tests because of not being maintained
* Clear mocks in useTaxon test
* Remove legacy deps from testing flow
* Snapshot update
* Revert "Snapshot update"
This reverts commit bca8b296df.
* Update package-lock.json
* Clean-start
* Update project.pbxproj
* Reenable test that failed before updating dependency
* Reenable test that failed because of dependencies
* Remove comment
This commit is contained in:
10
.flowconfig
10
.flowconfig
@@ -17,6 +17,16 @@ node_modules/react-native/Libraries/polyfills/.*
|
||||
; Ignore these files
|
||||
.*/node_modules/react-native/sdks/hermes/external/flowtest/test/flow/comment_interning/program_comment_directive.js
|
||||
.*/node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts
|
||||
.*/node_modules/react-native/Libraries/Network/RCTNetworking.js.flow
|
||||
.*/node_modules/react-native/Libraries/NativeComponent/BaseViewConfig.js.flow
|
||||
.*/node_modules/react-native/Libraries/DevToolsSettings/DevToolsSettingsManager.js.flow
|
||||
.*/node_modules/metro/node_modules/hermes-estree/dist/generated/predicates.js.flow
|
||||
.*/node_modules/metro-babel-transformer/node_modules/hermes-estree/dist/generated/predicates.js.flow
|
||||
.*/node_modules/@react-native/dev-middleware/dist/utils/DefaultBrowserLauncher.js.flow
|
||||
.*/node_modules/@react-native/community-cli-plugin/dist/commands/start/index.js.flow
|
||||
.*/node_modules/@react-native/community-cli-plugin/dist/commands/ram-bundle/index.js.flow
|
||||
.*/node_modules/@react-native/community-cli-plugin/dist/commands/bundle/index.js.flow
|
||||
.*/node_modules/@react-native/community-cli-plugin/dist/commands/bundle/buildBundle.js.flow
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/@react-native-community/cli/.*/.*
|
||||
|
||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
- name: Install Dependencies
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
run: npm install --legacy-peer-deps
|
||||
run: npm install
|
||||
|
||||
- run: npm run lint
|
||||
- run: npm test
|
||||
|
||||
2
Gemfile
2
Gemfile
@@ -7,7 +7,7 @@ ruby ">= 2.6.10"
|
||||
# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper
|
||||
# bound in the template on Cocoapods with next React Native release.
|
||||
gem "cocoapods", ">= 1.13", "< 1.15"
|
||||
gem "activesupport", ">= 6.1.7.3", "< 7.1.0"
|
||||
gem "activesupport", ">= 6.1.7.5", "< 7.1.0"
|
||||
|
||||
gem "fastlane"
|
||||
gem "nokogiri"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
apply plugin: "com.android.application"
|
||||
apply plugin: "org.jetbrains.kotlin.android"
|
||||
apply plugin: "com.facebook.react"
|
||||
|
||||
|
||||
@@ -102,7 +103,8 @@ keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
android {
|
||||
ndkVersion rootProject.ext.ndkVersion
|
||||
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
buildToolsVersion rootProject.ext.buildToolsVersion
|
||||
compileSdk rootProject.ext.compileSdkVersion
|
||||
|
||||
namespace "org.inaturalist.iNaturalistMobile"
|
||||
defaultConfig {
|
||||
@@ -160,6 +162,7 @@ dependencies {
|
||||
|
||||
// The version of react-native is set by the React Native Gradle Plugin
|
||||
implementation("com.facebook.react:react-android")
|
||||
implementation("com.facebook.react:flipper-integration")
|
||||
|
||||
|
||||
|
||||
@@ -167,12 +170,6 @@ dependencies {
|
||||
// https://github.com/wix/Detox/issues/3147
|
||||
implementation("com.google.android.material:material:1.3.0")
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
|
||||
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||
}
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
|
||||
if (hermesEnabled.toBoolean()) {
|
||||
implementation("com.facebook.react:hermes-android")
|
||||
} else {
|
||||
|
||||
@@ -2,12 +2,9 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
|
||||
tools:ignore="GoogleAppIndexingWarning"/>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
package org.inaturalist.iNaturalistMobile;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
|
||||
import com.facebook.react.defaults.DefaultReactActivityDelegate;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
/**
|
||||
* Needed for react-native-screens / react-navigation
|
||||
* https://reactnavigation.org/docs/getting-started/
|
||||
*/
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the main component registered from JavaScript. This is used to schedule
|
||||
* rendering of the component.
|
||||
*/
|
||||
@Override
|
||||
protected String getMainComponentName() {
|
||||
return "iNaturalistReactNative";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
|
||||
* DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
|
||||
* (aka React 18) with two boolean flags.
|
||||
*/
|
||||
@Override
|
||||
protected ReactActivityDelegate createReactActivityDelegate() {
|
||||
return new DefaultReactActivityDelegate(
|
||||
this,
|
||||
getMainComponentName(),
|
||||
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
|
||||
DefaultNewArchitectureEntryPoint.getFabricEnabled());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.inaturalist.iNaturalistMobile
|
||||
|
||||
import com.facebook.react.ReactActivity
|
||||
import com.facebook.react.ReactActivityDelegate
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
|
||||
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
||||
import android.os.Bundle
|
||||
|
||||
class MainActivity : ReactActivity() {
|
||||
/**
|
||||
* Needed for react-native-screens / react-navigation
|
||||
* https://reactnavigation.org/docs/getting-started/
|
||||
*/
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(null)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the main component registered from JavaScript. This is used to schedule
|
||||
* rendering of the component.
|
||||
*/
|
||||
override fun getMainComponentName(): String = "iNaturalistReactNative"
|
||||
|
||||
/**
|
||||
* Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
|
||||
* which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
|
||||
*/
|
||||
override fun createReactActivityDelegate(): ReactActivityDelegate =
|
||||
DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
package org.inaturalist.iNaturalistMobile;
|
||||
|
||||
import android.app.Application;
|
||||
import com.facebook.react.PackageList;
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
|
||||
import com.facebook.react.defaults.DefaultReactNativeHost;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import java.util.List;
|
||||
|
||||
public class MainApplication extends Application implements ReactApplication {
|
||||
|
||||
private final ReactNativeHost mReactNativeHost =
|
||||
new DefaultReactNativeHost(this) {
|
||||
@Override
|
||||
public boolean getUseDeveloperSupport() {
|
||||
return BuildConfig.DEBUG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ReactPackage> getPackages() {
|
||||
@SuppressWarnings("UnnecessaryLocalVariable")
|
||||
List<ReactPackage> packages = new PackageList(this).getPackages();
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// packages.add(new MyReactNativePackage());
|
||||
return packages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getJSMainModuleName() {
|
||||
return "index";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isNewArchEnabled() {
|
||||
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isHermesEnabled() {
|
||||
return BuildConfig.IS_HERMES_ENABLED;
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public ReactNativeHost getReactNativeHost() {
|
||||
return mReactNativeHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
// If you opted-in for the New Architecture, we load the native entry point for this app.
|
||||
DefaultNewArchitectureEntryPoint.load();
|
||||
}
|
||||
ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.inaturalist.iNaturalistMobile
|
||||
|
||||
import android.app.Application
|
||||
import com.facebook.react.PackageList
|
||||
import com.facebook.react.ReactApplication
|
||||
import com.facebook.react.ReactHost
|
||||
import com.facebook.react.ReactNativeHost
|
||||
import com.facebook.react.ReactPackage
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
|
||||
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
|
||||
import com.facebook.react.defaults.DefaultReactNativeHost
|
||||
import com.facebook.react.flipper.ReactNativeFlipper
|
||||
import com.facebook.soloader.SoLoader
|
||||
|
||||
class MainApplication : Application(), ReactApplication {
|
||||
|
||||
override val reactNativeHost: ReactNativeHost =
|
||||
object : DefaultReactNativeHost(this) {
|
||||
override fun getPackages(): List<ReactPackage> =
|
||||
PackageList(this).packages.apply {
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// add(MyReactNativePackage())
|
||||
}
|
||||
|
||||
override fun getJSMainModuleName(): String = "index"
|
||||
|
||||
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
|
||||
|
||||
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
||||
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
|
||||
}
|
||||
|
||||
override val reactHost: ReactHost
|
||||
get() = getDefaultReactHost(this.applicationContext, reactNativeHost)
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
SoLoader.init(this, false)
|
||||
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
// If you opted-in for the New Architecture, we load the native entry point for this app.
|
||||
load()
|
||||
}
|
||||
ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*/
|
||||
package org.inaturalist.iNaturalistMobile;
|
||||
|
||||
import android.content.Context;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
|
||||
/**
|
||||
* Class responsible of loading Flipper inside your React Native application. This is the release
|
||||
* flavor of it so it's empty as we don't want to load Flipper.
|
||||
*/
|
||||
public class ReactNativeFlipper {
|
||||
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
|
||||
// Do nothing as we don't want to initialize Flipper on Release.
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,12 @@ import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "33.0.0"
|
||||
buildToolsVersion = "34.0.0"
|
||||
minSdkVersion = 26
|
||||
compileSdkVersion = 33
|
||||
targetSdkVersion = 33
|
||||
kotlinVersion = "1.7.21"
|
||||
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
|
||||
ndkVersion = "23.1.7779620"
|
||||
compileSdkVersion = 34
|
||||
targetSdkVersion = 34
|
||||
ndkVersion = "25.1.8937393"
|
||||
kotlinVersion = "1.8.0"
|
||||
// This specifies which tensorflow-lite version to use for our vision-plugin.
|
||||
tensorflowVersion = "2.4.0"
|
||||
}
|
||||
@@ -21,10 +20,12 @@ buildscript {
|
||||
dependencies {
|
||||
classpath("com.android.tools.build:gradle")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: "com.facebook.react.rootproject"
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
// Detox Android setup
|
||||
|
||||
@@ -24,7 +24,6 @@ android.useAndroidX=true
|
||||
# Automatically convert third-party libraries to use AndroidX
|
||||
android.enableJetifier=true
|
||||
|
||||
FLIPPER_VERSION=0.182.0
|
||||
# Use this property to specify which architecture you want to build.
|
||||
# You can also override it from the CLI using
|
||||
# ./gradlew <task> -PreactNativeArchitectures=x86_64
|
||||
|
||||
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
@@ -1,6 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
21
android/gradlew
vendored
21
android/gradlew
vendored
@@ -83,10 +83,8 @@ done
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
@@ -133,10 +131,13 @@ location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD=java
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
@@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
@@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
@@ -197,6 +198,10 @@ if "$cygwin" || "$msys" ; then
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
@@ -241,4 +246,4 @@ eval "set -- $(
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
exec "$JAVACMD" "$@"
|
||||
@@ -1,5 +1,5 @@
|
||||
module.exports = {
|
||||
presets: ["module:metro-react-native-babel-preset"],
|
||||
presets: ["module:@react-native/babel-preset"],
|
||||
plugins: [
|
||||
"react-native-worklets-core/plugin",
|
||||
"transform-inline-environment-variables",
|
||||
|
||||
@@ -59,14 +59,8 @@ end
|
||||
target "iNaturalistReactNative" do
|
||||
config = use_native_modules!
|
||||
|
||||
# Flags change depending on the env values.
|
||||
flags = get_default_flags
|
||||
|
||||
use_react_native!(
|
||||
path: config[:reactNativePath],
|
||||
# Hermes is now enabled by default. Disable by setting this flag to false.
|
||||
hermes_enabled: flags[:hermes_enabled],
|
||||
fabric_enabled: flags[:fabric_enabled],
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
@@ -108,7 +102,6 @@ target "iNaturalistReactNative" do
|
||||
config[:reactNativePath],
|
||||
mac_catalyst_enabled: false
|
||||
)
|
||||
__apply_Xcode_12_5_M1_post_install_workaround( installer )
|
||||
# Add these lines for Xcode 14 builds
|
||||
installer.generated_projects.each do | project |
|
||||
project.targets.each do | target |
|
||||
|
||||
1230
ios/Podfile.lock
1230
ios/Podfile.lock
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00E356F31AD99517003FC87E /* iNaturalistReactNativeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* iNaturalistReactNativeTests.m */; };
|
||||
03BE06B8FED98F5CD10273BB /* libPods-iNaturalistReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20043186B311EE211FEB259A /* libPods-iNaturalistReactNative.a */; };
|
||||
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 */; };
|
||||
@@ -15,7 +16,6 @@
|
||||
197A169D2A7C2567001A03DC /* cvmodel.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 197A169B2A7C2567001A03DC /* cvmodel.mlmodel */; };
|
||||
197A169E2A7C2567001A03DC /* taxonomy.json in Resources */ = {isa = PBXBuildFile; fileRef = 197A169C2A7C2567001A03DC /* taxonomy.json */; };
|
||||
1EF13134839B4163B7221B1C /* Whitney-Light-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 280EEAE853724445825C0BD1 /* Whitney-Light-Italic.otf */; };
|
||||
20A80CB2AD058BDA23462D38 /* libPods-iNaturalistReactNative-ShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA404A663814006B0F659A /* libPods-iNaturalistReactNative-ShareExtension.a */; };
|
||||
24C2A4FB10654A9FA5F6BA36 /* Whitney-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = C13A1C5596344F5F8830E524 /* Whitney-Light.otf */; };
|
||||
374CB22F29943E63005885ED /* Whitney-BookItalic-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = 374CB22E29943E63005885ED /* Whitney-BookItalic-Pro.otf */; };
|
||||
42832120F7C944B980FD13BC /* Whitney-MediumItalic-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = 097C2902AB1249AA9846CED3 /* Whitney-MediumItalic-Pro.otf */; };
|
||||
@@ -33,7 +33,6 @@
|
||||
8F1AC6782BC1B610002F994B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8F1AC6762BC1B610002F994B /* PrivacyInfo.xcprivacy */; };
|
||||
8F1AC6792BC1B610002F994B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8F1AC6762BC1B610002F994B /* PrivacyInfo.xcprivacy */; };
|
||||
9136560F8A3E4C53B7BD08AE /* Whitney-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B5F7CCA093BF4208980F1C36 /* Whitney-Medium.otf */; };
|
||||
A019DB3A4661689827F5BB56 /* libPods-iNaturalistReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 486ED9661FEC89EDDBE3DA02 /* libPods-iNaturalistReactNative.a */; };
|
||||
A252B2AEA64E47C9AC1D20E8 /* Whitney-Light-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = BA9D41ECEBFA4C38B74009B3 /* Whitney-Light-Pro.otf */; };
|
||||
A64FC9A5388A49568EC932B6 /* Whitney-Semibold-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 63C92696AD524E14B655C56A /* Whitney-Semibold-Italic.otf */; };
|
||||
B197D1A2DFD9440C9581D513 /* Whitney-Book-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = 62CACBCC44D64A7EB95AACF1 /* Whitney-Book-Pro.otf */; };
|
||||
@@ -42,6 +41,7 @@
|
||||
CD4D097140634EE091BB5818 /* Whitney-Book.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8EB5F71FA6C34855B03FE3FB /* Whitney-Book.otf */; };
|
||||
CD871292AF3144DC9F9240BA /* Whitney-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 4A5C60A9F7DF42F49CED09FC /* Whitney-Semibold.otf */; };
|
||||
D2853A71785A4FF6AB137F4C /* INatIcon.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CC5CF9E037E74ADF9CF9710B /* INatIcon.ttf */; };
|
||||
E23E0899594A7C6DF680FFDB /* libPods-iNaturalistReactNative-ShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A336AF0ADEAE537AB1B73F98 /* libPods-iNaturalistReactNative-ShareExtension.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -92,15 +92,15 @@
|
||||
197A169C2A7C2567001A03DC /* taxonomy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taxonomy.json; sourceTree = "<group>"; };
|
||||
19916F1F2B4F1871000A2D91 /* iNaturalistReactNativeRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = iNaturalistReactNativeRelease.entitlements; path = iNaturalistReactNative/iNaturalistReactNativeRelease.entitlements; sourceTree = "<group>"; };
|
||||
19A5877328F8E3310016D128 /* iNaturalistReactNative-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iNaturalistReactNative-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
20043186B311EE211FEB259A /* libPods-iNaturalistReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iNaturalistReactNative.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
280EEAE853724445825C0BD1 /* Whitney-Light-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Light-Italic.otf"; path = "../assets/fonts/Whitney-Light-Italic.otf"; sourceTree = "<group>"; };
|
||||
2B8BE6258F04B67C38DE834A /* Pods-iNaturalistReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative.release.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative.release.xcconfig"; sourceTree = "<group>"; };
|
||||
374CB22E29943E63005885ED /* Whitney-BookItalic-Pro.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Whitney-BookItalic-Pro.otf"; path = "../assets/fonts/Whitney-BookItalic-Pro.otf"; sourceTree = "<group>"; };
|
||||
486ED9661FEC89EDDBE3DA02 /* libPods-iNaturalistReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iNaturalistReactNative.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4A5C60A9F7DF42F49CED09FC /* Whitney-Semibold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Semibold.otf"; path = "../assets/fonts/Whitney-Semibold.otf"; sourceTree = "<group>"; };
|
||||
5EA1E325EE494FF8BE364F00 /* Whitney-LightItalic-Pro.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-LightItalic-Pro.otf"; path = "../assets/fonts/Whitney-LightItalic-Pro.otf"; sourceTree = "<group>"; };
|
||||
62CACBCC44D64A7EB95AACF1 /* Whitney-Book-Pro.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Book-Pro.otf"; path = "../assets/fonts/Whitney-Book-Pro.otf"; sourceTree = "<group>"; };
|
||||
63C92696AD524E14B655C56A /* Whitney-Semibold-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Semibold-Italic.otf"; path = "../assets/fonts/Whitney-Semibold-Italic.otf"; sourceTree = "<group>"; };
|
||||
657E03B58B8E44588A5933FA /* Whitney-Book-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Book-Italic.otf"; path = "../assets/fonts/Whitney-Book-Italic.otf"; sourceTree = "<group>"; };
|
||||
6836402D214AF8075A93F130 /* Pods-iNaturalistReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative.release.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative.release.xcconfig"; sourceTree = "<group>"; };
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = iNaturalistReactNative/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
8B65ED2B29F575C10054CCEF /* iNaturalistReactNative-ShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "iNaturalistReactNative-ShareExtension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8B65ED3029F575C10054CCEF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
|
||||
@@ -111,19 +111,19 @@
|
||||
8B8BAD0429F54EB300CE5C9F /* iNaturalistReactNative.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = iNaturalistReactNative.entitlements; path = iNaturalistReactNative/iNaturalistReactNative.entitlements; sourceTree = "<group>"; };
|
||||
8EB5F71FA6C34855B03FE3FB /* Whitney-Book.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Book.otf"; path = "../assets/fonts/Whitney-Book.otf"; sourceTree = "<group>"; };
|
||||
8F1AC6762BC1B610002F994B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
A336AF0ADEAE537AB1B73F98 /* libPods-iNaturalistReactNative-ShareExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iNaturalistReactNative-ShareExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B397CFD4AEFF474A89A3D27B /* Whitney-Semibold-Pro.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Semibold-Pro.otf"; path = "../assets/fonts/Whitney-Semibold-Pro.otf"; sourceTree = "<group>"; };
|
||||
B5F7CCA093BF4208980F1C36 /* Whitney-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Medium.otf"; path = "../assets/fonts/Whitney-Medium.otf"; sourceTree = "<group>"; };
|
||||
B8FC28F6DD66FAD52B79E072 /* Pods-iNaturalistReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative.debug.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
BA9D41ECEBFA4C38B74009B3 /* Whitney-Light-Pro.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Light-Pro.otf"; path = "../assets/fonts/Whitney-Light-Pro.otf"; sourceTree = "<group>"; };
|
||||
BBAA404A663814006B0F659A /* libPods-iNaturalistReactNative-ShareExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iNaturalistReactNative-ShareExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C13A1C5596344F5F8830E524 /* Whitney-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Light.otf"; path = "../assets/fonts/Whitney-Light.otf"; sourceTree = "<group>"; };
|
||||
CC5CF9E037E74ADF9CF9710B /* INatIcon.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = INatIcon.ttf; path = ../assets/fonts/INatIcon.ttf; sourceTree = "<group>"; };
|
||||
CEBBC55F32B65362EB71A4C6 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
D09FA3A0162844FF80A5EF96 /* Whitney-Medium-Pro.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Medium-Pro.otf"; path = "../assets/fonts/Whitney-Medium-Pro.otf"; sourceTree = "<group>"; };
|
||||
D7AE5BDBC584A83878A04344 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
D8663889EABFBFC3077401E3 /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative-ShareExtension.release.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension.release.xcconfig"; sourceTree = "<group>"; };
|
||||
DC9FE0074F1340B0A5F2EA35 /* Whitney-Medium-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Whitney-Medium-Italic.otf"; path = "../assets/fonts/Whitney-Medium-Italic.otf"; sourceTree = "<group>"; };
|
||||
E67BC54FF5D9263C1DCFB23D /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative-ShareExtension.release.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension.release.xcconfig"; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
EE004FD2EC174086A7AB2908 /* inaturalisticons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = inaturalisticons.ttf; path = ../assets/fonts/inaturalisticons.ttf; sourceTree = "<group>"; };
|
||||
FF1A612F80DAF77B84AD4694 /* Pods-iNaturalistReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iNaturalistReactNative.debug.xcconfig"; path = "Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -139,7 +139,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5A8D64AB921678B40E0229C8 /* BuildFile in Frameworks */,
|
||||
A019DB3A4661689827F5BB56 /* libPods-iNaturalistReactNative.a in Frameworks */,
|
||||
03BE06B8FED98F5CD10273BB /* libPods-iNaturalistReactNative.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -147,7 +147,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
20A80CB2AD058BDA23462D38 /* libPods-iNaturalistReactNative-ShareExtension.a in Frameworks */,
|
||||
E23E0899594A7C6DF680FFDB /* libPods-iNaturalistReactNative-ShareExtension.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -193,8 +193,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||
BBAA404A663814006B0F659A /* libPods-iNaturalistReactNative-ShareExtension.a */,
|
||||
486ED9661FEC89EDDBE3DA02 /* libPods-iNaturalistReactNative.a */,
|
||||
20043186B311EE211FEB259A /* libPods-iNaturalistReactNative.a */,
|
||||
A336AF0ADEAE537AB1B73F98 /* libPods-iNaturalistReactNative-ShareExtension.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -202,10 +202,10 @@
|
||||
3610B9F08DA0E49FEE702ABA /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FF1A612F80DAF77B84AD4694 /* Pods-iNaturalistReactNative.debug.xcconfig */,
|
||||
CEBBC55F32B65362EB71A4C6 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */,
|
||||
E67BC54FF5D9263C1DCFB23D /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */,
|
||||
6836402D214AF8075A93F130 /* Pods-iNaturalistReactNative.release.xcconfig */,
|
||||
B8FC28F6DD66FAD52B79E072 /* Pods-iNaturalistReactNative.debug.xcconfig */,
|
||||
2B8BE6258F04B67C38DE834A /* Pods-iNaturalistReactNative.release.xcconfig */,
|
||||
D7AE5BDBC584A83878A04344 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */,
|
||||
D8663889EABFBFC3077401E3 /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
@@ -316,15 +316,14 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "iNaturalistReactNative" */;
|
||||
buildPhases = (
|
||||
281FB0614D8CC389D289F282 /* [CP] Check Pods Manifest.lock */,
|
||||
FD10A7F022414F080027D42C /* Start Packager */,
|
||||
075F7EA7751B87EC3B297227 /* [CP] Check Pods Manifest.lock */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
8BD9FE6729C0DD4D00133738 /* Embed Foundation Extensions */,
|
||||
8157AEAF25C42F6282FF94AF /* [CP] Embed Pods Frameworks */,
|
||||
A92C6264D0048B2088429716 /* [CP] Copy Pods Resources */,
|
||||
2043FC43F173730C7484F6DD /* [CP] Embed Pods Frameworks */,
|
||||
6F0B58D8C90D100E5D22E3B4 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -340,11 +339,11 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8B65ED3829F575C10054CCEF /* Build configuration list for PBXNativeTarget "iNaturalistReactNative-ShareExtension" */;
|
||||
buildPhases = (
|
||||
196B2C937A277D0F8EC4B1DE /* [CP] Check Pods Manifest.lock */,
|
||||
0C866C7E94EED4236278F673 /* [CP] Check Pods Manifest.lock */,
|
||||
8B65ED2729F575C10054CCEF /* Sources */,
|
||||
8B65ED2829F575C10054CCEF /* Frameworks */,
|
||||
8B65ED2929F575C10054CCEF /* Resources */,
|
||||
0CA1C9E281D0AF6ECD506E51 /* [CP] Copy Pods Resources */,
|
||||
5DB819C6801A71EDC9EE6A6B /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -464,46 +463,7 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
|
||||
};
|
||||
0CA1C9E281D0AF6ECD506E51 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
196B2C937A277D0F8EC4B1DE /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-iNaturalistReactNative-ShareExtension-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
281FB0614D8CC389D289F282 /* [CP] Check Pods Manifest.lock */ = {
|
||||
075F7EA7751B87EC3B297227 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -525,7 +485,29 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
8157AEAF25C42F6282FF94AF /* [CP] Embed Pods Frameworks */ = {
|
||||
0C866C7E94EED4236278F673 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-iNaturalistReactNative-ShareExtension-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2043FC43F173730C7484F6DD /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -542,7 +524,24 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
A92C6264D0048B2088429716 /* [CP] Copy Pods Resources */ = {
|
||||
5DB819C6801A71EDC9EE6A6B /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative-ShareExtension/Pods-iNaturalistReactNative-ShareExtension-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
6F0B58D8C90D100E5D22E3B4 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -559,25 +558,6 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iNaturalistReactNative/Pods-iNaturalistReactNative-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
FD10A7F022414F080027D42C /* Start Packager */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Start Packager";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -645,7 +625,7 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = iNaturalistReactNativeTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -670,7 +650,7 @@
|
||||
DEVELOPMENT_TEAM = N5J7L4P93Z;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64";
|
||||
INFOPLIST_FILE = iNaturalistReactNativeTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -689,7 +669,7 @@
|
||||
};
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = FF1A612F80DAF77B84AD4694 /* Pods-iNaturalistReactNative.debug.xcconfig */;
|
||||
baseConfigurationReference = B8FC28F6DD66FAD52B79E072 /* Pods-iNaturalistReactNative.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
@@ -812,7 +792,7 @@
|
||||
};
|
||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 6836402D214AF8075A93F130 /* Pods-iNaturalistReactNative.release.xcconfig */;
|
||||
baseConfigurationReference = 2B8BE6258F04B67C38DE834A /* Pods-iNaturalistReactNative.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
@@ -936,7 +916,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -981,7 +961,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
/usr/lib/swift,
|
||||
"$(inherited)",
|
||||
@@ -999,10 +979,12 @@
|
||||
"-DFOLLY_NO_CONFIG",
|
||||
"-DFOLLY_MOBILE=1",
|
||||
"-DFOLLY_USE_LIBCPP=1",
|
||||
"-DFOLLY_CFG_NO_COROUTINES=1",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
USE_HERMES = true;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -1011,7 +993,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -1052,7 +1034,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
/usr/lib/swift,
|
||||
"$(inherited)",
|
||||
@@ -1069,17 +1051,19 @@
|
||||
"-DFOLLY_NO_CONFIG",
|
||||
"-DFOLLY_MOBILE=1",
|
||||
"-DFOLLY_USE_LIBCPP=1",
|
||||
"-DFOLLY_CFG_NO_COROUTINES=1",
|
||||
);
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
USE_HERMES = true;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8B65ED3629F575C10054CCEF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = CEBBC55F32B65362EB71A4C6 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */;
|
||||
baseConfigurationReference = D7AE5BDBC584A83878A04344 /* Pods-iNaturalistReactNative-ShareExtension.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
@@ -1099,7 +1083,7 @@
|
||||
INFOPLIST_FILE = "iNaturalistReactNative-ShareExtension/Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "iNaturalistReactNative-ShareExtension";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -1122,7 +1106,7 @@
|
||||
};
|
||||
8B65ED3729F575C10054CCEF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E67BC54FF5D9263C1DCFB23D /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */;
|
||||
baseConfigurationReference = D8663889EABFBFC3077401E3 /* Pods-iNaturalistReactNative-ShareExtension.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
@@ -1144,7 +1128,7 @@
|
||||
INFOPLIST_FILE = "iNaturalistReactNative-ShareExtension/Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "iNaturalistReactNative-ShareExtension";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
||||
@@ -37,6 +37,11 @@
|
||||
}
|
||||
|
||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||
{
|
||||
return [self getBundleURL];
|
||||
}
|
||||
|
||||
- (NSURL *)getBundleURL
|
||||
{
|
||||
#if DEBUG
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
|
||||
|
||||
@@ -42,7 +42,13 @@
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict/>
|
||||
<dict>
|
||||
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<false/>
|
||||
<key>NSAllowsLocalNetworking</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSAppleMusicUsageDescription</key>
|
||||
<string>Add existing photos and sounds to your observations.</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
|
||||
7038
package-lock.json
generated
7038
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@@ -35,12 +35,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@bam.tech/react-native-image-resizer": "^3.0.7",
|
||||
"@candlefinance/faster-image": "^1.4.3",
|
||||
"@formidable-webview/webshell": "^2.6.0",
|
||||
"@gorhom/bottom-sheet": "^4.6.1",
|
||||
"@react-native-async-storage/async-storage": "^1.23.1",
|
||||
"@react-native-camera-roll/camera-roll": "^7.5.2",
|
||||
"@react-native-clipboard/clipboard": "^1.13.2",
|
||||
"@react-native-community/datetimepicker": "^7.6.2",
|
||||
"@react-native-community/datetimepicker": "^7.6.3",
|
||||
"@react-native-community/geolocation": "^3.2.1",
|
||||
"@react-native-community/netinfo": "^11.3.1",
|
||||
"@react-native-community/slider": "^4.5.0",
|
||||
@@ -73,7 +74,7 @@
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-i18next": "^14.1.0",
|
||||
"react-native": "0.72.12",
|
||||
"react-native": "0.73.6",
|
||||
"react-native-animated-dots-carousel": "^1.0.2",
|
||||
"react-native-audio-recorder-player": "^3.6.7",
|
||||
"react-native-bouncy-checkbox": "^3.0.7",
|
||||
@@ -85,7 +86,6 @@
|
||||
"react-native-event-listeners": "^1.0.7",
|
||||
"react-native-exception-handler": "^2.10.10",
|
||||
"react-native-exif-reader": "github:inaturalist/react-native-exif-reader",
|
||||
"react-native-fast-image": "^8.6.3",
|
||||
"react-native-fs": "^2.20.0",
|
||||
"react-native-geocoder-reborn": "^0.9.0",
|
||||
"react-native-gesture-handler": "^2.16.0",
|
||||
@@ -134,15 +134,17 @@
|
||||
"@babel/runtime": "^7.24.4",
|
||||
"@faker-js/faker": "^8.4.1",
|
||||
"@fluent/syntax": "^0.19.0",
|
||||
"@react-native/eslint-config": "^0.72.2",
|
||||
"@react-native/metro-config": "^0.72.12",
|
||||
"@react-native/babel-preset": "0.73.21",
|
||||
"@react-native/eslint-config": "0.73.2",
|
||||
"@react-native/metro-config": "0.73.5",
|
||||
"@react-native/typescript-config": "0.73.1",
|
||||
"@tanstack/eslint-plugin-query": "^5.28.11",
|
||||
"@testing-library/jest-native": "^5.4.3",
|
||||
"@testing-library/react-native": "^12.4.5",
|
||||
"@tsconfig/react-native": "^3.0.0",
|
||||
"@types/react": "^18.2.74",
|
||||
"@types/react-test-renderer": "^18.0.7",
|
||||
"@xhmikosr/downloader": "^15.0.1",
|
||||
"babel-jest": "^29.6.3",
|
||||
"babel-plugin-module-resolver": "^5.0.0",
|
||||
"babel-plugin-transform-inline-environment-variables": "^0.4.4",
|
||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||
@@ -169,8 +171,6 @@
|
||||
"husky": "^9.0.11",
|
||||
"jest": "^29.7.0",
|
||||
"jest-fetch-mock": "github:jefflau/jest-fetch-mock",
|
||||
"metro-config": "0.73.9",
|
||||
"metro-react-native-babel-preset": "^0.76.9",
|
||||
"nock": "^13.5.4",
|
||||
"patch-package": "^8.0.0",
|
||||
"react-native-accessibility-engine": "^3.2.0",
|
||||
@@ -178,7 +178,7 @@
|
||||
"react-native-config-node": "^0.0.3",
|
||||
"react-test-renderer": "18.2.0",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"typescript": "^5.4.4",
|
||||
"typescript": "5.0.4",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// @flow
|
||||
|
||||
import classNames from "classnames";
|
||||
import { FastImage as Image } from "components/styledComponents";
|
||||
import { FasterImageView as Image } from "components/styledComponents";
|
||||
import type { Node } from "react";
|
||||
import React from "react";
|
||||
import colors from "styles/tailwindColors";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// @flow
|
||||
|
||||
import { FasterImageView as UnstyledFasterImageView } from "@candlefinance/faster-image";
|
||||
import {
|
||||
BottomSheetTextInput as StyledBottomSheetTextInput
|
||||
} from "@gorhom/bottom-sheet";
|
||||
@@ -17,16 +18,18 @@ import {
|
||||
TextInput as UntyledTextInput,
|
||||
View as UnstyledView
|
||||
} from "react-native";
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import UnstyledFastImage from "react-native-fast-image";
|
||||
import UnstyledLinearGradient from "react-native-linear-gradient";
|
||||
|
||||
// $FlowIgnore
|
||||
const View = styled( UnstyledView );
|
||||
// $FlowIgnore
|
||||
const KeyboardAvoidingView = styled( UnstyledKeyboardAvoidingView );
|
||||
// Since upgrading to React Native 0.73 UnstyledSafeAreaView is undefined in the jest tests
|
||||
// Why I don't know. This is just to fix the failing tests.
|
||||
// $FlowIgnore
|
||||
const SafeAreaView = styled( UnstyledSafeAreaView );
|
||||
const SafeAreaView = styled( UnstyledSafeAreaView === undefined
|
||||
? UnstyledView
|
||||
: UnstyledSafeAreaView );
|
||||
// $FlowIgnore
|
||||
const ScrollView = styled( UnstyledScrollView );
|
||||
// $FlowIgnore
|
||||
@@ -71,11 +74,11 @@ const fontMonoClass: string = ( Platform.OS === "ios"
|
||||
const LinearGradient = styled( UnstyledLinearGradient );
|
||||
|
||||
// $FlowIgnore
|
||||
const FastImage = styled( UnstyledFastImage );
|
||||
const FasterImageView = styled( UnstyledFasterImageView );
|
||||
|
||||
export {
|
||||
BottomSheetTextInput,
|
||||
FastImage,
|
||||
FasterImageView,
|
||||
fontMonoClass,
|
||||
Image,
|
||||
ImageBackground,
|
||||
|
||||
@@ -379,14 +379,6 @@ inatjs.observations.updates.mockResolvedValue( makeResponse( ) );
|
||||
|
||||
jest.mock( "react-native-audio-recorder-player", ( ) => MockAudioRecorderPlayer );
|
||||
|
||||
jest.mock( "react-native-fast-image", ( ) => {
|
||||
const actualNav = jest.requireActual( "react-native-fast-image" );
|
||||
return {
|
||||
...actualNav,
|
||||
preload: jest.fn( )
|
||||
};
|
||||
} );
|
||||
|
||||
jest.mock( "@react-native-clipboard/clipboard", () => mockClipboard );
|
||||
|
||||
jest.mock( "react-native-webview", () => {
|
||||
|
||||
@@ -244,36 +244,6 @@ exports[`CustomTabBar should render correctly 1`] = `
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
<Modal
|
||||
animationType="none"
|
||||
deviceHeight={null}
|
||||
deviceWidth={null}
|
||||
hardwareAccelerated={false}
|
||||
hideModalContentWhileAnimating={true}
|
||||
onBackdropPress={[Function]}
|
||||
onModalHide={[Function]}
|
||||
onModalWillHide={[Function]}
|
||||
onModalWillShow={[Function]}
|
||||
onRequestClose={[Function]}
|
||||
onSwipeComplete={[Function]}
|
||||
panResponderThreshold={4}
|
||||
scrollHorizontal={false}
|
||||
scrollOffset={0}
|
||||
scrollOffsetMax={0}
|
||||
scrollTo={null}
|
||||
statusBarTranslucent={false}
|
||||
supportedOrientations={
|
||||
[
|
||||
"portrait",
|
||||
"landscape",
|
||||
]
|
||||
}
|
||||
swipeDirection="down"
|
||||
swipeThreshold={100}
|
||||
transparent={true}
|
||||
useNativeDriverForBackdrop={true}
|
||||
visible={false}
|
||||
/>
|
||||
<View
|
||||
accessibilityHint="Opens add observation modal."
|
||||
accessibilityLabel="Add observations"
|
||||
|
||||
@@ -5,6 +5,8 @@ import PhotoCarousel from "components/Camera/StandardCamera/PhotoCarousel";
|
||||
import React from "react";
|
||||
import useStore from "stores/useStore";
|
||||
|
||||
jest.mock( "components/MediaViewer/MediaViewerModal", ( ) => jest.fn( ( ) => null ) );
|
||||
|
||||
const initialStoreState = useStore.getState( );
|
||||
|
||||
// For snapshots we want test data not to be random
|
||||
@@ -27,6 +29,8 @@ describe( "PhotoCarousel", ( ) => {
|
||||
<PhotoCarousel photoUris={mockPhotoUris} />
|
||||
);
|
||||
|
||||
await screen.findByTestId( `PhotoCarousel.displayPhoto.${mockPhotoUris[0]}` );
|
||||
|
||||
// Snapshot test
|
||||
expect( screen ).toMatchSnapshot();
|
||||
} );
|
||||
@@ -36,6 +40,8 @@ describe( "PhotoCarousel", ( ) => {
|
||||
<PhotoCarousel photoUris={mockPhotoUris} isLargeScreen />
|
||||
);
|
||||
|
||||
await screen.findByTestId( `PhotoCarousel.displayPhoto.${mockPhotoUris[0]}` );
|
||||
|
||||
// Snapshot test
|
||||
expect( screen ).toMatchSnapshot();
|
||||
} );
|
||||
|
||||
@@ -33,7 +33,7 @@ exports[`PhotoCarousel renders correctly 1`] = `
|
||||
onScrollEndDrag={[Function]}
|
||||
removeClippedSubviews={false}
|
||||
renderItem={[Function]}
|
||||
scrollEventThrottle={50}
|
||||
scrollEventThrottle={0.0001}
|
||||
stickyHeaderIndices={[]}
|
||||
viewabilityConfigCallbackPairs={[]}
|
||||
>
|
||||
@@ -547,36 +547,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
|
||||
</View>
|
||||
</View>
|
||||
</RCTScrollView>
|
||||
<Modal
|
||||
animationType="none"
|
||||
deviceHeight={null}
|
||||
deviceWidth={null}
|
||||
hardwareAccelerated={false}
|
||||
hideModalContentWhileAnimating={true}
|
||||
onBackdropPress={[Function]}
|
||||
onModalHide={[Function]}
|
||||
onModalWillHide={[Function]}
|
||||
onModalWillShow={[Function]}
|
||||
onRequestClose={[Function]}
|
||||
onSwipeComplete={[Function]}
|
||||
panResponderThreshold={4}
|
||||
scrollHorizontal={false}
|
||||
scrollOffset={0}
|
||||
scrollOffsetMax={0}
|
||||
scrollTo={null}
|
||||
statusBarTranslucent={false}
|
||||
supportedOrientations={
|
||||
[
|
||||
"portrait",
|
||||
"landscape",
|
||||
]
|
||||
}
|
||||
swipeDirection={null}
|
||||
swipeThreshold={100}
|
||||
transparent={true}
|
||||
useNativeDriverForBackdrop={true}
|
||||
visible={false}
|
||||
/>
|
||||
</View>
|
||||
`;
|
||||
|
||||
@@ -613,7 +583,7 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
|
||||
onScrollEndDrag={[Function]}
|
||||
removeClippedSubviews={false}
|
||||
renderItem={[Function]}
|
||||
scrollEventThrottle={50}
|
||||
scrollEventThrottle={0.0001}
|
||||
stickyHeaderIndices={[]}
|
||||
viewabilityConfigCallbackPairs={[]}
|
||||
>
|
||||
@@ -1142,35 +1112,5 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
|
||||
</View>
|
||||
</View>
|
||||
</RCTScrollView>
|
||||
<Modal
|
||||
animationType="none"
|
||||
deviceHeight={null}
|
||||
deviceWidth={null}
|
||||
hardwareAccelerated={false}
|
||||
hideModalContentWhileAnimating={true}
|
||||
onBackdropPress={[Function]}
|
||||
onModalHide={[Function]}
|
||||
onModalWillHide={[Function]}
|
||||
onModalWillShow={[Function]}
|
||||
onRequestClose={[Function]}
|
||||
onSwipeComplete={[Function]}
|
||||
panResponderThreshold={4}
|
||||
scrollHorizontal={false}
|
||||
scrollOffset={0}
|
||||
scrollOffsetMax={0}
|
||||
scrollTo={null}
|
||||
statusBarTranslucent={false}
|
||||
supportedOrientations={
|
||||
[
|
||||
"portrait",
|
||||
"landscape",
|
||||
]
|
||||
}
|
||||
swipeDirection={null}
|
||||
swipeThreshold={100}
|
||||
transparent={true}
|
||||
useNativeDriverForBackdrop={true}
|
||||
visible={false}
|
||||
/>
|
||||
</View>
|
||||
`;
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
import { render, screen } from "@testing-library/react-native";
|
||||
import { render, screen, waitFor } from "@testing-library/react-native";
|
||||
import ObsMedia from "components/ObsDetails/ObsMedia";
|
||||
import _ from "lodash";
|
||||
import React from "react";
|
||||
import { Image } from "react-native";
|
||||
import factory from "tests/factory";
|
||||
import faker from "tests/helpers/faker";
|
||||
|
||||
Image.getSize = jest.fn( ( uri, callback ) => {
|
||||
callback( { width: 1024, height: 768 } );
|
||||
} );
|
||||
|
||||
const mockObservation = factory( "LocalObservation", {
|
||||
created_at: "2022-11-27T19:07:41-08:00",
|
||||
time_observed_at: "2023-12-14T21:07:41-09:30",
|
||||
@@ -56,12 +61,16 @@ describe( "ObsMedia", () => {
|
||||
it( "should show photo with given url", async () => {
|
||||
render( <ObsMedia photos={mockPhotos} tablet={false} /> );
|
||||
const photo = await screen.findByTestId( "ObsMedia.photo" );
|
||||
expect( photo.props.source ).toStrictEqual( expectedImageSource );
|
||||
await waitFor( () => {
|
||||
expect( photo.props.source ).toStrictEqual( expectedImageSource );
|
||||
} );
|
||||
} );
|
||||
|
||||
it( "should show photo with given url on tablet", async () => {
|
||||
render( <ObsMedia photos={mockPhotos} tablet /> );
|
||||
const photo = await screen.findByTestId( "ObsMedia.photo" );
|
||||
expect( photo.props.source ).toStrictEqual( expectedImageSource );
|
||||
await waitFor( () => {
|
||||
expect( photo.props.source ).toStrictEqual( expectedImageSource );
|
||||
} );
|
||||
} );
|
||||
} );
|
||||
|
||||
@@ -1,155 +1,98 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`UserIcon displays active user image correctly 1`] = `
|
||||
<View
|
||||
<FasterImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
[
|
||||
{
|
||||
"overflow": "hidden",
|
||||
},
|
||||
[
|
||||
[
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 40,
|
||||
},
|
||||
{
|
||||
"height": 40,
|
||||
},
|
||||
{
|
||||
"borderColor": "#74AC00",
|
||||
"borderWidth": 3,
|
||||
},
|
||||
],
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 40,
|
||||
},
|
||||
{
|
||||
"height": 40,
|
||||
},
|
||||
{
|
||||
"borderColor": "#74AC00",
|
||||
"borderWidth": 3,
|
||||
},
|
||||
],
|
||||
]
|
||||
}
|
||||
>
|
||||
<FastImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
defaultSource={null}
|
||||
resizeMode="cover"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
{
|
||||
"bottom": 0,
|
||||
"left": 0,
|
||||
"position": "absolute",
|
||||
"right": 0,
|
||||
"top": 0,
|
||||
}
|
||||
}
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
</View>
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
`;
|
||||
|
||||
exports[`UserIcon displays small user image correctly 1`] = `
|
||||
<View
|
||||
<FasterImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
[
|
||||
{
|
||||
"overflow": "hidden",
|
||||
},
|
||||
[
|
||||
[
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 22,
|
||||
},
|
||||
{
|
||||
"height": 22,
|
||||
},
|
||||
],
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 22,
|
||||
},
|
||||
{
|
||||
"height": 22,
|
||||
},
|
||||
],
|
||||
]
|
||||
}
|
||||
>
|
||||
<FastImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
defaultSource={null}
|
||||
resizeMode="cover"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
{
|
||||
"bottom": 0,
|
||||
"left": 0,
|
||||
"position": "absolute",
|
||||
"right": 0,
|
||||
"top": 0,
|
||||
}
|
||||
}
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
</View>
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
`;
|
||||
|
||||
exports[`UserIcon displays user image correctly 1`] = `
|
||||
<View
|
||||
<FasterImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
[
|
||||
{
|
||||
"overflow": "hidden",
|
||||
},
|
||||
[
|
||||
[
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 40,
|
||||
},
|
||||
{
|
||||
"height": 40,
|
||||
},
|
||||
],
|
||||
{
|
||||
"borderBottomLeftRadius": 9999,
|
||||
"borderBottomRightRadius": 9999,
|
||||
"borderTopLeftRadius": 9999,
|
||||
"borderTopRightRadius": 9999,
|
||||
},
|
||||
{
|
||||
"width": 40,
|
||||
},
|
||||
{
|
||||
"height": 40,
|
||||
},
|
||||
],
|
||||
]
|
||||
}
|
||||
>
|
||||
<FastImageView
|
||||
accessibilityIgnoresInvertColors={true}
|
||||
accessibilityRole="image"
|
||||
defaultSource={null}
|
||||
resizeMode="cover"
|
||||
source={
|
||||
{
|
||||
"uri": "some_uri",
|
||||
}
|
||||
}
|
||||
style={
|
||||
{
|
||||
"bottom": 0,
|
||||
"left": 0,
|
||||
"position": "absolute",
|
||||
"right": 0,
|
||||
"top": 0,
|
||||
}
|
||||
}
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
</View>
|
||||
testID="UserIcon.photo"
|
||||
/>
|
||||
`;
|
||||
|
||||
@@ -60,7 +60,9 @@ describe( "UserProfile", () => {
|
||||
new RegExp( t( "OBSERVATIONS-WITHOUT-NUMBER", { count: mockUser.observations_count } ) )
|
||||
)
|
||||
).toBeTruthy( );
|
||||
expect( screen.getByTestId( "UserIcon.photo" ).props.source ).toStrictEqual( {
|
||||
const userIcon = screen.getByTestId( "UserIcon.photo" );
|
||||
expect( userIcon ).toBeTruthy( );
|
||||
expect( userIcon.props.source ).toStrictEqual( {
|
||||
uri: mockUser.icon_url
|
||||
} );
|
||||
} );
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"extends": "./node_modules/@tsconfig/react-native/tsconfig.json"
|
||||
"extends": "@react-native/typescript-config/tsconfig.json"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user