Commit Graph
4619 Commits
Author SHA1 Message Date
Johannes Klein f320d7946a Add button bar UI without any logic 2026-07-01 12:54:40 +02:00
Johannes Klein 7adfdaa3e6 Add View and indent 2026-07-01 12:13:42 +02:00
Johannes Klein 5c0496bcf0 Render right icon based on selection 2026-07-01 12:05:55 +02:00
Johannes Klein 524bd1a3e7 Update project.pbxproj 2026-07-01 11:46:39 +02:00
Johannes Klein b1963dcc9d Add new icons 2026-07-01 11:45:05 +02:00
Johannes Klein c132be9daa Merge branch 'main' into mob-1502-tpod-b2-project-chooser-screen 2026-07-01 11:17:22 +02:00
Johannes Klein 9cc3e0ff5a Change list to be a set of Pressable with each row being selectable 2026-07-01 11:00:58 +02:00
Johannes Klein 1ddd418075 Map joined projects to pojos for UI 2026-07-01 10:29:49 +02:00
Johannes Klein 2f2af1e4db Mapping functions to get pojo from project realm 2026-07-01 10:26:56 +02:00
Seth Peterson f81c532bd6 Merge pull request #3768 from inaturalist/mob-1339-search-autocomplete
MOB-1339 ExploreV2 search autocomplete
2026-06-30 15:22:47 -05:00
sepeterson 9884facdd2 MOB-1339: no conditional rendering of list 2026-06-30 14:02:57 -05:00
sepeterson 56315a9c45 Merge branch 'main' into mob-1339-search-autocomplete 2026-06-30 13:00:46 -05:00
Johannes KleinandJohannes Klein 0fdf31fba8 Query for project summary fields; missing project requirements will crash the date format function (#3780)
Co-authored-by: Johannes Klein <17345891+jtklein@users.noreply.github.com>
2026-06-30 19:37:37 +02:00
Johannes KleinandJohannes Klein 653a8878d6 Remove double padding in ProjectListItem (#3778)
Co-authored-by: Johannes Klein <17345891+jtklein@users.noreply.github.com>
2026-06-30 19:36:58 +02:00
sepeterson 678d85d8cd MOB-1339: test import change 2026-06-30 12:28:13 -05:00
sepeterson 4e2b40c9d0 MOB-1339: result pressable and info icon sibling hierarchy 2026-06-30 12:28:13 -05:00
sepeterson f1ec83e1b9 MOB-1339: handle default cases as errors in search subject helpers 2026-06-30 12:28:13 -05:00
Ryan Stelly 277816b0e0 MOB-1458 use local observation ids (#3763)
* only return observations from useLocalObs

* remove unnecessary var

* export unsync'd filter

* remove obsoleted numUnuploadedObservations zustand state

* tests, typo

* fix tests

* add sync fields to keypaths & depp array

* consistent naming

* handle only ids downstream

* switch over to useIds

* restore ids return

* memoize realm mapping result

* extract realm hooks mocks into factory-available helper

* reapply to myobsresults

* reapply to myobsresults

* go back to wrapped ids for list parity

* fix test

* restrict mocked prop for more accurate MyObsSimple test

* comment cleanup

* fix fake timer flake w/ corrected setup

Claude:

1. withAnimatedTimeTravelEnabled({ skipFakeTimers: true }) does NOT call jest.useFakeTimers(), but still calls jest.setSystemTime(new Date(0)) in beforeEach — which requires fake timers.
2. Both SoundRecorder.test.js and PhotoDeletionExisting.test.js (and ObsEdit.test.js) call global.timeTravel(300) inside waitFor, which also requires fake timers.
3. Tests pass flakily when fake timers accidentally leak from another test file running in the same Jest worker. When they don't leak, timeTravel throws.
4. FadeInView is fully mocked to a plain View (instant) and Reanimated uses setUpTests(), so the 300ms timeTravel isn't actually advancing any real animation — it's just broken.

The fix: guard setSystemTime with the same check, and remove the timeTravel(300) calls from waitFor in tests that use skipFakeTimers: true.

* fix remaining time travel uses

* reset / restore timers to fix leaking fake timers
2026-06-30 11:48:47 -05:00
Seth Peterson bbd08c7c2b Merge pull request #3770 from inaturalist/mob-1339-universal-search-hook
MOB-1339 Hooks to support search autocomplete
2026-06-30 09:34:30 -05:00
Johannes Klein ddff74d31a Move hook directly inline and use as data 2026-06-30 16:10:39 +02:00
Johannes Klein 64ef745dd2 Simple list item 2026-06-30 16:04:38 +02:00
Johannes Klein 880e2dbc81 Add hook to get all persisted traditional projects 2026-06-30 14:59:56 +02:00
Johannes Klein 06dee97dcc Update SharedStackScreens.tsx 2026-06-30 14:17:59 +02:00
Johannes Klein 208847e666 Add new view wrapper for shared stack screens that do not need top inset 2026-06-30 14:17:31 +02:00
Johannes Klein 96affe6d06 Increase empty list padding 2026-06-30 13:53:01 +02:00
Johannes Klein d7b858893d Add item separator 2026-06-30 13:51:48 +02:00
Johannes Klein 2422debdbb Add stable empty list component 2026-06-30 13:49:34 +02:00
Johannes Klein c4019bfdc7 Fix autocorrected strings 2026-06-30 13:46:03 +02:00
Johannes Klein 220b2f41b9 Add stable footer component 2026-06-30 13:39:52 +02:00
Johannes Klein adab4521a3 Should be Body2 2026-06-30 13:29:00 +02:00
Johannes Klein c4a43c66d4 Add a CustomFlashList with stable header component 2026-06-30 13:24:24 +02:00
iNaturalist Crowdin SyncandCrowdin Bot d28d705671 New Crowdin translations by GitHub Action (#3772)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-06-30 09:13:17 +02:00
sepeterson 87d2711399 merge main 2026-06-29 17:10:17 -05:00
sepeterson 76c1601cff MOB-1339: normal import in test and support new results type 2026-06-29 17:05:07 -05:00
Abbey Campbell 2a90146ec2 Merge pull request #3771 from inaturalist/mob-1462-search-myobs-ui-2
Mob 1462 search myobs UI 2
2026-06-29 15:01:41 -07:00
sepeterson fb82af61e0 MOB-1339: select universal search results on type from API response 2026-06-29 16:49:24 -05:00
sepeterson 01a4470c6d MOB-1339: reuse project summary field 2026-06-29 16:04:10 -05:00
Abbey Campbell c21dadb4c4 skip gate when offline 2026-06-29 11:28:37 -07:00
Johannes Klein 480df93597 Merge pull request #3765 from inaturalist/mob-1497-tpod-a4-download-mapping-for-remote-observations
Traditional projects: PO and OFV download mapping for remote observations
2026-06-29 19:16:30 +02:00
Johannes Klein a003f30283 Merge pull request #3698 from inaturalist/mob-1294-use-explicit-vision-camera-format-on-android-match-ios
Use our camera format filters on Android as well
2026-06-29 18:56:42 +02:00
Johannes Klein 123e4d37d9 Remove lower case tests 2026-06-29 10:04:05 +02:00
Johannes Klein 2693618a84 Remove lowercase check 2026-06-29 10:03:01 +02:00
Johannes Klein 41564a65de Do not query for observation_field for an OFV
field_id should be enough
2026-06-27 22:22:54 +02:00
Johannes Klein 228059e6a9 Merge pull request #3761 from inaturalist/mob-1501-tpod-b1-obsedit-projects-row
ObsEdit projects row
2026-06-27 16:28:56 +02:00
Johannes KleinandJohannes Klein 4572810e66 Make ApiResponse results generic (#3773)
* Make ApiResponse type accept a generic to define the results array

* Use generic for defining results in SearchResponse

* Use generic instead of field

* Use generic object because we only care about the total_results count here

---------

Co-authored-by: Johannes Klein <17345891+jtklein@users.noreply.github.com>
2026-06-27 00:06:30 +02:00
Johannes Klein f94650392e Update strings.ftl 2026-06-26 23:54:00 +02:00
Johannes Klein cbe2499e5f Update strings.ftl 2026-06-26 23:51:59 +02:00
Johannes KleinandSeth Peterson 43ffda53ae Update src/i18n/strings.ftl
Co-authored-by: Seth Peterson <10458078+sepeterson@users.noreply.github.com>
2026-06-26 23:47:17 +02:00
Ryan Stelly 54517f6877 dedicated hook for "unsynced" and "missing basics" observations (#3743)
* only return observations from useLocalObs

* remove unnecessary var

* export unsync'd filter

* remove obsoleted numUnuploadedObservations zustand state

* tests, typo

* fix tests

* add sync fields to keypaths & depp array

* consistent naming

* reapply to myobsresults
2026-06-26 09:56:22 -05:00
Johannes Klein 73c598411c Merge pull request #3767 from inaturalist/mob-1496-tpod-a3-joined-projects-sync-to-realm
Traditional projects: joined projects sync to realm
2026-06-26 15:49:43 +02:00