mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-10-07 02:22:38 -04:00
* Do not filter out hidden comments and IDs when getting an obs from server * Do not add a filtered set of comments and IDs to local obs Searching for visibleComments and visibleIdentifications anyways gives 0 results outside this file. * Move file * Remove flow * Type fcts * Add a type to item * More types * Add field to RealmTaxon * Type navigation as used in ObsDetails * Update ActivityItem.tsx * Migrate FloatingButtons to TS * Change prop type * Rename ActivityHeader * Migrate ActivityHeaderKebabMenu to TS * Type functions * Add undefined as possibility from TextInputSheet callback * Revert "Add undefined as possibility from TextInputSheet callback" This reverts commit95b5fef2b9. * Revert "Type functions" This reverts commit6997f195ce. * Revert "Rename ActivityHeader" This reverts commite384c1f5a5. * Revert "Update ActivityItem.tsx" This reverts commitc1dc151b9a. * Revert "Add field to RealmTaxon" This reverts commit965af041c0. * Revert "More types" This reverts commit73af10bfcd. * Revert "Add a type to item" This reverts commit5e5bf0ebae. * Revert "Type fcts" This reverts commit84cac53e33. * Revert "Type navigation as used in ObsDetails" This reverts commit9febf9ea30. * Revert "Remove flow" This reverts commitdca054c212. * Revert "Move file" This reverts commitbf62c0db95. * Add UI for a hidden comment/ID * Rename export like file name * Update ID category text in tests * Ask for hidden status from API and persist in realm * Show fallback UI for hidden photos in PhotoContainer * Update strings.ftl * Show fallback UI for hidden sounds in SoundContainer * Change mock to remoteObservation Previously, this test file was relying on a faulty remoteObservation. The passed in remoteObservation was {} and because of the now removed filter code in useRemoteObservation what was passes into the test was {comments:[], identifications:[]} which made this test pass without ever using the useLocalObervation mock. * Add eye icon to photo * Add eye icon to sound * Add eye icon to comments/IDs
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { RealmContext } from "providers/contexts";
|
|
import type { RealmObservation } from "realmModels/types";
|
|
import safeRealmWrite from "sharedHelpers/safeRealmWrite";
|
|
|
|
const { useRealm } = RealmContext;
|
|
|
|
interface UseLocalObservation {
|
|
localObservation: RealmObservation | null;
|
|
markDeletedLocally: ( ) => void;
|
|
markViewedLocally: ( ) => void;
|
|
}
|
|
|
|
const useLocalObservation = ( uuid: string ): UseLocalObservation => {
|
|
const realm = useRealm( );
|
|
|
|
if ( !uuid ) {
|
|
return {
|
|
localObservation: null,
|
|
markDeletedLocally: ( ) => {
|
|
throw new Error( "UUID is required to update local observation" );
|
|
},
|
|
markViewedLocally: ( ) => {
|
|
throw new Error( "UUID is required to mark local observation as viewed" );
|
|
},
|
|
};
|
|
}
|
|
|
|
const observation = realm.objectForPrimaryKey( "Observation", uuid );
|
|
|
|
if ( !observation ) {
|
|
return {
|
|
localObservation: null,
|
|
markDeletedLocally: ( ) => {
|
|
throw new Error( "Trying to update non-existing local observation" );
|
|
},
|
|
markViewedLocally: ( ) => {
|
|
throw new Error( "Trying to mark non-existing local observation as viewed" );
|
|
},
|
|
};
|
|
}
|
|
|
|
const markDeletedLocally = ( ) => {
|
|
if ( realm.isClosed ) return;
|
|
if ( !observation || !observation.isValid() ) return;
|
|
safeRealmWrite( realm, ( ) => {
|
|
observation._deleted_at = new Date( );
|
|
}, "adding _deleted_at date in ObsDetailsContainer" );
|
|
};
|
|
|
|
const markViewedLocally = ( ) => {
|
|
if ( realm.isClosed ) return;
|
|
if ( !observation || !observation.isValid() ) return;
|
|
safeRealmWrite( realm, ( ) => {
|
|
// Flags if all comments and identifications have been viewed
|
|
observation.comments_viewed = true;
|
|
observation.identifications_viewed = true;
|
|
}, "marking viewed locally in ObsDetailsContainer" );
|
|
};
|
|
|
|
return {
|
|
localObservation: observation,
|
|
markDeletedLocally,
|
|
markViewedLocally,
|
|
};
|
|
};
|
|
|
|
export default useLocalObservation;
|