* Create performance tracking hook to see how long Notifications takes to load
* Move cache clearing to app start, out of MyObservations
* Remove isFocused hook from useLocalObservations
* Code cleanup
* Logging string cleanup
* Fix: bottom tabs are tappable when user scrolls past the top on iOS
This was causing location to be fetched even in situations where there was no
need, like ObsDetails and TaxonDetails, which was a bit creepy. This requires
us to explicitly turn it on, which I've done for Explore and the
LocationPicker.
Closes#2260
* update active tab logic based on current route
* add null check for getCurrentRoute to handle edge cases
* update active tab only when current route changes to mapped tab
* Refactor to use const from a central point
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* fix: prevent re-scrolling to activity item when returning to ObsEdit (closes#2232)
* fix: make entire activity item is visible when scrolling does happen (closes#2233)
* feat: scroll to newly-created comment or ID (closes#2231)
Plus some minor refactoring for clarity.
* test: wait for OTHER SUGGESTIONS in aicamera test in an attempt to deflake
* test: try a longer timeout in aicamera test, try launching app again if it fails
Add large font size scaling in webviews, particularly from the About screen.
Closes#2137, but there's probably more we could address in other issues,
particularly on Settings.
* Add specific keys for determiners as pronouns
* Adjust permission gate text
* Remove a duplicative key
* Remove jargon like 'modal' from accessibility hints
* Make x-of-y style phrases easier to pluralize
* Update staff list
* Dehyphenate (de-hyphenate?) real time, break up long sentence
Note that offsetting the onboarding images ended up being a bit hard. We're
mostly doing so with a cropped version of one of the images.
Closes#1906
Also tried to de-flake some tests:
* Use fake timers when possible
* Ensure time travel helper doesn't un-fake our timers
* Wait for time travel helper to finish so changes don't happen outside of
act
* Stop mocking useCurrentUser in integration tests; that's app code and should
not be mocked when integrating all parts of the app; instead use signIn /
signOut helpers
* Remove unnecessary direct uses of act()
* Mocked some inatjs calls to prevent React Query complaints about undefined
query return values
* Close onboarding before all e2e tests
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Add strings
* Show a bottom sheet to join
* Add bottom sheet for leaving project
* Add string
* About project text TS
* Fix wrong type
* Show explanation text for traditional project
* Get count of observations of the current user in the project
* Move constants one up
* Remove extra space
* Remove parens, more descriptive key
* Disable join and leave buttons while loading
* Use configured API and not hardcoded to production.
* Use a wrapper around Text for all typography components that sets
app-specific defaults, allowing default RTL to work
* feat: make iOS permission prompt text translatable
* fix: allow RTL layout of char limit on text input bottom sheet
* fix: allow RTL photo carousel on ObsDetails and TaxonDetails
Removes react-native-reanimated-carousel, which needs to be patched to support
RTL and maybe wasn't providing anything beyond FlatList for us anyway.
InfoPlist.xcstrings will not be automatically updated on Crowdin sync pending
a Crowdin bug.
Work toward #2099
* Add a cameraZoomRange default
* Small detox version bump
* Add a mocked camera with a take photo button
* An e2e mock for the computer vision plugin predicting a frame
* Mock taking a photo by loading the first photo from the CameraRoll
Closes#1981
This reverts commit 9e27f872d0.
This casued Notifications to reload almost every time you returned to it from
an observation, making it really hard to tap the next notification.
* Prevents text in explore species and observation grid view from flowing off grid in large font sizes.
Includes several UI fixes for Explore in large font sizes. Closes#2257.
* Updated snapshots and fixed failing test
* Refactor SliderControl into own file, migrate to TS
* Update vision plugin to customize a taxonomy rollup cutoff threshold
A number of 0.01 means all nodes with a cv score lower than that are excluded from calculating the top predictions. Thereby saving resourced on computing those.
* Enable setting of threshold via debug menu
The threshold defaults to 0.0, i.e. no nodes are filtered out, because score is always positive.
* Update vision plugin
* More appropriate range of values
* Change heading font size on project details
* Add View in browser button to project details
* Show join/leave button on all project types
* Switch to map when pressing the view in explore map section
* Add link role
Debouncing by relying on the nav path continued to allow multiple ObsDetails
instances to get pushed onto the stack b/c the nav path changed before a
subsequent tap was handled. This ensures that only one ObsDetails instance is
allowed per list per obs.
Closes#2204Closes#2216
---------
Co-authored-by: israr002 <israr002khan@gmail.com>
Co-authored-by: israr002 <66955016+israr002@users.noreply.github.com>