* Rename for consistency with obs photos
* Refactor to be similar to obs photos
* Include Sound as type
* Revert "Include Sound as type"
This reverts commit 3db88ae031.
* Revert "Refactor to be similar to obs photos"
This reverts commit 8ed7454be0.
* Revert "Rename for consistency with obs photos"
This reverts commit 674b921bab.
* Git mv without changes
* Add types
* Type api sound param
* Type fields s const
* Type fields as const
* Type api param
* Type new param
* The only call site of this function passes in only defined strings
* Adapted from Photo check for local path before deleting
* Type fct params
* Refactor constructor to only have a uri as param
* Refactor Sound constructor to have string as param
* Update Sound.ts
* Remove unused param
* Type fct params
* Type realm
* Also collect unsyncedSounds
* Create operations for sound uploads based on Sound only
* Add Evidence type
* Change a sound upload operation to work with a RealmSound
* Update realmSync to also just pass through Sounds
* Use server ID for attaching obs_sound to obs
* Also split photo pipeline for clarity
This is not a functional change. Also previously, only RealmPhoto s are uploaded, only RealmObservationPhoto s are attached or modified. Same as for sounds now.
* Update realmSync.ts
* Remove log
* Update realmSync.test.js
* Update mocks
* Update Sound map test
* Update prepareMediaForUpload.test.js
* Update prepareMediaForUpload.test.js
* Update mediaUploader.test.js
* 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>
* Update package.json
* Update package-lock.json
* Enable plugin
* Update package.json
* Update package-lock.json
* Update .eslintrc.js
* Create a new object instead of mutating the existing one
* Update SoundRecorder.js
* Do not mutate prop directly
* Do not mutate store value directly
* Disable compiler for zoom hook
Because it uses reanimated logic, and previous work laid out we should specifically disregard a rule of react here, unsure what to do here for now.
* Move array for tracking results into component
* Disable compiler for StandardCamera
* Do not mutate store value directly
* Disable compiler for FullPageWebView
* Do not mutate route param
* Remove unnecessary check if state is true before setting it to false
* Fix: user might be undefined
* Update reanimated usage with new compiler compliant API
* Fix: taxon might be undefined
* Fix: taxon might be undefined
* Fix: common pitfall of trying to render text outside of Text component
* Update interface
* Add package override
* Update package-lock.json
* Refactor updating of user preferences into User model
* Remove no memo directive from zoom
* Update file imports
* Migrate safeRealmWrite to TS
* Update interface and import path
* Update interface
* Refactor useLocaalObservation hook to not mutate return value of a function that should not be mutated
* Update tests to new return structure
* Remove useSafeRoute hook
We get the same information from error contexts and surrounding documents, and this hook was violating the rules of react by conditionally calling another hook.
* Use optional chaining
* Update TaxonNamesSetting.test.js
* Fix: use optional chaining
* Extend on RNTLs renderHook instead of re-implementing
* Remove unnecessary mock
* Remove unnecessary mock
* Remove unecessary mock
* Remove trailing spaces
* Log app version on start
This is helpful for log files sent in from users, to see what version of he code they were actually running while errors happened.
* Add some types
* Import as types
* Remove unused param
* Update types
* Add string
* Update strings.ftl
* Add explanatory text to login screen if logging in again
* Add TODO
* Define new error class
* Throw a RecoverableError if trying to upload without token
* Do not make a new Error if caught. Instead re-throw the one caught.
This preserves the RecoverableError type if thrown.
* Update string
* Add to return info of function that handles errors
* Recover from an error that login again might fix
By sending the user to the login screen. In case of a multi-observation upload we stop the current queue because subsequent observations will also error out (and send one navigation event each).
* Update errorHandling.test.js
* Revert "Add TODO"
This reverts commit 57437f1ece.
* Add unit tests for recovery options
* Update import
* Import realm models as types
* Remove unused import
* Add function param types
* Add function param types
* Rename param for consistency
* Remove unused function param
* Type param
* Update type
* Add TODO
* Import function param type
* File rename without change
* Update imports
* Add some fct types
* Add fct param types
* Add function param types
* Update ObservationPhoto.ts
* Remove unused param
* Type fct param
* Add type
* Remove unused param
* Update comment
* Add fct param type as accessed by local context
* Add types from what is accessed in function
* Add types
* Remove unused types
* Add basic type, as is used in local context
* Bring require statement back
* Import other function param types
* Add property types
* Fix wrong extends
* Assert inputs and outputs for mapping a local observation photo to server action
* Update unit tests for errors
* Rename file
* Update imports
* Revalidate jwt token before uploading observation and before attaching media
* Add logging to uploads and jwts
* Make logs more useful, add context and appstate
* Fix inat uploading mocks in tests
* Fix uploader test to reflect errors being thrown
* Split apart observation & media uploaders & add unit tests
* Use typescript
* Return only media items needed
* Fix tests related to uploading vs. uploaded status
* Remove undefined from union for observationUUID
Above and below in the callstack of those functions the type is only string, so that change seems to be fine for me to make directly on your PR.
* Extract an Operation interface (#2904)
* Type updates
* Update mapped param types
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Create module for realm syncing and write unit tests before refactoring
* Refactor realmSync functions for readability & make sure realm errors aren't silently swallowed
* unit tests
* Update tests to use factory functions for media
* Update tests to use factory
* Remove sanitize function since it's redundant with mapping; move mapping & add unit tests
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Create module for realm syncing and write unit tests before refactoring
* Refactor realmSync functions for readability & make sure realm errors aren't silently swallowed
* Move error handling to its own module and add unit tests
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Create module for realm syncing and write unit tests before refactoring
* Refactor realmSync functions for readability & make sure realm errors aren't silently swallowed
* Break progress tracking out into module with unit tests