FYI, this also essentially outlaws variables in translation keys because a key
that is only used with interpolated strings will never appear as "used".
Also starts using a convention of adding info to i18n keys that do not relate
to the text after double dashes, e.g. `Unknown--taxon = Unknown` for a string
that is specifically meant to describe a missing taxon but only needs to have
the word "Unknown".
* Changed several accessibilityHints to 3rd person
* Made several accessibilityLabels shorter and more verb-oriented
* Removed many unused i18n keys
* Refactored variables in i18n keys
* Removed some unused code from the old Settings
* Navigate user to Suggestions after Camera; add location check to usePrepareStateForObsEdit function
* Test that Camera advances to Suggestions when checkmark tapped
* Use vision result as top suggestion on Suggestions screen
* Write AR nav test; filter vision result from all suggestions list
* Show LocationPermission on camera screen; navigate back from ObsEdit
* Updates to flow so user can back out of ObsEdit to cameras
* Fixes
* Add evidence to existing observation when backing out of ObsEdit flow
* Fix tests
* Add mocks for worklet functions
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Add test for UserProfile species button from MyObs screen
* Finish initial tests for navigating to Explore from MyObs
* Check API calls are made with correct params
* Use RootExplore screen in CustomTabBar and write test for navigating cyclical Explore -> TaxonDetails
* Add navigation check for UserProfile from root explore screen
* Simplify RootExplore screen; show nearby data for species view
* Mock location permissions for Explore navigation tests
* Update snapshot
* Merge from main
* Fix tests for Explore navigation
* Bump vision-camera
* Refactor patch
* Move patched orientation into patch functions file
* Update react-native-vision-camera+3.4.1.patch
* Switch to MacOS 13 runner
Vision camera requires XCode 15 to compile.
* Add step to specify XCode 15
* Higher level of logging
* Increase test timeout
* Add comment
* Remove navigation to obs without evidence for signed out user
* Patch for location permission not working on iOS
* Increase setup timeout
* Increase some more timeouts
* Revert back to less logging in CI
* Does it have to do with timeouts?
* Trace log level
* Update README.md
* Disable Homebrew’s auto update and install cleanup
* Setup ruby step
* Install pods only if not cached
* Revert "Install pods only if not cached"
This reverts commit 42a2ea02f9.
* Run simulator in headless mode, record all logs
* Increase timeouts again
* Revert "Remove navigation to obs without evidence for signed out user"
This reverts commit 2b4718f5ce.
* Add boolean to run use effect only once
* Did merge wrong code
* There is one more permission gate when entering obs edit now
* Add permission gate dismissal to signed out user test
* Add comment, rename state
* Lower action timeout
* Update react-native-vision-camera to 3.6, update Reanimated to v3 (#838)
* Bump camera and plugin
* Upgrade Reanimated and libs using it
* Update vision-camera mock
* Remove superfluous patch
* Fix type
* Add mocks for e2e tests because bottom sheet does not work on AOSP
* Update package-lock.json
* Update vision camera
* Bump vision camera
* Update vision camera patch version
* Remove superfluous patch
* Update vision camera
* Update vision-camera and plugin
* Use latest vision plugin = rebased v3
* Run npm clean-start
* No longer needed
* Duplicate prop
* Switch back to v3 code
* Upgrading Detox fixes issue with iOS tests failing
Because of previous lack of permissions.
* Update to latest detox version
* Npm i force
* Vision 3 e2e testing, (#1126)
* Remove jest detox config
* Revert e2e timeout increase
* Revert jest config timeout
* Use macos 14 runner which has XCode 15 per default
* Use latest bottom sheet
* Revert "Use latest bottom sheet"
This reverts commit c66cd09838.
* Adding comma back in
* Remove spaces
* Use latest vision-camera and plugin
* Use release version of vision-camera
* Remove force flag
* Update react-native-worklets-core
* Upgrade reanimated
* Update babel.config to allow nested worklets
* Run frame processor async
* Remove enableGpuBuffers flag
* Remove no longer needed comment
* Update comments about version
* Update vision-camera and plugin
* Code format
* Rename param
* Use latest-plugin
* Remove fps param from camera view
* Change confidenceThreshold to number
* API change for results structure
* Refactor fps to be checked inside hook
As of vision-camera 3.9.1 our camera feed is stuttering when calling the runAtTargetFps function inside the useFrameProcessor hook.
So, what I did here is to track the time and skip the frames that are received before the target fps is reached.
* Remove updates of non-camera related
* Update comment
* Code format
* Snapshot updates
* Revert changes to ios e2e
* Add a log for the average time it takes a frame to be processed
* Use release version of plugin
* Add a patch for runAsync to work in release builds
* Update react-native-worklets-core to 0.4.0
* Use latest plugin version
* Add a shift method to worklet arrays
* Use latest vision-plugin
This makes use of .shift() in worklet array and depends on the previous patch.
* Set result timestamp and show age of result in debug mode
* Fix an error with timestamp being undefined
* Remove log
* Use latest vision plugin
* Change result timestamp to pink
* Comment
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Restore Whitney Book as default font so <Text> isn't bold by default
* Refactor a function that fetches a class name to simply be a memoized
string
* Simplified some italicization logic in <ScientificName>
* Fixed bug where higher rank species names were rendered as an illegible gray
in ObsGridItem
* Show Explore view bottom sheet when HeaderCount tapped
* Fix ObsDetails crash when obs has no faves or obs POJO passed in
* End padding for description on ObsEdit
* Bottom padding for bottom sheets on devices w/ inset (e.g. no home button)
* Subheading1 is apparently supposed to be Whitney Book
* Second line of taxon name on TaxonDetail should be Subheading1
* Try to catch and log errors during upload
* Wraps some upload async methods with try/catch to attempt to log some
potential bugs
* Adjusts upload param mappings
* Try to get upload status to more accurately reflect the upload state
* Consistent upload success messaging after single upload
* Restyle community taxon section
* Use fave/unfave mutation in case of need_id metric
* Add votes field to Observation
* Change useIsConnected to TS
* Refactor fetching of remote observation into hook
Also includes the code to update local copy of a user's own observation
* Use const as key instead of string
* Remove unused prop
* Only send obs uuid to DQA
* Get obs in DQA container
* Rebuild object that is to check as it was send in nav params
* Refactor qualityGrade
* Refactor set to not loading state
* Update test to reflect fetching of obs
* Refactor too long lines
* Refetch remote observation after success in adding/removing vote
* Change qualitcMetrics to make use of observation.votes as well
Also refactored the object structure to use more efficient and performant filtering and finding in child components.
* Only use data slice for DQA buttons
* Refactor DQAButtons to only work with data slice relevant to that metric
* Special case for needs_id metric
* Also show loading indicator when fetching remote obs
* Add TODO
* Check only for vote of this user
* Optional chaining for user id
* Update test
* Enable fetching of remote if local is falsy
* Invalidate query on mutation
* Only set loading to false after refetch is finished
* Split up DQA test into unit tests and integration tests
* Use factory for mock user
* Add needs_id DQAVoteButtons unit test
* Revert hook to js
* Check for observation before using it
* Undo code style changes
* Remove unused value
* Refactor faves to be derived from votes
* Refactor needs_id interaction into standalone fcts
* Code style
* Added font files for Book and Semibold, Added MediumText component.
* Update snaopshots for font changes
* Body1 and Body3 changed to Whitney Medium, changes to italic fonts weights on ObsListItem, seperate component for ScientificName
* Only requests remote taxon if local is missing or hasn't been synced in a
week
* Returns a localized version of the remote taxon immediately without waiting
to get a newly-created record from realm
* Expands tests to use a unique realm, integrate more of our code, and check
to ensure the API gets called
* Show indicator while loading taxon on ARCamera
* Show iconic taxon found in model results if we can't load a remote taxon
* Show iconic taxon as backdrop for ObsImage whenever possible
* Separate zoom to user loc from nearby; fix Android map crash; disable map pitch and rotate
* Ensure Explore shows nearby observations after permission granted
* Ensure Explore shows nearby observations even when defaulting to grid/list
view
* Don't default the map to showing verifiable obs (this isn't the map's
responsibility, sometimes we want to map casual obs)
* Remove extraneous current location button on map (closes#941)
* Bugfix: Explore user filter didn't let you choose a user
* Remove place params for bounding box searches and vice versa
* Prevent Explore list and map from re-rendering every time you come back to Explore
* Fixed Explore header count overflow style
* Bugfix: Explore filters weren't 100% width on iPad
* More layout fixes; fixed bug w/ UserProfile when zero idents
* Add string
* Add a state that signifies syncing in progress
* Rename state as it no longer only pertains to uploading
* Set flag on button press
* Fix bug with wrong number of obs to upload shown
* Update MyObservations.test.js
* Add 1 to param for human readability
* Update MyObservations.perf-test.js
* Update ToolbarContainer.test.js
* Reintroduce number of finished uploads
* Update comment
* Use animation for gallery loading screen
* Added basic navigation test for StandardCamera & SoundRecorder
* Abstracted camera nav buttons and used in SoundRecorder
* Show sounds in the MediaViewer
* Added sounds to ObsEdit, w/ MediaViewer support
* Ensure sounds get both uploaded and added to observations
* Local sound deletion
* Remote sound deletion
* Rudimentary and deeply unperformative sound visualization
Closes#869
* Update strings.ftl
* Add date range option to Date Uploaded filter
* Use more precise type for mapBoundaries
* Close date time picker on confirm button pressed
* Add TODO
* Prop isChecked into CheckBox component
Closes#1153
* Update Checkbox test
* Add another snapshot
* Show observations by defaulting to user location
* Remove log
* Create useHeaderCount hook to load user location count before global count
* Header count and location permission fixes
* Remove log
* Fix Explore tests
* Test fixes and add blocked/denied state
* Add a safeRealmWrite transaction for better logging around writes; code cleanup and realm update
* Add safeRealmWrite to tests and make sure action is called synchronously
* Fix final test
* Only write to realm when useObservationsUpdates data changes; code cleanup
* Code cleanup
* Shows indicator in tab bar when you have new updates
* Should update every minute
* Make unread updates indicator go away when you view the updates
Closes#900
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>