Skip to content

Commit

Permalink
v2.17.0 (#729)
Browse files Browse the repository at this point in the history
* Use cv model 2.13, requires newer plugin

* Bump version and build

* Use cv model 2.13, requires newer plugin

* Bump version and build

* Use vision-plugin with speedup by taxonomy cutoff

* Bump build

* Bundle update

* Redo bundle with deleted Gemfile.lock

* Update plugin. Add option to set cutoff from JS

* Cycle through different taxonomy cutoffs

* Bump build

* Update vision plugin

* Change cycle back to one cutoff value only

* Bump build

* Show correct about text, and not missing translation

Closes #713

* Use history for going back in navigation

Closes #715
Closes #675

* Bump build

* Update vision-plugin

* Add a bit of padding to bottom of challenges screen

* Bump build

* Update with stable cv plugin

* Log timeElapsed for cv on native side

* Bump build

* Comment

* Update README.md

* Use stable vc plugin main

Technically this means we now support geomodel on iOS. We would need to add it to the app an connect to the frame processor though.

* Bump build

* Update vision-plugin

* Bump build

* Remove taxonomy cutoff override

Now it uses the plugin's inbuilt taxonomy cutoff of 0.001 the top cv score.

* Remove timesRun state

* Bump build

* Card that announces the new cv model on the home screen (#717)

* Fix vision plugin to version commit on main there

* Update Podfile.lock

* Basic version of the updates card

* Count how many species are in cv 2.13

* Looks nicer

* Bump build

* Revert back to storing only five results at a time

* Bump build

* Update vision-plugin to use new names for options

No change in Seek required

* Hardcode to never show a specific taxon

* Bump build

* Update package.json

* Remove deprecated model files; Use model on iOS directly from bundle

* Bump build

* Update fastlane

* Use the geomodel in frame processing (#727)

* Geomodel in camera (#725)

* modelFileNames TS

* Update config.example.js

* Geomodel into XCode project

* dirStorage TS, plus geomodel

* Refactor camera files helpers into own file

* Update import

* Update vision-plugin

* Prop geomodel path into camera

* Use location from species nearby provider for the geomodel

* Use custom hook to get user coords

* Geomodel in camera (#725)

* modelFileNames TS

* Update config.example.js

* Geomodel into XCode project

* dirStorage TS, plus geomodel

* Refactor camera files helpers into own file

* Update import

* Update vision-plugin

* Prop geomodel path into camera

* Use location from species nearby provider for the geomodel

* Use custom hook to get user coords

* Bump version and build

* Remove await & catch errors when logging before navigating to AR camera result (#726)

Co-authored-by: Kirk van Gorkom <[email protected]>

* Update ios fastlane to add new beta build to "iNat Staff Only" group

* Bump vision-plugin to rename lookUpLocation function

---------

Co-authored-by: Kirk van Gorkom <[email protected]>

* Camera re-design (#728)

* Camera redesign (#720)

* Show correct about text, and not missing translation

Closes #713

* Use history for going back in navigation

Closes #715
Closes #675

* Add a bit of padding to bottom of challenges screen

* Bump version

* Bump build

* Update team section text

* Remove tab navigator

* Replace image picker libraries with our forks

* Remove fetching of albums

* Remove photo loading state

* Remove fetching of photos functions from gallery screen

* Move camera roll permission checking to camera screen

WIP: I am not sure we need this in the end

* No longer needed state

* Comment

* Remove layout related code

* Refactor Gallery image list to be new button

* Remove gallery screen

* Remove comment

* Use gallery button on camera screen

* Refactor camera buttons overlay to use flex instead of three absolute positions

* Add gallery button container style

* Basic styling for image button

* Add TODO

* Include gallery icon

* Use flex for tablet landscape layouts as well

* Add react-native-exif-reader and how iNatNext uses it

* While gallery is open have camera inactive

* Show a loading indicator while getting predictions

* Remove wrong View

* Fix an error in legacy camera container

* Remove camera roll permissions

* Copy Android permissions like iNat Next has

* Add a11y label

* iNat Next has this title set

* Remove legacy camera from stack

* Remove ranks prop

* Remove no longer needed function

* Remove legacy camera component

* Remove react-native-inat-camera

* Bump version

* Update fastlane

* Revert "Merge branch 'v2.17.1' into v2.16.5"

This reverts commit 817e669, reversing
changes made to 5fd5f0f.

* fix: InatVision imported from wrapper

* Remove TODO

* Fix broken package-lock file

* Use location of photo for geomodel inference

* Adjust version

* Missing package in package-lock

* Bump build

* Update Fastfile

* Do no longer save photos to a Seek album

Our fork of react-native-camera-roll returns a placeholder uri if we have Add-only permission and not Read (because we can not return the actual uri without read permission).

If this is the case we use the temporary photo file for the resizing steps and so forth that happen after photo is taken.

* Bump build

* Move updates card above challenges

* Add common names for the cv model 2.13

* Bump build

---------

Co-authored-by: Kirk van Gorkom <[email protected]>
  • Loading branch information
jtklein and kvangork authored Feb 4, 2025
1 parent a1eac77 commit 7765149
Show file tree
Hide file tree
Showing 52 changed files with 915 additions and 1,539 deletions.
3 changes: 0 additions & 3 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ labels: ''
assignees: ''

---
**Is this an AR camera feature?**
If so, please head to [react-native-inat-camera](https://github.com/inaturalist/react-native-inat-camera) library and fill out a feature request there.

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Expand Down
131 changes: 66 additions & 65 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ GEM
base64
nkf
rexml
activesupport (7.0.8.1)
activesupport (7.0.8.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
Expand All @@ -18,20 +18,20 @@ GEM
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.951.0)
aws-sdk-core (3.201.0)
aws-partitions (1.1026.0)
aws-sdk-core (3.214.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.88.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (1.96.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.156.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-s3 (1.176.1)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.8.0)
aws-sigv4 (1.10.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
Expand Down Expand Up @@ -77,7 +77,7 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.2.3)
concurrent-ruby (1.3.4)
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
Expand All @@ -87,8 +87,8 @@ GEM
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
excon (0.110.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
Expand All @@ -107,24 +107,24 @@ GEM
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.3.1)
fastlane (2.218.0)
fastlane (2.226.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
Expand All @@ -133,9 +133,11 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
Expand All @@ -144,84 +146,84 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (>= 0.1.1)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
xcpretty (~> 0.4.0)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-versioning_android (0.1.1)
ffi (1.16.3)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
ffi (1.17.0)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.66.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-core (0.15.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 1.9)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
google-apis-iamcredentials_v1 (0.21.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-playcustomapp_v1 (0.16.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-storage_v1 (0.40.0)
google-apis-core (>= 0.15.0, < 2.a)
google-cloud-core (1.7.0)
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.7.1)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (2.1.1)
faraday (>= 1.0, < 3.a)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.4.0)
google-cloud-storage (1.52.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-core (~> 0.13)
google-apis-iamcredentials_v1 (~> 0.18)
google-apis-storage_v1 (~> 0.38)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (~> 1.9)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.11.0)
faraday (>= 1.0, < 3.a)
google-cloud-env (~> 2.1)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.6)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (1.14.4)
i18n (1.14.6)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.7.2)
jwt (2.8.2)
json (2.9.1)
jwt (2.9.3)
base64
mini_magick (4.13.1)
mini_magick (4.13.2)
mini_mime (1.1.5)
minitest (5.22.3)
minitest (5.25.4)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.1)
nanaimo (0.3.0)
nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
nkf (0.2.0)
optparse (0.5.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.1)
public_suffix (4.0.7)
Expand All @@ -231,13 +233,12 @@ GEM
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.9)
strscan
rouge (2.0.7)
rexml (3.4.0)
rouge (3.28.0)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
Expand All @@ -246,7 +247,7 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
strscan (3.1.0)
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
Expand All @@ -260,17 +261,17 @@ GEM
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0)
unicode-display_width (2.5.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.24.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.0)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)

Expand All @@ -287,4 +288,4 @@ RUBY VERSION
ruby 2.7.5p203

BUNDLED WITH
2.2.27
2.4.16
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
2. Build locally to a device or simulator by running `npm run ios` or `npm run android`

## Manual Linking
Most third-party libraries use autolinking as of [React Native 0.60.0](https://facebook.github.io/react-native/blog/2019/07/03/version-60#native-modules-are-now-autolinked). Any exceptions are listed in the `react-native.config.js` file. Currently, [react-native-inat-camera](https://github.com/inaturalist/react-native-inat-camera) on Android is manually linked.
Most third-party libraries use autolinking as of [React Native 0.60.0](https://facebook.github.io/react-native/blog/2019/07/03/version-60#native-modules-are-now-autolinked). Any exceptions are listed in the `react-native.config.js` file.

## Tests
We currently have three kinds of tests:
Expand Down
6 changes: 2 additions & 4 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ android {
applicationId "org.inaturalist.seek"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 377
versionName "2.16.4"
versionCode 382
versionName "2.17.0"
// for creating ic_seek_adaptiveappicon.xml
vectorDrawables.useSupportLibrary = true
}
Expand Down Expand Up @@ -131,8 +131,6 @@ android {
}

dependencies {
implementation project(':react-native-inat-camera')

// 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")
Expand Down
3 changes: 1 addition & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- the following permissions replaces READ_EXTERNAL_STORAGE in Android 13 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>

<application
android:name="org.inaturalist.seek.MainApplication"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@ import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.flipper.ReactNativeFlipper
import com.facebook.soloader.SoLoader

import org.inaturalist.inatcamera.nativecamera.INatCameraViewPackage

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(INatCameraViewPackage())
}

override fun getJSMainModuleName(): String = "index"
Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ buildscript {
ndkVersion = "25.1.8937393"
kotlinVersion = "1.8.0"
// This specifies which tensorflow-lite version to use for our vision-plugin.
tensorflowVersion = "2.1.0"
tensorflowVersion = "2.14.0"
}
repositories {
google()
Expand Down
2 changes: 0 additions & 2 deletions android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
rootProject.name = 'Seek'
include ':@react-native-camera-roll_camera-roll'
project(':@react-native-camera-roll_camera-roll').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-camera-roll/camera-roll/android')
include ':react-native-inat-camera'
project(':react-native-inat-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-inat-camera/android')
include ':react-native-check-app-install'
project(':react-native-check-app-install').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-check-app-install/android')
include ':RNSendIntentModule', ':app'
Expand Down
3 changes: 2 additions & 1 deletion assets/icons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ const icons: Icons = {
iNat_valueprop_bullet_2: require( "./icons/icon-cv-green.webp" ),
iNat_valueprop_bullet_3: require( "./icons/icon-obs-green.webp" ),
iNat_valueprop_bullet_4: require( "./icons/icon-person-green.webp" ),
noProfilePhoto: require( "./icons/img-inatlogin-nophoto.webp" )
noProfilePhoto: require( "./icons/img-inatlogin-nophoto.webp" ),
gallery: require( "./icons/icon-gallery.webp" )
};

export default icons;
Binary file added assets/icons/icon-gallery.webp
Binary file not shown.
Binary file added assets/icons/[email protected]
Binary file not shown.
Binary file added assets/icons/[email protected]
Binary file not shown.
Loading

0 comments on commit 7765149

Please sign in to comment.