Commit Graph

14 Commits

Author SHA1 Message Date
Johannes Klein
9cab2a4008 Fix: sounds getting deleted during upload (#3598)
* 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
2026-05-07 21:22:27 +02:00
Ryan Stelly
b78be9243d lint rule & autofix for "trailing comma" (#3299)
* (lint) MOB-1063 enforce trailing commas

* autofix trailing commas

* manually fix newly introduced maxlen violations

* add trailing comma convention to i18n build
2025-12-22 20:17:13 -06:00
Corey Farwell
a43446909c Remove the need to specify TypeScript file extensions in imports (#3094)
* 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>
2025-09-07 23:41:42 +02:00
Johannes Klein
49091f8fc4 Enable React Compiler (#3082)
* 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
2025-09-01 17:06:51 +02:00
Johannes Klein
9c0fcf1d60 Recovery from observations not uploading (#3015)
* 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
2025-07-18 07:58:42 +02:00
Johannes Klein
979127ba02 Assert that observationPhoto position is a number (#3008)
* 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
2025-07-10 08:15:03 +02:00
Johannes Klein
62fe5a8f01 Revert "Update imports"
This reverts commit ca99dbfcf2.
2025-07-07 15:01:37 +02:00
Johannes Klein
ca99dbfcf2 Update imports 2025-07-07 14:53:43 +02:00
Amanda Bullington
7f42509797 Add logging to uploads & validate jwts at each upload step (#2923)
* 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
2025-05-29 16:42:34 -07:00
Amanda Bullington
47bbcbd18f Maintenance: break upload code into smaller modules -- API calls (#2900)
* 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>
2025-05-16 15:19:34 -07:00
Amanda Bullington
f592993889 Maintenance: break upload code into smaller modules -- data transformation (#2884)
* 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>
2025-05-12 12:16:52 -07:00
Amanda Bullington
6413ddb57f Maintenance: break upload code into smaller modules -- error handling (#2876)
* 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>
2025-04-30 13:42:17 +02:00
Amanda Bullington
a4f65a57de Maintenance: break upload code into smaller modules -- progress tracking (#2875)
* 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
2025-04-30 12:29:30 +02:00
Johannes Klein
d71ab7a358 Copy of: Maintenance: break upload code into smaller modules -- realm syncing functions (#2883)
* Create module for realm syncing and write unit tests before refactoring

* Refactor realmSync functions for readability & make sure realm errors aren't silently swallowed

---------

Co-authored-by: Amanda Bullington <albullington@gmail.com>
2025-04-29 16:48:50 +02:00