* IconicTaxonChooser no longer takes a taxon or manages its own state
* Setting iconic taxon filter to Unknown is now its own action
* Unsetting a taxon can be done with the CHOOSE_TAXON action by setting taxon
to null or undefined
* Omitted some extraneous params from tile requests
* UI changes to suggestions screen
* Update offline suggestions UI and allow refetch
* Allow user to search online suggestions with and without evidence location
* Add improve location button and refactor header
* Use loading screen correctly between location/ignore location
* Hide location permission button and code cleanup
* Fix test for suggestions changes
* Add and remove strings
* Drawer TS
* INatIcon TS
* Fix import
* INatIcon TS
* ActivityIndicator TS
* Button TS
* Optional param
* Add ViewStyle prop back in
* WarningSheet TS
* Add string
* Update Logout.js
* Add types
* Change log out label to not navigate but set state
* Imports
* Show warning sheet on log out press
* Actually sign out user from warning sheet
* Remove sign out fct from Logout screen
* Change logger context
* Remove Logout
* Use Heading4 instead of local style
* Use Icon instead of Button
* Pixel pushing
* Prop testID down
* Remove unused login state
* Login TS
* Update type
* Add bottom padding to Login text
* Body2 TS
* Checkbox TS
* Add bottom padding
* Add transparent mode to Checkbox
* Use transparent Checkbox in License form
* Update string
* Bit more padding
* Update SignUpConfirmation.js
* Navigate to home screen for text
* Error TS
* Authenticate user immediately after registration
* Update List2.tsx
* Update Checkbox.test.js.snap
* If authentication fails after reigstration only log an error but proceed
* Add loading state to register button
* Refactor upload code into hook and zustand slice
* Create a single source of truth for toolbar and individual progress
* Fix unit tests
* Fix more tests
* Continue trying to simplify upload progress and status code
* Continued overhaul of upload code
* Fix exclamation point in Toolbar
* Fix total toolbar progress
* Fix tests
* Update snapshots
* Code cleanup
* Update MyObs test
* Fix most tests by not deleting realm
* Keep attempting to make toolbar text clear in subsequent tests
* Mock Zustand and reset state after all tests
In theory this should make testing with Zustand simpler. The real kicker is
that resetting state will fail if we're not careful about manually replacing
nested objects in Zustand state updates.
* Bugfix: removeAllFilesFromDirectory works with File objects, not raw paths
* Update status text when uploads canceled
* Only show red exclamation rotating icon after all uploads attempted
* Fix progress bar with zustand nested object
* Fix toolbar progress
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Log the actual message we intended for JSON parsing errors
* Always use the configured tile URL instead of hard-coding it
* Use tiles.inaturalist.org whenever possible
* Correctly access local photos in ObsList/MediaViewer after app updates; closes#1420
* Use displayLargePhoto method in masonry layout
* Map bug fix; snapshot fix
* Add typescript parser and fix Flow errors in JS files
* Uninstall packages from react-native/eslint-config
* Fix all flow errors (or ignore them for unknowns
* Replace Whitney fonts with Lato
* Escape font family names so Lato works on iOS
* Update custom fonts
* Typography file cleanup
* Rename constants to appConstants
* Fix margins in AddObsModal
* Started separating UILibrary into components
* move sound photo icons to the bottom corners
* thick border for photoless styles
* altered icon drop shadows per designs
* might have fixed missing multiple photos icon on ObsGridItem
* Tried to get accessibilityHints to conform to Apple guidelines
* Tried to make some more helpful `accessibilityLabel`s
* Used fork of fluent_conv to support function results as selectors in Fluent
* Custom VOWORCON function for Fluent
Note that there are still many accessibility problems for screen readers. This
just tries to make sure the strings up for translation are somewhat less
confusing in that context.
Part of #1223
* Upgrade to RN 0.73 with upgrade helper
* Upgrade testing-library
* Comment announcements
* Comment out UserProfle test
* Mock function used to calculate masonry layout
* There should not be a modal here
* There is actually also no modal here
* Use View if SafeAreaView is undefined
* Replace fast image library that was failing tests because of not being maintained
* Clear mocks in useTaxon test
* Remove legacy deps from testing flow
* Snapshot update
* Revert "Snapshot update"
This reverts commit bca8b296df.
* Update package-lock.json
* Clean-start
* Update project.pbxproj
* Reenable test that failed before updating dependency
* Reenable test that failed because of dependencies
* Remove comment
FYI, this also essentially outlaws variables in translation keys because a key
that is only used with interpolated strings will never appear as "used".
Also starts using a convention of adding info to i18n keys that do not relate
to the text after double dashes, e.g. `Unknown--taxon = Unknown` for a string
that is specifically meant to describe a missing taxon but only needs to have
the word "Unknown".
* Changed several accessibilityHints to 3rd person
* Made several accessibilityLabels shorter and more verb-oriented
* Removed many unused i18n keys
* Refactored variables in i18n keys
* Removed some unused code from the old Settings
* Bump vision-camera
* Refactor patch
* Move patched orientation into patch functions file
* Update react-native-vision-camera+3.4.1.patch
* Switch to MacOS 13 runner
Vision camera requires XCode 15 to compile.
* Add step to specify XCode 15
* Higher level of logging
* Increase test timeout
* Add comment
* Remove navigation to obs without evidence for signed out user
* Patch for location permission not working on iOS
* Increase setup timeout
* Increase some more timeouts
* Revert back to less logging in CI
* Does it have to do with timeouts?
* Trace log level
* Update README.md
* Disable Homebrew’s auto update and install cleanup
* Setup ruby step
* Install pods only if not cached
* Revert "Install pods only if not cached"
This reverts commit 42a2ea02f9.
* Run simulator in headless mode, record all logs
* Increase timeouts again
* Revert "Remove navigation to obs without evidence for signed out user"
This reverts commit 2b4718f5ce.
* Add boolean to run use effect only once
* Did merge wrong code
* There is one more permission gate when entering obs edit now
* Add permission gate dismissal to signed out user test
* Add comment, rename state
* Lower action timeout
* Update react-native-vision-camera to 3.6, update Reanimated to v3 (#838)
* Bump camera and plugin
* Upgrade Reanimated and libs using it
* Update vision-camera mock
* Remove superfluous patch
* Fix type
* Add mocks for e2e tests because bottom sheet does not work on AOSP
* Update package-lock.json
* Update vision camera
* Bump vision camera
* Update vision camera patch version
* Remove superfluous patch
* Update vision camera
* Update vision-camera and plugin
* Use latest vision plugin = rebased v3
* Run npm clean-start
* No longer needed
* Duplicate prop
* Switch back to v3 code
* Upgrading Detox fixes issue with iOS tests failing
Because of previous lack of permissions.
* Update to latest detox version
* Npm i force
* Vision 3 e2e testing, (#1126)
* Remove jest detox config
* Revert e2e timeout increase
* Revert jest config timeout
* Use macos 14 runner which has XCode 15 per default
* Use latest bottom sheet
* Revert "Use latest bottom sheet"
This reverts commit c66cd09838.
* Adding comma back in
* Remove spaces
* Use latest vision-camera and plugin
* Use release version of vision-camera
* Remove force flag
* Update react-native-worklets-core
* Upgrade reanimated
* Update babel.config to allow nested worklets
* Run frame processor async
* Remove enableGpuBuffers flag
* Remove no longer needed comment
* Update comments about version
* Update vision-camera and plugin
* Code format
* Rename param
* Use latest-plugin
* Remove fps param from camera view
* Change confidenceThreshold to number
* API change for results structure
* Refactor fps to be checked inside hook
As of vision-camera 3.9.1 our camera feed is stuttering when calling the runAtTargetFps function inside the useFrameProcessor hook.
So, what I did here is to track the time and skip the frames that are received before the target fps is reached.
* Remove updates of non-camera related
* Update comment
* Code format
* Snapshot updates
* Revert changes to ios e2e
* Add a log for the average time it takes a frame to be processed
* Use release version of plugin
* Add a patch for runAsync to work in release builds
* Update react-native-worklets-core to 0.4.0
* Use latest plugin version
* Add a shift method to worklet arrays
* Use latest vision-plugin
This makes use of .shift() in worklet array and depends on the previous patch.
* Set result timestamp and show age of result in debug mode
* Fix an error with timestamp being undefined
* Remove log
* Use latest vision plugin
* Change result timestamp to pink
* Comment
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Restore Whitney Book as default font so <Text> isn't bold by default
* Refactor a function that fetches a class name to simply be a memoized
string
* Simplified some italicization logic in <ScientificName>
* Fixed bug where higher rank species names were rendered as an illegible gray
in ObsGridItem
* Show Explore view bottom sheet when HeaderCount tapped
* Fix ObsDetails crash when obs has no faves or obs POJO passed in
* End padding for description on ObsEdit
* Bottom padding for bottom sheets on devices w/ inset (e.g. no home button)
* Subheading1 is apparently supposed to be Whitney Book
* Second line of taxon name on TaxonDetail should be Subheading1
* Added font files for Book and Semibold, Added MediumText component.
* Update snaopshots for font changes
* Body1 and Body3 changed to Whitney Medium, changes to italic fonts weights on ObsListItem, seperate component for ScientificName
* Only requests remote taxon if local is missing or hasn't been synced in a
week
* Returns a localized version of the remote taxon immediately without waiting
to get a newly-created record from realm
* Expands tests to use a unique realm, integrate more of our code, and check
to ensure the API gets called
* Show indicator while loading taxon on ARCamera
* Show iconic taxon found in model results if we can't load a remote taxon
* Show iconic taxon as backdrop for ObsImage whenever possible
* Separate zoom to user loc from nearby; fix Android map crash; disable map pitch and rotate
* Ensure Explore shows nearby observations after permission granted
* Ensure Explore shows nearby observations even when defaulting to grid/list
view
* Don't default the map to showing verifiable obs (this isn't the map's
responsibility, sometimes we want to map casual obs)
* Remove extraneous current location button on map (closes#941)
* Bugfix: Explore user filter didn't let you choose a user
* Remove place params for bounding box searches and vice versa
* Prevent Explore list and map from re-rendering every time you come back to Explore
* Fixed Explore header count overflow style
* Bugfix: Explore filters weren't 100% width on iPad
* More layout fixes; fixed bug w/ UserProfile when zero idents
* Added basic navigation test for StandardCamera & SoundRecorder
* Abstracted camera nav buttons and used in SoundRecorder
* Show sounds in the MediaViewer
* Added sounds to ObsEdit, w/ MediaViewer support
* Ensure sounds get both uploaded and added to observations
* Local sound deletion
* Remote sound deletion
* Rudimentary and deeply unperformative sound visualization
Closes#869
* Update strings.ftl
* Add date range option to Date Uploaded filter
* Use more precise type for mapBoundaries
* Close date time picker on confirm button pressed
* Add TODO
* Prop isChecked into CheckBox component
Closes#1153
* Update Checkbox test
* Add another snapshot
* Remove Explore Filters screen
* State for Explore filters modal
* Accept modal state in Header to open modal
* Basic explore filters modal
* Save taxon object to explore state on update
* Update types expected
* Pass state and update function into filters modal
* Receive new props
* Destructure taxon from props
* Restyle header View
* Add main Heading
* Add taxon section
* Restyle modal header
* Add numbers badge component
* TaxonResult add prop for general on press
* Make TaxonResult checkmark optional
* DisplayTaxon can receive children as right-side component
* Refactor ExploreFilters component tree
* Move header out of scroll view
* Update ExploreFilters.js
* Update ExploreFilters.js
* Add icon to display taxon
* Update ExploreFilters.js
* Add basic taxon search screen
* Use taxon result without checkmark, send taxon to Explore screen
* Add string
* Accept taxon on explore screen
* Add a dummy screen for explore location search
* Add type
* Store place in state when received as route param
* Basic explore filters location section
* Add strings
* Move filter modal to separate component, add sort by props
* Add screen for testing purposes
Because atm we can not have two modals open at the same time, I move filters to a separate screen for testing the other modals.
* Add initial filter params and do not pass down undefined ones
* Pass function to update sort by down
* Create SortBySheet.js
* Navigate to test screen instead
* Sort by button text
* Add default filters definition
* Call reset function if filters are not default
* Add prop and function to reset
* Add user search screen
* Move search screens
* Move references
* Replace list with flash list
* Add item separator
* Remove footer
* Return user to Explore
* On press handle for user list item
* Fix wrong imports
* If a user is in prop show user icon and edit button instead
* Refactor display taxon to be inside a Pressable
* Missing import
* Receive user in explore rout params
* Quality grade section header
* Placeholder
* Add TODO
* Calculate number of filters set
* Only send user id to explore screen
* Do send back user object, filter out user_id
* Add project section
* Refactor project list item into standalone component
* Change initial value to undefined
* Add project search screen
* Remove loading state
* Show project in filter modal
* If project is in param set it to state
* Add Checkboxes to filter modal
* Remove comment
* Taxonomic Ranks section UI
* Use props for checkboxes
* Update ExploreContainer.js
* Calculate actual query param
* Is Most Faved possible?
* Actually set sort by query params
* Save hrank and lrank to explore state, prop down
* Update ExploreContainer.js
* Show ranks in button text
* Radio modal to test taxonomic ranks
* Add sticky toolbar
* Update strings.ftl
* Date observed section bottom sheet
* Date observed prop
* Change padding
* Date observed all UI
* Taxonomic ranks section
* Add todo
* Refactor open sheets state
* Update button
* Add exact date picker sections
* Store dates in state
* Update strings.ftl
* Refactor function name
* Refactor constants
* Reset date states on mode change
* Set new months to state on change
* Configuration for showing months checkboxes
* Receive and update months with checkboxes
* Refactor RadioButton sheet to export radio button row
* Add Media section UI
* Add media state to Explore
* Start with Establishment Means section
* Add checkbox texts
* Add states
* Functions to update state
* Add sort by param for most faved
* Spacing for checkboxes
* Wild Status section UI
* Wild status state
* Reviewed UI section
* Reviewed state
* Set current user id as viewer_id for review true to work
* Remove testing code
* Photo licensing UI section
* Photo license state
* Prop down photo license update, use param in search
Forgotten in previous commit
* Unused prop
* Add noStatus state
* Change Establishment Means status to TODO
* Add TODO text
* Console log for testing params
* After rebase from main this was necessary
* Simple switch between two UIs
* Simple explore context
* Lift Provider one up
* Copy over photo license to new provider
* Copy over review filter
* Refactor to use enum
* Copy over wild status, and enum refactors
* Refactor some more state
* Remove unused navigation
* Refactor one state
* Refactor some more state
* Refactor some more state
* Remove testing screen
* Refactor some more state and derived state
* Do send over project as param from Project Details
* Update FilterModal.js
* Rename components
* Remove unused param handling
* Add keys
* Remove substring for key
* lrank and hrank combined counts as one only
* Use the correct constants
* Add key
* Fix issue with button text
* Add View Wrapper for filters section
* UI cosmetics
* Compare current filters state to a snapshot
* Change button level to focus
* Add context action to revert to snapshot
* Confirmation dialog strings
* Add confirmation sheet
* Send current user along to Explore from Home Header
Closes#887
* Date bottom sheets texts
* Show texts in modal
* Set search to worldwide on param received
* Send taxon as param to Explore from Taxon details screen
Closes#889
* Show all observations worldwide of project
* On species view pressed should navigate to explore species view
Closes#893
* Go to explore from users profile
* Navigate to species view from user profile
Closes#894
* Enable unclear filters
* Add taxon to context
* Use context for explore params further down the tree
* Refactor one state
* Remove unused action
* Remove unused state
* Refactor function
* Refactor state
* Refactor place_id, which concludes reducer refactor
* Refactor names
* Do not use key inside context's state
* Add a11y label
* Remove duplicate test ID
* Remove superfluous component
* Create ProjectListItem.test.js
* Add failing filter modal test
* Remove log
* Rename function
* Months strings
* Remove todo
* A11y labels
* Remove TODOs
* A11y label
* A11y label
* Refactor taxon search hook
* Update FilterModal.js
* A11y labels
* A11y not possible in react-native-paper lead to test fails
* Update TaxonSearch.test.js
* Add dropshadow
* Another dropshadow
* Add TODO text to UI elements that are not finished
* Reverse order
* Refactor constants
* Revert "Refactor constants"
This reverts commit 2f52e936d6.
* Refactor to use constants
* Refactor constants use
* Refactor constant use
* Refactor constants use
* Refactor constants use
* Refactor constants use
* Refactor code
* Add validation of date format
* Correct type for snapshot action
* Add taxonomic rank enum
* Taxon can be undefined
* More precise type
* Fix wrong string usage
* Refactor radio button row component
* Refactor ProjectListItem import
* Example usage of new ui elements
* Pull sort by sheet back inside filter modal
* Rename params
* Add useEffect dependency
* Rename param
* Fix broken function