Searches the local database for taxa if there are no online results.
Also
* typescript conversions
* refactor and consolidate view logic around taxon search
Closes#2348
Main fix was updating inaturalistjs to get a recent bug fix. Also submits a
JSON body instead of a pseudo-formdata-style body.
Also:
* Only try to process queued items that have not failed in the last minute
* Delete queued items after failing 3 times
* Fix index.js error handler bug that was squelching errors that weren't
getting caught by the ErrorBoundary
* Build out UI for multiple obs upload status and progress bar
* Show expected number of uploads/uploading in ObsEdit and MyObs progress bars
* Add test for upload progress
* Add tests
* Fix test
* Mock useUploadObservations to fix test
* Maybe fix tests in the cloud
* Reset unsynced number only if realm is still open
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.
* Change text to size 2
* Change text size for date to Body2
* Change text size for other data to Body2
* Adjust tappable height for other data
* Adjust tappable height for date picker
* DatePicker TS
* Change padding of location section
* Push pixels to center icons with first line of text
* Fix a UI issue with evidence list not scrolling to the sides of the screen
* Align all icons at same vertical axis
* Apply margin to evidence list and iconic taxon list
* Add usePerformance load time to cameras and suggestions
* Declare when to hide delete photo mode without a useEffect
* Use StatusBar hidden component in CameraContainer, instead of useEffects
* Directly handle discards from bottom sheet instead of using useEffect
* Rewrite a whole bunch of camera code to be more declarative and less imperative
* Make sure permissions gate works as expected
* Code cleanup
* Consolidate focus/blur listeners in AICamera
* Fix timing issues in Suggestions tests
* Fix tests
* Ensure photos are still saving to gallery when write permission given & update saving photo state
Container was needed to prevent permissions errors after Crowdin action adds
files as root, but that interfered with Ruby setup. This just uses chown to
do the same thing.
* fix: set up Ruby before linting in Github Actions
* chore: separate linting from fixing
Before we commit we want to fix as much as possible, but when we're checking a
pull request we're not going to commit anything so we want to know about all
the problems, including the fixable ones.
* Add Fastlate app store metadata files as Crowdin translation sources
* Update i18ncli.js to move and rename translations so Fastlane can use them
* Update `fastlane prod` so it prompts for public release notes and cues a new
release in the App Store that still requires the manual attachment of a
build
* Add `fastlane android upload_metadata` to upload metadata to Play Store
Closes#2248
---------
Co-authored-by: Ken-ichi <kenichi.ueda@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
* fix: filter by nearby when NEARBY button pressed again after granting
permission in Settings
* fix: recheck permissions when PermissionGate foregrounded
Previously we were only doing the foreground check for Android (#1206), but
iOS had the same problem when the user needed to leave the app to change
permissions in Settings.
Closes#2318
* fix: show LocationPicker on location tap when permission denied
* fix: zoom LocationPicker out all the way if no pre-existing coordinates
* fix: stop showing sound recorder when microphone permission denied
* fix: ask for permission on clicking the current location button on LocationPicker
Closes#2319
* Make sure API calls have options to fetch correct lexicons; separate capitalization logic for each lexicon
* Fix Explore nav test
* Use auth token to fetch observation after upload; simplify upserting in obs infinite scroll
* Fix useSyncObservations test
* reduce prop surface area for map-related components
* map just receives an observation, not a bunch of its properties
* adjust a lot of logic based on observation.obscured to more specific logic
based on whether the current user can view the coordinates
* hide the map on ObsDetails if there are no coordinates
* show the spec'd explanation for why coordinates are obscured
* remove a prop that just hides a component if true; that should really be up
to the outer context
* fixed a bug on ObsDetail where the remote obs wasn't getting mapped to
Realm-ish attributes
* prevent button mashing from opening multiple TaxonDetails
* clean out the state related obs create / edit after exiting that flow so
that TaxonDetails (or anyone else trying to detect an obs being edited)
doesn't end up finding it when the user has finished creating / editing.
Closes#2271
* Disable row when upload is queued
* Show UploadQueuedRotatingIcon if obs is in queue with no progress
* Refactoring to make list rendering a little faster
* Fix UploadStatus test
* Fix tests
* Remove outdated snapshot