* Add Whitney fonts to project
* Use styled components to pass whitney as default font for all app text
* Add header component using Papyrus as default font
* Update realm and add custom font examples for Android
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
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>
This attempts to remove the necessity of opening and closing Realm
connections, which can lead to stale connections and invalidated objects. I
did not try to remove direct access to realm from AuthenticatedService,
which exists outside of the component hierarchy and can't really access
context, but I think eventually we may want to bring all that functionality
within the component hierarchy so there really is only one Realm connection
in the app.
Probably still some bugs here. One major problem is that deleting the Realm
file does not seem to trigger a re-render of the RealmProvider. My workaround
was to delete all the data in RealmProvider connection to Realm before
deleting the file, but it seems kind of redundant.
Some other changes
* Updated react-native-image-resizer and worked around some regressions
* Needed to use Array.from on Realm collections in many places;
map( o => o ) doesn't seem to work for creating POJOs from realm objects any more
* React Native Paper provider needs to be inside the Realm provider for any
realm stuff to happen with rn paper modals
* Several workarounds for the fact that Realm objects don't behave like POJOs
* Added useApiToken hook (#158)
* Renamed the useUser hook to useRemoteUser, since that's what it was doing
* add location permission access to android manifest
* request permission to access location for android
* removes location fetching from the observation model and adds it to ObsEdit
* do not fetch location if it is existing observation
Co-authored-by: Merhawit Gubsa <merhawitgubsa@Merhawits-MacBook-Pro.local>
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
* Start using React Query to make remote data requests
* Renaming, standardized error handling from API calls, moving code
* Fixed messages test; changed useQuery mocking approach
* React Query should only retry for network issues
* Tried using useAuthenticatedRequest on TaxonDetail
* Clear the React Query cache on sign out
Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
* 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>
Prior to this commit, if I were to run `npm install` twice, I would get
this error:
```
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: inaturalistreactnative@0.1.1
npm ERR! Found: react@17.0.2
npm ERR! node_modules/react
npm ERR! react@"17.0.2" from the root project
npm ERR! peer react@">= 16.8.0" from react-spring@8.0.27
npm ERR! node_modules/react-spring
npm ERR! react-spring@"^8.0.27" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^18.2.0" from react-dom@18.2.0
npm ERR! node_modules/react-dom
npm ERR! peer react-dom@">= 16.8.0" from react-spring@8.0.27
npm ERR! node_modules/react-spring
npm ERR! react-spring@"^8.0.27" from the root project
```
Because `react-dom` was eagerly trying to upgrade `react-dom` to version
18, but we want to lock it to 17 to match our React version.
* Remove photo gallery provider
* Get tests passing
* Remove use-between & ability to remove photos from GroupPhotos and reflect that in PhotoGallery selection
* Use goBack method since not passing params back to PhotoGallery
* Remove params when navigating to photo gallery
* Lint fix
* Simplify uploadObservation code by moving some logic into Obs model
* Eslint fix: remove unused import
* Use realm to filter by observationPhotos which haven't been synced
* Tests passing
* Eslint fixes
* Create helper functions to check for unsynced obs including photos; show in ObsList
* Show photo failure error if upload fails on obs_photo API call
* Fix test
* Guard against 500 errors
* 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
* Simplify stack navigation for observations flow
* Navigation code cleanup
* Fix upload bugs from new API v2 verification
* Restore useObservations to previous version
* 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