* Upgrade helper: package.json
* Upgrade helper: gems
* Upgrade helper: Android
* Update AppDelegate
* Fix error in compiling
* Update package-lock.json
* Update Podfile.lock
* Update package-lock.json
* Update Podfile.lock
* Remove no longer needed mock
* Comment out entire test and not only the expect call
* Most other unit tests use this render helper function that
wraps the component in the entire app.
* Mock react-native exports as esModule
* Update .flowconfig
* Update Gemfile
* Revert "Comment out entire test and not only the expect call"
This reverts commit 8785f81529.
* Don't require TS extensions in imports
* Resolve all import extension errors
* Remove file extension from import paths used in mocks
* Remove .d of type definition file paths
* Remove .d of type definition file and import as type
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Use updated version
Version 3.16.0 introduces support for RN 0.76. 3.16.7 introduces support vor RN 0.77 so I decided for 3.16.6 for now.
* Update package-lock.json
* Update Podfile.lock
* Update UploadStatus.test.js.snap
* Comment out snapshot tests
* Comment out snapshot tests
* Text updates and AICamera icon update for onboarding carousel
* Update background image camera permission
* Update text for permission gates
* Update text match screen, login signup, and camera
* Fix AICamera test
* Update user-facing terminology from gallery to photo library
* Update terminology for devs to make the user-facing change easier to remember
* Update snapshots
* 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
* Write some failing navigation tests for MyObs navigation
* Add one more failing test to check for empty screen after all obs are deleted
* Update what happens on blur
* Changes to focus effect
* Revert "Changes to focus effect"
This reverts commit c779504cdf.
* Test: toolbar status reset when user leaves screen
* Unmock useFocusEffect in Jest; fix tests
* Minor nav mocking updates
* Fix import
* Show all obs photos in StandardCamera preview
* Clear camera Zustand state after saving photos as ObservationPhotos
* Load Photo URIs into Zustand state when entering the camera
* Rename rotatedOriginalCameraPhotos to cameraUris to match galleryUri and to
save us all a few keystrokes
* Reorder hooks dependencies
* Return uri from take photo hook
* Keep state of photos added in this instance of the camera
* List2 TS
* INatIconButton TS
* Refactor useBackPress to show discard modal only if photos taken during this instance of the camera
* Remove newPhotoCount var
* TS refactors
* fetchUserLocation TS
* Increase timeout
* Fix error
* Hoist deletePhotoByUri
* Delete photos on discard
* Reorder code
* Set saving photo on checkmark press
Closes#1556
* Update snapshots
* Remove delete test
* Create StandardCamera.test.js
* Check if image is there before deletion
* Update react-native-share-menu+6.0.0.patch
* Update e2e_ios.yml
* Update some types
* Fetch location continuously in cameras until accuracy falls below threshold
* Unit test for useUserLocation
* Added untilAcc option to useUserLocation
* Bugfix: ObsEdit was not always fetching location for new camera photos
Closes#1340
* Check for CV directory
* Save original, rotated photos for processing; clear directory when user lands on MyObs
* Reset evidenceToAdd when user lands on StandardCamera
* Disable photo taking while loading so one photo doesn't overwrite another
* 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
* 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>
* 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
* Add permission gate for adding photos
* Add permission gate for adding photos to library
* Show permission gate first time camera loads; allow navigation on future loads
* Show PermissionGate only when checkmark tapped
* Show permission gate when checkmark tapped
* Nav to obs edit when permission granted
* Fix ARCamera tests
* Update file names; remove unused files
* Rename method from usePrepareState hook
* Bugfix: TaxonDetails was crashing if it received a null taxon
* Send lat and lng instead of latitude and longitude to the score_image
endpoint
* Show offline suggestions when you are offline
* Show notice when viewing offline suggestions
* Moved code unique to useOnlineSuggestions into that file
* Ensure we use a medium size image to get suggestions when dealing with
remote URLs
* More logging around React Query retries
* Use default retry logic for useAuthenticatedQuery
* Made a module-resolver shortcut for tests
* Move offline notice above top suggestion; hide when offlines exist but onlines do too
* Add zustand to app
* Begin replacing ObsEditProvider with zustand for global state
* Use store and add tests
* Fix bugs
* Add test to check for deleted photos in StandardCamera
* Make sure evidence is only added to current observation; submit comment with ID on ObsDetail
* Fix ObsEditWithoutProvider tests
* Move store to where it's needed
* Fix tests
* Await evidence being added to obsPhotos from camera
* Add a note about slices to useStore
* Simplify ObsEditProvider by moving functions into local state & calling reducer less frequently
* Fix delete all observations
* Fixes
* Move index selection to MediaViewer via params
* Access ObsEditContext on top level of ObsEdit and pass props
* Move context to top level screen components
* Fix tests
* Use waitFor to fix ObsDetails integration test
* Alphabetize props; remove realm check; refactor new Id method
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
Separated PhotoCarousel view and delete into separate buttons
Fixes#837 by separating the two separate press interactions into two separate
buttons, which is probably also better for accessibility (screen reader can
read two separate labels for two separate actions). Also addresses a layout
bug in landscape on iPad.
Also *might* introduce a bug with orientation lock reverting when rotating
device while in delete mode. Only happens in Android, may not be new
* Remove console statements in production build
* Move uploadReducer into separate file
* Create reducer for creating obs; combine reducers
* Fixes with createObsReducer
* Move album, passes test states out of global context
* Bug fixes for ObsEdit flow
* Create photo gallery container
* Set accessibility test todo for PhotoGallery
* Improve FlashList performance MyObs
* Prevent flicker on modal close
* Create less rerenders in MyObservations
* Memoize drawer items for less rerendering
* Memoize custom tab bar
* Remove unused libraries and update snapshot
* Fix and prune dependencies
* Add AddObsModal tests
* Fix e2e test android by making comment confirm button visible
* Refactor camera buttons into their own components
* Standardize camera buttons & make TaxonResult a reusable component
* Fix button styling in tablet landscape; create confidence interval
* Create camera container with shared functionality for both cameras; fix tests
* Connect results & loading status from native predictions; standardize results on iOS/Android
* Fix Camera test by mocking CameraView and FrameProcessor components
* Make minimum viable RemoteComment
* Minimum vialbe RemoteIdentification
* Minimum viable remote project, place, and messages
* Create minimum viable records for all remote factories
* Remove factories for local device data
* Minimum viable local taxon, comment, id
* Minimum viable for local observation photo (photo has no primary key)
* Minimum viable LocalUser
* Minimum viable record for LocalObservation
* Ensure layout of the PhotoCarousel photos doesn't change in delete mode
* Stop conflating screen-size layout differences with tablet layout differences
* Bugfix: deleting one photo in the StandardCamera removed all photos
* Animated rotation of rotatable elements on StandardCamera
* Ensure loading status shows while first photo is being taken
* Tried to remove some open handles and shore up some unhappy tests
* Make MediaViewer a navigation screen; support changing landscape/portrait orientations
* Move device orientation into hook
* Minor fixes to styling
* Styling updates based on breakpoints