Commit Graph

268 Commits

Author SHA1 Message Date
Johannes Klein
58bd263c23 Update vision-plugin to prepare for cv model v2.20 (#2732)
* Update vision-camera-plugin-inatvision

* Update Podfile.lock
2025-03-09 17:59:02 +01:00
Johannes Klein
c1257d610b Update Podfile.lock 2025-03-04 17:58:44 +01:00
Angie
25d0ac7e22 Removes location picker from match screen, fetches user location and reload suggestions (#2703)
* Removes location picker from match screen, fetches user location and reloads suggestions instead

* fix variable name

* Remove unused prop

* changes requested, changes to fetching place guess, changes to refetch offline

* Close permission gate when permissions denied initially

* change toggle to set in reducer

* add optional chaining to location values

* Add optional chaining for place name

* Closing on initial block optional

The function of closing the permission gate on pressing the initial block button was as far as I can see only scoped to the Match container.

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2025-03-04 12:22:10 +01:00
Kirk van Gorkom
f0e0f7ca3d Revert "Patch confidence calculation crash by handling both score and combined_score"
This reverts commit 4bab4b222d.

Didn't catch an error when trying to change to a new branch, accidentally committed and pushed to main.
2025-02-28 22:16:44 -08:00
Kirk van Gorkom
4bab4b222d Patch confidence calculation crash by handling both score and combined_score 2025-02-28 22:13:58 -08:00
Johannes Klein
12c2e0e8ea Update vision-camera-plugin; breaking changes (#2701)
* Update vc plugin

* Update tests with breaking change: combined_score now 0-100

* Frame processor predictions are in range of 0-100 with new key

* Remove offline convert score to confidence

* Update calculateConfidence.js

* Common ancestor should use combine_score

* Offline suggestions have combined_scores now instead of scores

* Change filtering to range 0-100

* Only use combined_score for Match screen

* Update debug data

* Fic typo in tests

* Remove key from type
2025-02-28 14:21:01 +01:00
Amanda Bullington
a25386169b Fix: scroll to activity item in default mode (#2698)
* Minimize the number of rerenders by splitting sheet logic into separate component

* Fix agree sheet

* Fix y offset for scrolling from notifications to activity item
2025-02-25 19:00:23 -08:00
Amanda Bullington
400f118ad9 Change terminology from gallery to photo library (#2663)
* Update user-facing terminology from gallery to photo library

* Update terminology for devs to make the user-facing change easier to remember

* Update snapshots
2025-02-13 17:11:28 -08:00
Johannes Klein
9166f26e3a Update to React Native 0.73.11 (#2655)
* Update to RN 0.73.11

* Gemfile changes
2025-02-10 12:38:16 +01:00
Johannes Klein
837ce6ccb1 Update Podfile.lock 2025-02-06 23:29:41 +01:00
Ken-ichi Ueda
9d88a6b98f chore: improve context comments for datetime translation strings & fix typo 2025-02-03 14:55:38 -08:00
Johannes Klein
c378c8894d Replace small example models, and add example geomodel (#2644)
* Update env.example

* Update model download script

* Delete geomodel.placeholder

* Update README.md

* Update e2e_ios.yml

* Update vision-plugin

* Accept android flavor for downloading models

* Change Android e2e env

* Replace Android e2e model download step

* Update comment

* Move Java setup step

* Revert "Move Java setup step"

This reverts commit d8ca01a176.
2025-02-03 12:16:22 +01:00
Amanda Bullington
1cabf488e3 Add spacing to observation and taxon photos in Match screen (#2637) 2025-01-27 17:30:27 -08:00
Kirk van Gorkom
6e2791f94f Fix dependencies from broken pod install in 7dc29a25c4 2025-01-27 16:30:05 -08:00
Kirk van Gorkom
7dc29a25c4 Increment minor version number. Update various cocoapods. 2025-01-24 20:14:42 -08:00
Ken-ichi
9429fd0996 fix: prevent iconic taxon common names from disappearing in the local db (#2631)
Ensure useAuthenticatedQuery only executes the query when it knows if the user
is signed in or not, and appends that state to the query key so signed in and
signed out results are distinct.

The problem here was that useIconicTaxa was mysteriously returning stale,
signed out results while offline.

Closes MOB-383
2025-01-22 17:17:26 -08:00
Amanda Bullington
20a4008c1c Crash/bug fixes for Match Screen (#2628)
* Only reset observation slice at the beginning of the flow, not the end of the flow, so screen doesn't rerender and crash

* Pass in an option to skip resetting slice before navigating

* Pass correct taxonId to TaxonDetails screen
2025-01-21 18:03:11 -08:00
Ken-ichi
21a66c8580 fix: make UUIDs more random (#2629)
Replaces react-native-uuid with uuid, which might do a better job making UUIDs random
2025-01-21 15:23:15 -08:00
Johannes Klein
47cf9f815a chore: few minor dev dependency updates (#2626)
* Few minor dependency updates

* Bump detox

* Bump nock

* Bump some eslint plugins

* Bump some types
2025-01-20 21:35:37 +01:00
Johannes Klein
c225ea54b6 chore: minor dependency updates (#2625)
* Minor dependency updates

* Update Podfile.lock

* Update @bam.tech/react-native-image-resizer
2025-01-20 14:23:39 +01:00
Ken-ichi
96c316a257 feat: show all results in Explore projects search (#2621)
* refactor: convert ExploreProjectSearch to TS and assoc'd TS changes
* feat: use infinite scroll in Explore Filters project search
* feat: show universal search results in Explore project search

This should show the same ranked search results a user would see at
https://www.inaturalist.org/search?source[]=projects

Closes MOB-313
2025-01-17 16:31:07 -08:00
Johannes Klein
0d97f69974 Bump version 2025-01-17 12:06:45 +01:00
Kirk van Gorkom
7d247e5b09 Bump version to 0.57.1 2025-01-16 16:41:08 -08:00
Ken-ichi
cee9b64188 fix: save or discard the observation from the match screen (#2607)
* fix: save or discard the observation from the match screen
* feat: add Match header and footer to TaxonDetails from Match
* refactor: rename TaxonDetailsHeader prop controlling right element
* feat: show search from TaxonDetails via Match

Closes MOB-353
Closes MOB-358
Closes MOB-359
2025-01-10 16:44:12 -08:00
Johannes Klein
f84d09648d chore: rename look up location (#2603)
Renames a function call and fixes a NullPointerException on Android
2025-01-09 16:43:54 +01:00
Amanda Bullington
94002f0f59 Update button text based on ranking (#2602) 2025-01-08 18:12:10 -08:00
Ken-ichi
7ec14e9e78 fix: fill ObsEdit BottomBar with Save button when logged out (#2597)
* chore: TypeScript and style fixes
* fix: fill ObsEdit BottomBar with Save button when logged out
2025-01-08 11:00:07 -08:00
Johannes Klein
feec5567a3 feat: update vision-camera-plugin-inatvision to a version that fully supports the geomodel (#2584)
* Update vision-plugin

* useOfflineSuggestion TS

* Use location for prediction from file

* Remove log

* Use plugin function to lookup location and elevation based on h3 cells

* taxonomyRollupCutoff is now done in the plugin on basis of the tops score for a frame

* Fix wrong commit reference. Now references main branch

* Fix has location check to account for 0.0 locations

* Only prop in lat and long

* Add explanation

* Fix: Import vision-plugin function from wrapper file

* Add jest mock for new plugin function
2025-01-08 16:15:36 +01:00
Ken-ichi
31ce8994d9 feat: add interface mode preference to Settings (#2583)
* feat: add interface mode preference to Settings

* Refactor existing layout preferences so they are all persisted
* Made a new namespace within the layout slice so that all values there will
  get persisted without having to add stuff to the persistence code AND we
  avoid namespace collisions
* Wrapped layout slice getters and setters in a hook to provide descriptive
  names without modifying the underlying values

* Remove duplicate testID that was causing e2e to fail

---------

Co-authored-by: Amanda Bullington <albullington@gmail.com>
2024-12-26 15:11:09 -08:00
Ken-ichi
ebba764906 feat: sign in with Google (#2579)
Closes #2515
2024-12-19 12:24:16 -05:00
Angie
ce7e91e209 fix side by side button text is cut off in different languages and large font sizes (#2571)
* fixes issues where side by side button text is cut off in different languages and large font sizes.
Refactor to use ButtonBar in all places with side by side buttons. Truncates header in ObsEdit when language text exeeds space to not push kebab menu off screen. Closes #2500.

* update snapshots

* clean up BottomButtons.tsx
2024-12-18 10:56:00 -08:00
budowski
f89736188c feat: use physical volume buttons to capture photo (#2495)
* Fix #2212 - use physical volume buttons to capture photo

* Fixed tests (mocking VolumeManager)

* Fixed tests (mocking VolumeManager)

* #2212 - physical volume buttons for camera capture - also in AI camera

* #2212 - additional fixes for AI camera

* Update pods

* Update pods

---------

Co-authored-by: Amanda Bullington <albullington@gmail.com>
2024-12-17 16:40:26 -08:00
Ken-ichi
15f36386fd feat: sign in with Apple (#2543)
* Support Sign in with Apple on iOS, w/o design
* Typescript conversions
* Add authenticateUserByAssertion that should be usable w/ Google OAuth-based auth

Closes #583
2024-12-11 17:25:23 -08:00
Johannes Klein
03f8959f1e Update plugin to use new option names 2024-12-10 14:10:10 +01:00
Johannes Klein
df4ff645c5 Get altitude for user location; Add Geo model (#2492)
* Also collect altitude from geolocation calls

* Update geomodel plugin

* Prop user location down into ai camera

* Add geo model file to be linked into xcode project

* Update env.example

* Update env.example

* Add geo model to cv model info file

* Update Developer.js

* Use user location for geo model while frame processing

useGeoModel boolean signals the frame processing plugin to use the geo model as well. It is turned on when we have a location.

* Update README.md

* Geo model is optional

* Adding a dummy neural network called geomodel.placeholder

This model doesn't do anything just returns the input. This is a overhead we could justify in my view as not to spend some more time figuring out how to make a model optional in an Xcode project.

* Geo model files are optional

* Update README.md

* Fix wrong model usage

* Update README.md

* This comment is no longer true

* feat: use full-text index on new _searchableName field (#2487)

Supports searches across non-contiguous tokens, e.g. finding "Mount Diablo
fairy lantern" with a query like "diablo lantern"

Related to #2348

* feat: add pull to refresh on notifications (#2489)

Closes #2349

* feat: show notifications from others (#2491)

* split notifications into tabs
* lots of TypeScript conversion
* feat: resize Heading5 and add Heading6 (closes #2480)
* fix: mark remote observations as viewed from ObsDetails
* feat: show indicator in Notifications tabs if unviewed notifications

Closes #2451

* feat: add option to save all observations from batch obs edit (#2493)

* fix: bring KebabMenu in line with designs

Closes #2268

* Update testing instructions

* v0.55.2

* v0.55.2+129

* fix: show observation from external link when Explore filters open (#2453)

* Open observation in app when link is pressed even if modals are open

* Remove comments

* Add comment and reset obsid

* fix: show onboarding content when signed in user has 0 observations (#2510)

Closes #2508

* fix: load new Explore results when filters change (#2507)

URL params got removed from the query key as a part of pull-to-refresh, but
that's how changes to filters were triggering a new request. This restores
that behavior, adds a test to ensure changes to filters call the API again,
and fixes the prior test of pull to refresh which was not testing the
equivalent behavior when pulling to refresh (API on first load, so the mock
needed to be cleared).

* fix: restore observation fetch when focusing on myobs (#2511)

* fix: center number in photo count (#2512)

Closes #2506

* refactor: minor edits for clarity

* fix: specify CV model version in e2e test

Hoping this deflakes the e2e a bit. Not sure why the AICamera test ever worked
without this.

* v0.55.3

* v0.55.3+130

* New Crowdin translations by GitHub Action (#2481)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

* fix: get quality grade descs closer to designs; add Joanne to staff (#2517)

* fix: prevent BottomSheet title from overflowing over close button

* Update to Geomodel name

* Another name change

* Rename var and const names

* Rename const file references

* Also collect altitude from geolocation calls

* Update geomodel plugin

* Prop user location down into ai camera

* Add geo model file to be linked into xcode project

* Update env.example

* Update env.example

* Add geo model to cv model info file

* Update Developer.js

* Use user location for geo model while frame processing

useGeoModel boolean signals the frame processing plugin to use the geo model as well. It is turned on when we have a location.

* Update README.md

* Geo model is optional

* Adding a dummy neural network called geomodel.placeholder

This model doesn't do anything just returns the input. This is a overhead we could justify in my view as not to spend some more time figuring out how to make a model optional in an Xcode project.

* Geo model files are optional

* Update README.md

* Fix wrong model usage

* Update README.md

* This comment is no longer true

* refactor: minor edits for clarity

* Update to Geomodel name

* Another name change

* Rename var and const names

* Rename const file references

---------

Co-authored-by: Ken-ichi <kenichi.ueda@gmail.com>
Co-authored-by: Angie <angie@inaturalist.org>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-12-05 17:14:28 +01:00
Johannes Klein
290b2d9185 Update cv plugin (#2472)
Technically this means we could now support geomodel on iOS. We need additional work though to add the model to the app and connect to the frame processor.
2024-11-21 22:03:37 +01:00
Amanda Bullington
a4d2c7ca24 Restore language chooser and queue offline locale changes (#2329)
Restore language chooser with system locale (signed out users), web locale (signed in users), or app locale (as selected by user)
2024-11-03 20:12:06 -08:00
Ken-ichi Ueda
2a15187a9e 0.49.0 2024-09-27 13:56:16 -07:00
Ken-ichi Ueda
03771322d5 fix: StandardCamera was showing a black screen 2024-09-13 19:46:19 -07:00
Angie
2155b43966 Only display month and year for obscured and private geoprivacy (#2069) 2024-09-13 00:42:40 -07:00
Amanda Bullington
15382cee35 Integration test for photo import (#2058)
* Write an integration test for PhotoImport; closes #1430

* Add test for photo importer -> group photos -> obs edit flow

* Remove global image-picker mock
2024-09-10 16:26:23 -07:00
Ken-ichi
f4c7ee3f86 fix: don't ask for PHOTO LIBRARY permission if user can't change their mind (#2020)
* stop asking for PHOTO LIBRARY permission before import, b/c it's not
  necessary for importing
* use a forked version of react-native-cameraroll that allows us to write
  location metadata to newly-created photos, which was the really important
  thing we were using the PHOTO LIBRARY permission for

Closes #1612
2024-08-30 09:55:45 -07:00
Amanda Bullington
348e520f20 Use presentationStyle over full screen for photo library; closes #2006 (#2017) 2024-08-29 10:47:00 -07:00
Angie
190c3f3453 Make obs count text not tappable (#2009) 2024-08-28 19:04:35 -07:00
Ken-ichi
0b5c01c284 Fix broken Explore pagination (#1998)
Explore was not loading subsequent pages
2024-08-23 14:24:14 -07:00
budowski
313d8501e3 Updated react-native-exif-reader package version (nil check on iOS) (#1997)
Fixes a bug in which ObsEdit would crash when saving an obs w/ a photo but w/o location and w/o location permission.
2024-08-23 10:20:07 -07:00
Amanda Bullington
3b9739e254 Set threshold for top offline suggestion & sort by ascending rank (#1972)
* Update pods

* Show high scoring taxon as offline top ID; closes #1963

* Leave comment about offline threshold

* Add human offline test
2024-08-14 14:39:02 -07:00
budowski
f0d0445d36 Update react-native-exif-reader version (#1967)
Close #1866
2024-08-13 12:21:05 -07:00
Amanda Bullington
9b0029cb87 Stop location fetch when navigating to location picker (#1903)
* Stop location fetch when nav to location picker; let useWatchPosition handle acc

* Update pods

* Close delete obs sheet after single deletion

* Fix for e2e test: restore isFocused check

* Revert code
2024-07-31 18:45:43 -07:00
Amanda Bullington
9a0581670f Consolidate key-value stores (#1879)
* Switch to zustand mmkv storage instead of async storage

* Update hooks using async storage

* Remove asyncstorage

* Remove LocalPreferences

* Prevent collision upserting from infinite scroll & sync remote obs
2024-07-30 09:12:26 -07:00