* 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>
* fix: show observation datetime in the obs time zone
I.e. it doesn't offset the observation datetime into the viewer's time zone.
* test: adjust to literal times by default
* chore: update to date-fns 3.0
* wip: show time zone names with all times
* show time zone name whenever a time zone is passed to a formatting function
* store observation IANA time zone in Realm
Note that this required patching around a bug in Hermes in which it should be
returning a GMT offset for the short time zone but is instead just returning
GMT.
* fix: omit time zone for unuploaded obs
* feat: show relative time differences on ActivityItem headers
* fix: hide zone/offset on ObsEdit before upload when signed in
* fix: hide clock icon in activity item header in new default mode
Also
* stop using checkCamelAndSnakeCase when not necessary in DetailsTab.js
* make POJO types only refer to other POJO types
* chore: validate and normalize translations in addition to src strings
* fix: globalize lat/lng/acc in LocationPicker
* refactor: extract language picker into component
* refactor: globalized text
* feat: added a script to i18ncli called "checkify" that generates
localization files prepended with a checkmark to help see strings that are
not globalized
* fix: localize date formatting (closes#1622)
Closes#2102
* TaxonResult TS
* Suggestion TS
* Do not show checkmark for logged out online suggestions
* Update strings.ftl
* From suggestions show bottom sheet on taxon detail
* Refactor updateTaxon
* Add text
* Another text
* Two more texts
* Fix import
* Function stubs
* Use a bulleted text list
* Restyle entire bottom sheet
* Code reorder
* Refactor saveObservation function
* Navigate to login screen for Upload now button
* Add key
* Save obs on press and nav to list
* Code style
* Get updated currentObservation immediately to pass to saveObservation
* Test AICamera with current user
* Show the bottom sheet only for logged out users
* Mock useCurrentUser hook
* Mock useCurrentUser hook
* Mock user
* Mock user
* Add new error type for 429; remove unnecessary logs
* Batch API calls for SpeciesSeenCheckmark
* Remove SpeciesSeenCheckmark test
* Revert logging errors
* Use Set for observedTaxonIds
* Add comments around logger.info statements
* Merge linting update
* More fixes from code review
* Switch to non-authenticated useQuery for fetching taxon ids seen by X user id
* Fix tests
* when importing photos, try to fill out EXIF data (location+date) from all photos, by order
* handle cases of adding photos to existing unsynced obs
Closes#1093
The problem seemed to be reverse geocoding the coordinates for each
observation before moving on to ObsEdit, i.e. when that threw an exception it
kind of silently cause Promise.all not to resolve... which is not supposed to
happen for a few reasons, foremost among them that we were catching the error
and returning null instead. So I'm still confused about why exactly this was
happening.
Regardless, geocoding is potentially slow and buggy, so IMO it's better to do
it on ObsEdit than in the provider, and only do it when we need it, i.e. when
the user is actually looking at the obs.
Some other minor changes
* Show loading indicator on GroupPhotos button while creating obs
* fetchPlaceName performs a null check on coords before making a network
request to test connectivity
* More precise error handling
* Removed some redundant await statements
* Mocked react-native-geocoder-reborn in tests
Closes#857
Writes photos out to external storage at capture time, and updates GPS EXIF fields when observation is saved. Closes#392. There is a known bug in Android causing landscape photos to be inverted.
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Format exif date as string for upload; remove unused code for handling evidence upload errors; closes#311
* Fix tests; add a new test to check for string formatting
* Fix exif test
* Make sure camera/no evidence still create a new observed_on_string
* Fix failing test with observed_on_string in fake LocalObs; closes#259
* Parse date into local timezone