* Add activity indicator to fetch location
* Add e2e location mock (#643)
Adds a mock for fetchUserLocation intended to be used with e2e tests. `MOCK_MODE=e2e` must be in the ENV for this to work.
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Make sure GroupPhotos resets state of what is displayed; closes#636
* Allow user to return to GroupPhotos from ObsEdit; save grouped state in ObsEditProvider for easy cleanup
I'd rather not do this but I wasn't able to figure out how get Fastlane to
automatically detect both of the provisioning profiles we need, because with
the multiple targets we need to support sharing we now need two provisioning
profiles.
* 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
* Update UI for forgot password screen
* Update formData; add comment about 404 error from reset password
* Change API_HOST back to using staging / env config
* Hide sheet when nav back to login
* Restore prev version of react-native-mail
Fixes problem in which the StandardCamera did not render previews in the correct orientation in Android.
* useDeviceOrientation hook in StandardCamera
* Bugfix: useDeviceOrientation was not setting the initial device orientation
correctly
* Bugfix: deal with idiosyncracies in iOS vs Android orientation values when
making our own copies of photos
* Convenience scripts for running OS-specific e2e build and test
* Update login UI to be closer to Figma
* Update login UI with images from Figma
* Only show login form when either input field is tapped on Login screen
Prevents state changes in useLocalObservations from triggering re-renders in blurred consumer components that in turn block renders in focused components. Also memoizes UserText component to prevent unnecessary re-renders.
Closes#606
* Make MediaViewer a navigation screen; support changing landscape/portrait orientations
* Move device orientation into hook
* Minor fixes to styling
* Styling updates based on breakpoints
* PhotoScroll styling and header styling
* Data Tab renamed to Details Tab, styling to match designs, changed text strings,
* Fixed failing tests for ObservationLocation, dividers added for activity item
* Moved geoprivacy to ObservationLocation, removed console logs
* Moved suggest id and add comment buttons out of activity tab, added stickybar, PhotoScroll buttons, back button
* Show headerbackbutton when no image
* Bugfix: coordinates didn't have enough fractional digits
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
For the record, I don't think we should abandon the react-navigation header
here. There's definitely a way to specify a transparent header, we just need
to figure out how to style it correctly.
Specifies the number of digits in the translation text and not in code. ALso
fixed a few minor problems with FTL comments and allowed UserText to format
children as text, not just with a prop.
* Refactor ObsStatus, add filled property
* Remove viewed prop from observation
* Update properties for ObsDetail mark viewed
* Use separate fields for comments and ids for ObsStatus
* Add hook for fetching updates
* Unit tests for the updates hook
* Unit tests for different paths for updating the realm observation when using the hook
* Update MyObservations.test.js
* Add integration test if updates has been called in my observations
* Update Podfile.lock
* Update observation to not viewed if the keys have not been initialized
* Add test case if observation fields are not initialized
* Add test case
* Refetch stale data on coming back from the background
* Subscribe to observation updates also in ObsDetail screen
This also invalidates and refetches the data after a successful mutation of the id or comment being viewed.
* Refetch observation updates data on sync button press
* Throw error in updates query
* Return refetch function from hook
* Add mock to ObsDetails
* Remove unused var
* Update useObservationsUpdates.test.js
* Reset realm viewed state to true ...
for all observations on app mount and coming to the foreground.
* Reorder function calls
* Change hook to use boolean as enabled param
* Create ObsDetails.test.js
* Update date handle tests to make sure Remote data classes have parseable date
* Add test case for comment and identification
* Update ObsDetails.test.js
* Also check for user in ObsDetails
* Refactored into separate hook for App.js
* Unit and integration test for new hook
* Rename const
* Rename field
* Rename field
* Export query key from hook
* Refactor true check
* Additional methods for obs being viewed or not
* Changed test description
* Add per_page to observations updated
* Remove zoom related handling by reanimated and gesture handler
* Enable zoom directly from vision camera
* Do not allow pointer events on the animated shutter effect over the camera
* Update package-lock.json
* Update package.json
* Reduce size of StandardCamera button bar on tablets to maximize area that receives pointer events
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>