* Update .eslintrc.js
* Create index.js
* Change Button usage in GridItem
* Replace imports
* Add strings
* Add hint prop to button
* Add a11y hint prop to EvidenceButton
* Add EvidenceButton to index
* Add a11y props to EvidenceButton
* Update UiLibrary.js
* Add a11y props to CloseButton
* Add CloseButton to index and UiLib
* Rename function
* Update string
* Add a11y props to AddObsButton
* Add Tabs to index
* Linebreak
* Add Typography to index
* Remove unused text
* Refactor UserIcon test coverage in it's own test
* Add UserIcon to index
* Add UserIcon to UiLib
* Add InlineUser to index
* Add Quality badge to index
* Update UiLibrary.js
* Remove unused component
* Change AddObsButton a11y label
* Change hint
* Use consistent uri in snapshots
* Add snapshot to InlineUser
* Fix wrong user key
* Update Tabs.test.js
* Snapshot TODO
* Update NavButton.js
* Update snapshot
* Add snapshot for active user icon
* Remove snapshot result
* Add ActivityCount to index
* Update UiLibrary.js
* Update copy for observation uploads
* lint
* Use compass rose icon
* lint
* Fix tests
* Change accessibility label and hint
* Fix translation comment
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Flag Id Modal created.
* Flag item modal radio buttons, styling, cancel button
* Flag Item Modal, Api Flags file created
* Added id field in Identifications realm schema, Flag Item Modal API call
* Clear form, toggle function, click title not just checkbox to toggle
* Fixed android checkbox toggle.
* Clean up. Flag ID ObsDetail. Closes#301.
* Flag realm model, flagged status shown on initial load
* Refresh observation after item flagged. In Progress.
* Remove console logs, add onError
* save button loading spinner
* Realm 31 migration for obsservation updated_at
* Flags test file
* FlagItemModal tests
* FlagItemModal tests
---------
Co-authored-by: Amanda Bullington <albullington@gmail.com>
* Mock INatPaperProvider to remove warnings about wrong icon names in jest; closes#421
* Remove unnecessary paper provider mock
* Add mocked views back to tests
* Create ActivityCount component and add to UI Library
* Add accessibility label
* Make ActivityCount component compatible with identifications
* Localize numbers; add large number to UI library
* Fix ObsCard tests with waitFor ActivityCount
* Make testID dynamic and optional in ActivityCount
* Incremental changes to navbar component
* Fix tests
* Fix ally tests
* Space parens
* Add box shadow for android
* Add accessibility role
* Add a11y
* lint
* Add basic tests
* Fix tests
* Fix tests
* Update colors
* Merge remote changes
* Lint
* Add more comprehensive test
* Incremental changes to navbar component
* Fix tests
* Fix ally tests
* Space parens
* Add box shadow for android
* Add accessibility role
* Add a11y
* lint
* Add basic tests
* Fix tests
* Fix tests
* Update colors
* Merge remote changes
* Lint
* Add more comprehensive test
* switch to react native paper
* Make explore button nav to explore
* Remove inline styles
* Fix border on android
* Use user icon component in nav bar
* Rename props
* Remove t from nav button
* Change accessibility props
* Use a11y role for tabs
* Update NavBar.js
* Mock route for messages
* Mock route in tests
* Remove not needed function
* Remove NavBar unit test
* Create integration test file
* Add container mock to user profile test
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Intro work to obs list toolbar redesign
* Replace current upload prompt w/ toolbar
* Fix and skip locale tests
* Add resetting error to cleanup func
* Update icon size
* Make loading bar more accurate
* lint
* Fix file name
* Make requested changes
* Space parens
* Update UserCard.js
* Fix UserCard background color
* Fix navigation to Explore screen
* Small changes, mostly to get LoggedOutCard visible and tests passing
---------
Co-authored-by: Amanda Bullington <35536439+albullington@users.noreply.github.com>
Co-authored-by: Amanda Bullington <albullington@gmail.com>
* Add heading typography components
* Add typography components for body, list, and subheading
* Add font sizes/line heights to tailwind css
* Replace Text components in UI library with new typography; closes#383
* Update pixel size of fonts and use Heading2 throughout UI library
* Remove repeated logic from code
* Fix sizes for typography components
* Add eslint-plugin-react-native-a11y dependency
* Do not fix warnings on eslint run
* Change all a11y error rules to warnings for now
* Add a11y hint to Tabs
* Add a11y prop to UserIcon
* Update strings.ftl
* Update strings
* Update README.md
* Update a11y props for InlineUser
* Update a11y label
* Add explanation for strings
* Add custom iNat icon font to iOS and Android
* Add custom icon to iNat UI library
* Create custom iNat icons using IconButton for add obs modal & footer
* Add icon placeholders to observation edit screen
* Test fixes for accessibility
* Move paper provider into new component; fix names in UI library
* Update README with clarified directions about changing the name of the .ttf file
Closes#110
* #110 - upload photos/sounds separately from obs_photos/obs_sounds, using new API v2
* Updated package-lock.json with new version of inaturalistjs
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Create base inline user component
* make icon closer to spec
* use premade func
* Add unit tests
* Add unsaved changes
* Add unsaved changes
* Change a11y role to get branch to run without errors
* Fix comments
* Lint
* Add nav to user profile
* Move InlineUser in UiLib and use currentUser if true
* Add a11y label and testID
* Add currentUser to UiLib
* Reorder tests
* Rename mock
* Await photos in tests
* Fix order
* Refactor Inline to use UserIcon and add no internet icon
* Update UiLibrary.js
* Test also that unwanted images are not present
* Use InlineUser component in ObsDetail and ActivityItem
* Update UserIcon.js
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Rename some functions and variables
* Rename function
* Revert to original timeout for tokens
* Get JWT for a 401 or 403 http errors in the react-query QueryClient retry handler
* Log API error to new logger
* Fetch token on every render in useApiToken hook
* Remove commented code
* Add comment
* Remove useEffect from useApiToken
* Revert "Remove useEffect from useApiToken"
This reverts commit 9cf1e0c0bc.
* Standard Camera adjust for width when screen orientation changes. Closes#350.
* Remove SafeAreaView from StandardCamera
* Reduced pressable area for camera button
* Lock StandardCamera orientation to portrait mode on smaller devices, detect device rotation
* PhotoCarousel responsive to device rotation, mocks added to StandardCamera tests
* Image rotation when rotation to and from landscape mode
* Regroup accessibility label strings at end of strings file
* Add accessibility test to AddID
* Add a11y labels to AddID
* Add a11y test to StandardCamera
* Add a11y props to StandardCamera
* Remove unit test with only todos
* Add a11y test to Messages
* Refactor PhotoScroll test into own file
* Add a11y test to ObsDetails
* Add a11y test to ObsList
* Add a11y matcher to PhotoGallery test
* Add a11y matcher to ProjectDetails test
* Add a11y matcher to ProjectObservations test
* Add a11y matcher to Projects test
* Add a11y props to ProjectList
* Add a11y props to ProjectTabs
* Add a11y matcher to Search
* Add a11y matcher to UserProfile test
* Add a11y test matcher to UserText test
* Update react-native-accessibility-engine
* Add a11y matcher to Tabs test
* Add a11y label to a selectable photo
* Refactor DataTab tests into separate file
* Refactor ActivityTab test out into own file
* Added a test how to check if a component uses a mocked container
* Add wrong a11y props to TextInput left icon
* Enable a11y test with actual BottomSheet because mock does not pass a11y props down
* Add a11y default props to Button
* Update Button component with new styling; closes#384
* Change button to Pressable instead of RNPaper to get border to show on Android
* Add disabled buttons to UI library
* Add multiple buttons in row
* Add multiple button examples
* Create reusable tab components
* Add tests, accessibility, and nit changes
* Update a11y state to use expanded instead of selected add a11y role to parent
* Update Tabs.test.js
* Use screen, rearrange test, added expanded state
* Define default prop outside of component
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
Removes intentional Realm file deletion to avoid unintentional Realm file deletion, though the latter remains something of a mystery.
* Configure Realm with the full path to the file
* Remove all Realm.open calls in AuthenticationService in favor of passing the
context/provider copy of realm (only one realm instance)
* Only delete the realm file on sign out if deleting realm contents fails for
some reason
* Replaced deleteRealm with semantically more accurate clearRealm
Closes#373
* Wrap focus errors in try/catch; show focus box immediately with correct coords; closes#355
* Throw errors which are not startFocusAndMetering error
Closes#363
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Update to newer Gesture.Tap and GestureDetector API; add double tap to zoom
* Update pinch to zoom to use newer Gesture.Pinch API
* Improve zoom by comparing saved value instead of checking velocity to determine zoom in/out
* Wrap focus errors in try/catch; show focus box immediately with correct coords
* Added withTiming to animate tap-to-zoom without animating pinch-to-zoom
Closes#355
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* #369 - use different library for location fetching
* Use @react-native-community/geolocation everywhere, including tests
Co-authored-by: Yaron Budowski <budowski@gmail.com>
* Set up logging for user signing in and out
* Set up button to email debug logs in About; closes#357
* Fix bug where signOut called too many times in App; code cleanup
* Add mocks to RNFS to get Auth tests passing
* Add simple test to make sure mailer is called on button press
* Added a file sharing fallback when Mail is not available in iOS
* Rename log extension
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>