mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2025-12-23 22:18:36 -05:00
* Refactor to use watchPosition
* Update useWatchPosition with permissions/retry
* Replace useUserLocation with useWatchPosition and fix tests; return userLocation from watch position hook
* Only update observation keys when there's an observation
* Improve TypeScript definitions
* Revert TypeScript commit
* Revert "Only update observation keys when there's an observation"
This reverts commit a4cd17a513.
* Code cleanup: make useWatchPosition more modular
* Code cleanup; location permission in ObsEdit instead of subcomponent
* Use correct accuracy in Camera photos
* Camera fixes
* Fixes to watching position in ObsEdit
* Fix useWatchPosition tests
* Fix tests
* Make sure state updates when renavigating to OsEdit; test fixes
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { galleryPhotosPath } from "appConstants/paths.ts";
|
|
import RNFS from "react-native-fs";
|
|
import { RealmObservation } from "realmModels/types.d.ts";
|
|
import {
|
|
TARGET_POSITIONAL_ACCURACY
|
|
} from "sharedHooks/useWatchPosition.ts";
|
|
|
|
const shouldFetchObservationLocation = ( observation: RealmObservation ) => {
|
|
const latitude = observation?.latitude;
|
|
const longitude = observation?.longitude;
|
|
const hasLocation = !!( latitude && longitude );
|
|
const originalPhotoUri = observation?.observationPhotos
|
|
&& observation?.observationPhotos[0]?.originalPhotoUri;
|
|
const isGalleryPhoto = originalPhotoUri?.includes( galleryPhotosPath );
|
|
// Shared photo paths will look something like Shared/AppGroup/sdgsdgsdgk
|
|
const isSharedPhoto = (
|
|
originalPhotoUri && !originalPhotoUri.includes( RNFS.DocumentDirectoryPath )
|
|
);
|
|
const isNewObservation = (
|
|
!observation?._created_at
|
|
&& !observation?._synced_at
|
|
);
|
|
const accGoodEnough = (
|
|
observation?.positional_accuracy
|
|
&& observation.positional_accuracy <= TARGET_POSITIONAL_ACCURACY
|
|
);
|
|
|
|
return observation
|
|
&& isNewObservation
|
|
&& ( !hasLocation || !accGoodEnough )
|
|
&& !isGalleryPhoto
|
|
&& !isSharedPhoto;
|
|
};
|
|
|
|
export default shouldFetchObservationLocation;
|