* Remove console statements in production build
* Move uploadReducer into separate file
* Create reducer for creating obs; combine reducers
* Fixes with createObsReducer
* Move album, passes test states out of global context
* Bug fixes for ObsEdit flow
* Create photo gallery container
* Set accessibility test todo for PhotoGallery
* Improve FlashList performance MyObs
* Prevent flicker on modal close
* Create less rerenders in MyObservations
* Memoize drawer items for less rerendering
* Memoize custom tab bar
* Remove unused libraries and update snapshot
* Fix and prune dependencies
* Add AddObsModal tests
* Fix e2e test android by making comment confirm button visible
* Use callbacks and memoization to cause less rerenders
* Fix tests
* Remove unused code
* Remove log
* Minimize calls to check whether internet is reachable
* Remove unused code
* Obscuration cell and accuracy circle on ObsDetail map
* DetailsMap view
* Copy and share location from DetailsMap
* Patched react-native-maps to address bug with showsUserLocation
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Show taxon pins on Explore Map; allow navigation; closes#750
* Add test coverage for Map component
* Calculations for UTF position
* Map tiles pressable with UTF Grid overlay
* Fix tests
* Clean up tests
* Move login and camera screens into stack navigators
* Navigation fixes
* Create ObservationsStackNavigator
* Move drawer items into drawer nav
* Navigator fixes and improvements
* Nav improvements
* Fix navigation from ObsEdit
* Fix test
* Fix test
* Redo bottom tab nav with Explore as part of ObservationsStack
* Use ObsEdit and AddID in two stacks
* Move identify into ObservationsStack and fix headers
* Fix ObsEdit bottom button issue by using fixed positioning for tab bar
That required a few other changes to places where we were explicitly
compensating for the height of the tab bar. Also fixed some other minor
layout issues.
* Typo
* Add LocationPicker to ObservationsStackNavigator
---------
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Crosshairs, location accuracy warnings, text input for location picker
* Add LocationPicker tests
* UI improvements and code refactor into smaller components; get GMaps working
* Add shadows to icons/text boxes
* Use debouncing to avoid map jitter when typing in location
* Show place results & let user pick new location from web api
* Add tests for location picker with remote results
* Add gmaps api key to github actions
* Try adding manifest placeholders for env variable to work in github actions
* Add key to printf in github actions
* Try accessing GMAPS_API_KEY a different way
* Update android e2e env file step
This updates the "Create .env file" step to use printf to print the Google Maps key into a newly created .env file in the GitHub Action runner. Using the same key as in env.example.
* Fix newline
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* Adjust PhotoPreview sizes for StandardCamera for different breakpoints
* PhotoCarousel tests
* Merge main into branch
* PhotoPreview styling after merge
* Update PhotoCarousel snapshots
* Moved getBreakpoint into Sharedhelper, changes requested.
* PhotoPreview for large layouts
* Remove testing color
* Update snapshots
---------
Co-authored-by: Amanda Bullington <albullington@gmail.com>
* Add confirmation modal for discard photos in standard camera
* Add confirmation modal for discard photos in standard camera
* Fix tests
* Make requested changes
* Add close via overlay
* Add gradient and shadow to add obs button
* lint
* Fix tests
* Rebase main
* Switch drop shadow color
* Move drop shadow style into styles folder
* Remove intermediate View
* Delete getShadowStyle.js
---------
Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
* 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>
* 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
* Rewrite remote observation & update fetching using useQuery in ObsList
* Fix ObsList test by adding query provider
* Add padding to infinite scroll view indicator
* Only set next uuid for obslist if not still loading results from last api call
* Improve how ObsList works when observations don't fill screen
* Remove explore, explore provider, dropdown menu, and related screens; fix tests
* Move setIdBelow function into onEndReached
* Remove TranslatedText component from Button and pass in translation strings via props
* Fix rendering of bottom sheets
* Move inputs and login button above keyboard on focus
* Fix styling for scrollbar
* Allow editing of existing id; remove unused id buttons; closes#230 and closes#231
* Remove unused text component & update IdentificationSection to tailwind css
* Remove unused obsEdit styles; convert styles to tailwind
* Remove unused bottom modal component and obsedit stylesheet
* Add comments to useEffect for opening local observation; convert realm object to JSON
* ObsEdit loads obs from db only when required
* Use observation update API call for observations already on the server
* Change wasSynced to instance method; only upload unsynced evidence
* Move keyboard aware scroll mock to jest.setup
* Await uploading evidence instead of returning a different response
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Show skeleton UI for comment and update with real comment from server
* Update styling in ActivityItem to use tailwind; fix code combining id and comment arrays
* Use tailwind styling in ObsDetails
* Styling updates; remove unneeded code from ObsDetails test
* Show loading wheel when comment submitted; clear comment box when backdrop tapped
* Remove console log
* Separate AddCommentModal into its own component
* Use defaultValue instead of setting TextInput with value from state; styling fixes
* Fix for android build in build.gradle
* Styling fixes for text inputs
* Update bottom sheet mock to get tests passing
* Restore notes to same code as in main branch
Starts changing styles over to tailwind via nativewind.
* Update node to 16.17.0
* Use styled() to ignore flow errors about className or tw props when styling components with nativewind
* Upgrade realm to make test suite run; set failing test in Explore as todo
* Add workaround for getting pods to run with XCode 14
* Fix for loading remote obs with infinite scroll
* Add styling section to README
* Use IconButton from rn-paper to make buttons more responsive to press
* Add caret next to camera roll album picker
* Fixed broken addition of gallery photos to existing observation
* Removed flatlist from scrollview on ProjectDetails (apparently not allowed?)
* Moved border style from Image to container in PhotoCarousel (border color
not allowed for images?)
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Use authenticated query for search results
* Use search API for fetching places from Settings
* Use authenticated query for authorized applications
* Use authenticated query to fetch user.me
* Move fetch/search api calls into react query format, out of hooks
* Update with react query instead of hooks
* Fetch list of blocked and muted users with authenticated query
* Added Podfile postinstall block to get app running in a Simulator
* Use auth query in identify
* Upgrade Realm to 11.0.0-rc.0, most recent version that will work with RN 0.68.2
* Upgrade @realm/react library to 0.4.0; fixes initialization error on android due to importing realm
* Use authquery for explore provider
* ObsDetail wasn't showing the edit button for obs created while signed out
* simplified ObsEditHeader so it takes a full observation instead of relying
on the ObsEditContext
* ObsEdit now accepts an obs UUID as a param and loads that if the context
doesn't have a current obs
* null checks for API methods, mostly to prevent requests that won't work b/c
of missing params
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* Change bottom sheet modal to bottom sheet
* Give flatlist container a minHeight to make bottom sheet snap correctly when flatlist has few items
* Make entire header sticky above FlatList
* Hide header on scroll while keeping toolbar sticky on scroll
* Allow flatlist to scroll while bottom sheet modal up
* Use animated event on scroll with interpolation and stickyheaderindices to keep toolbar sticky while animating header
* Add accessibility label to logged out card
Closes#175
* Changes My Observations upload bottom sheet from modal to non-modal
* Give flatlist container a minHeight to make bottom sheet snap correctly when flatlist has few items
* Mock useLoggedIn hook in tests
* Move useCurrentUser to sharedHooks/ and mock in ObsList test
* Mock useUser hook
* Use useCurrentUser hook on user profile
* Downgrade gesture handler
* Replaced several separate button components with a single, configurable Button component
* Removed RoundGreenButton and SecondaryButton
Closes#121
Co-authored-by: Merhawit Gubsa <merhawitgubsa@Merhawits-MacBook-Pro.local>
* Add swiping in media viewer for photos which are zoomed out; closes#43
* Make media viewer full screen by overriding safe areas
* Improve custom swiper component (aka flatlist)
* Fix eslint errors
* Use onScrollEndDrag to handle left/right scrolling and update selected photo index
* Switch event handler to onMomentumScrollEnd
* Fixes for getting photo index while swiping only halfway
* Use IconButton for standardized back button in media viewer
* Update translations
* Add a skeleton instantly when user taps shutter
* Update styling for photo preview to make flatlist of images scrollable within container
* Fix styling for media viewer modal
* Create animated view overlaying camera; closes#108
* Make fade duration shorter
* Fix animation for fade out/in when tapping shutter
* Fix hardcoded styles; move to stylesheets; remove extra comments
* Add icons to obs card comments/ids
* Show red icons when user has unviewed comments/ids
* Mark obs viewed locally and with server via obs detail
* Mock i18next; get tests passing
* More progress on progress bar; make sure for loop uses all observations
* Remove attributes for API v2 obs create, cancel upload if user taps x
* Fetch current user id from auth service, not API call
* Add error message to uploader progress bar
These rules are largely based on the AirBnB ones, which are not quite standard
for the React Native world, where Prettier seems to be more common, but I
think they add a lot of useful checks, and unlike Prettier we can customize
them. This also just makes it easier for people on the iNat team to work on
the mobile app.
Some specific changes:
* Added eslint-plugin-react-hooks to eslint rules
* Added eslint-plugin-simple-import-sort to eslint rules
* Bugfix: could not import photo from gallery
* Added support for react-native/no-inline-styles eslint rule
* useUser should not bother fetching a user for a blank userId
* Show logged out green card at top of my obs screen when user logged out
* Allow user to save obs locally without being signed in; show number of unuploaded obs in top banner:
* Show login prompt in bottom sheet; hide sync button when logged out
* Upload prompt uses same styling as login prompt
* Delete realm file if user is installing app after deletion
* Code cleanup; add comment to checkForSignedInUser; closes#98
* Update eslint-config package
* Update RN maps
* Update styling for empty list
* Use third-party bottom sheet modal for login prompt & upload prompt
* Get tests passing via transformIgnorePatterns
* Extended RoundGreenButton to accpept `style` and `loading` props
* Removed Tab Bar
* Make the form react to the presence of the keyboard
* Stop form loading on failure or success, not immediately
* Use RoundGreenButton instead of one-off styles
* Adds a component for adding identifications, both from Obs Detail and Obs Edit
* Minor style and eslint change to disallow all-caps string literals
Closes#103
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>