Commit Graph
82 Commits
Author SHA1 Message Date
Abbey Campbell 8209bbf8e3 remove dark mode 2026-01-20 13:30:07 -08:00
Ryan Stelly b78be9243d lint rule & autofix for "trailing comma" (#3299)
* (lint) MOB-1063 enforce trailing commas

* autofix trailing commas

* manually fix newly introduced maxlen violations

* add trailing comma convention to i18n build
2025-12-22 20:17:13 -06:00
Corey Farwell 4c8d4002df Introduce a type declaration file for Tailwind config colors. 2025-11-10 16:32:07 -05:00
Amanda Bullington 2ee0f14a2d Unify global shadow styling (#1947)
* Remove shadow from bottom sheets

* Shadow fixes

* Update snapshots
2024-08-09 19:03:19 -07:00
Amanda Bullington 37f6a5d7bf Remove old stylesheets (#1417)
* Remove old stylesheets and unused dictionaries

* Remove old stylesheets and unused dictionaries; cleanup global shadow styles

* Fix Heading1; update Tailwind config; add jest clear cache

* Update snapshots
2024-04-18 15:39:19 -07:00
Amanda Bullington 1d9adb0f51 More performance improvements (#845)
* 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
2023-11-06 12:24:31 -08:00
AngieandKen-ichi Ueda 1487e5f421 Accuracy circle and obscuration cell for obsdetail map (#744)
* 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>
2023-10-09 12:41:22 -07:00
Amanda Bullington 9ada594505 Show taxon pins on Explore Map (#778)
* 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
2023-09-21 16:08:39 -07:00
Amanda BullingtonandKen-ichi Ueda bc350c77b9 Nested navigators (#741)
* 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>
2023-08-23 22:07:07 -07:00
Ken-ichi Ueda 255a66499f Fixed TabBar top padding 2023-05-11 17:56:07 -07:00
Amanda BullingtonandJohannes Klein 5ee4a433df Add location picker to ObsEdit (#593)
* 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>
2023-04-26 10:51:05 -07:00
AngieandAmanda Bullington ae8e85098f 474 adjust photopreview sizes in standardcamera for different breakpoints (#559)
* 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>
2023-04-06 13:09:17 -07:00
Chris 206934f7ad 471 create camera cancel bottom sheet (#516)
* 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
2023-03-07 11:06:57 -08:00
Angie c3ad393a0d 455 update colors and unify usage in the app (#505)
* Update tailwind colors to match current designs, update PaperProviderColors, unify usage

* Change snapshot test colors to match current design colors

* Added accessibility labels

* Edited accessibility labels

* Remove surface color, unify usage

* Update colors
2023-03-06 11:43:42 -08:00
ChrisandJohannes Klein cb0a78f906 500 add obs btn styling (#504)
* 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>
2023-03-01 12:02:33 +01:00
ChrisandJohannes Klein 44b28ff54e Incremental changes to navbar component (#407)
* 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>
2023-02-03 11:42:55 +01:00
Amanda Bullington 3f125beab6 Framework for adding custom icons to iNatRN (#414)
* 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
2023-01-31 16:45:11 -08:00
Amanda Bullington 8a92fca2e8 Update obs list to use React Query, fetch observations via id_below (#273)
* 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
2022-12-09 12:17:26 -08:00
Amanda Bullington fb4bf79878 Increase pressable area for organisms on Add ID (#285)
* Tailwind styling

* Create pressable area around taxon image and names
2022-12-09 10:59:15 -08:00
Angie defea9d2cc Text overflow in AddID results. Closes #232. (#269) 2022-12-07 16:15:53 -08:00
Amanda Bullington fcbe56cc35 Show input fields above keyboard on Login Screen (#251)
* 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
2022-12-05 17:35:04 -08:00
Amanda BullingtonandKen-ichi Ueda b88030eab2 Allow existing id to be edited in ObsEdit (#242)
* 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>
2022-12-03 15:32:44 -08:00
Amanda Bullington c6361b022c Skeleton UI and server results for adding a comment in ObsDetail (#247)
* 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
2022-11-23 16:08:22 -08:00
Amanda Bullington 3fbf6cff7c Fix obs detail comment input (#228)
* 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
2022-11-08 16:52:32 -08:00
Angie a9ca4ff02b Replacing styles/colors.js with tailwind theme colors. Closes #196. (#209)
* Replacing styles/colors.js with tailwind theme colors. Closes #196.
* Added tailwind colors alias into babel module resolver extension, changed tailwind-colors.js to tailwindColors.js.
2022-10-31 20:38:06 -07:00
Amanda BullingtonandKen-ichi Ueda 5456758f27 Move hooks into sharedHooks folder; reorganize Observations and models/ (#194)
* Rearrange hooks and observation component code
* Rename models/ to realmModels/ and use babel aliases

Closes #155

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
2022-10-20 16:59:19 -07:00
Amanda BullingtonandKen-ichi Ueda c740a06224 Start using Tailwind CSS (#185)
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>
2022-10-19 17:15:55 -07:00
Amanda BullingtonandKen-ichi Ueda e81894d406 Use authenticated queries for fetch/search requests (#195)
* 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>
2022-10-19 13:01:04 -07:00
Amanda Bullington c4d9cd4dc6 Use babel-plugin-module-resolver (#188)
* Add alias and update eslint/flow to resolve modules

* Update aliases for components and api

* Add other src directories to module resolver aliases
2022-10-07 10:20:55 -07:00
Amanda Bullington af8f17190d Keep toolbar sticky & collapse header on ObsList scroll (#182)
* 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
2022-09-27 16:20:13 -07:00
Amanda Bullington 337d812ab9 UI updates to bottom sheet (#181)
* 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
2022-09-19 14:40:26 -07:00
Merhawit GubsaandMerhawit Gubsa 6919fac650 Create Custom button (#165)
* 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>
2022-09-01 18:40:56 -07:00
Ken-ichi Ueda e0e5064147 Close button should be visible on Login regardless of login state 2022-08-19 16:53:38 -07:00
Amanda Bullington c8f23fcb5f Add swipe to media viewer (#136)
* 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
2022-08-18 11:12:55 -07:00
budowskiandKen-ichi Ueda 6e65faab64 Obs Detail comment input in bottom sheet modal
Closes #105

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
2022-08-16 18:50:20 -07:00
budowski 9318f82cf9 Add photos to an existing observation
Also implements limits on number of media items one can import.

Closes #102
2022-08-15 15:22:36 -07:00
Merhawit GubsaandMerhawit Gubsa 5d4e58f60a Show title on Obs Edit (#148)
Closes #134

Co-authored-by: Merhawit Gubsa <merhawitgubsa@Merhawits-MacBook-Pro.local>
2022-08-11 18:19:01 -07:00
budowski 4d89160d07 Obs Detail closer to wireframe (#129)
Closes #106
2022-08-09 14:23:40 -07:00
Amanda Bullington da4c30364d Unviewed comments/ids in ObsList (#141)
* Update text color to match icon color for unviewed comments and ids

* Eslint fix

* Add cleanup effect for useRemoteObs hook
2022-08-08 11:23:49 -07:00
Amanda Bullington f9c566a77f Camera shutter effect and thumbnails (#133)
* 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
2022-08-05 09:53:06 -07:00
Merhawit GubsaandMerhawit Gubsa ad263f0b67 Add close button to the login screen (#140)
* added close button to login screen
* added style for the close button

Closes #122 

Co-authored-by: Merhawit Gubsa <merhawitgubsa@Merhawits-MacBook-Pro.local>
2022-08-04 17:48:09 -07:00
Amanda Bullington 65d67c2a64 Mark comments unviewed on MyObs & viewed on ObsDetail (#132)
* 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
2022-07-27 13:08:01 -07:00
Amanda Bullington 281a43440c Add position to tap to focus square; keep photo preview flush with top; closes #96 (#131) 2022-07-25 18:18:31 -07:00
Amanda Bullington 42e0e73c4b Upload progress bar (#130)
* 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
2022-07-25 18:18:20 -07:00
Amanda Bullington 3d65b1e294 UI updates to bulk uploader (#128)
* UI updates to photo gallery

* Add filter icons to group photos

* Styling for carets, multiple ObsEdit

* Standardize kebab menu in shared component

* Fix bug in removePhotos; change selection to kebab menu

* Create delete obs dialog which deletes obs from bulk uploader obs edit

* UI tweaks; closes #100

* Add precommit hook to translate strings

* Fix styling for obs edit header; add fonts to xcode

* Fix lint errors

* Add safe area provider to test & app

* Fix tests
2022-07-18 14:44:20 -07:00
Ken-ichi e929764c25 Adopted and enforced code style from other iNat Javascript projects
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
2022-07-13 13:55:59 -07:00
Amanda Bullington 3c7ac52eec Logged out state for MyObservations (#119)
* 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
2022-07-09 15:21:10 -07:00
Ken-ichi Ueda 96d0800a91 Sanity changes for the Log In form
* 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
2022-07-06 15:59:19 -07:00
budowskiandKen-ichi Ueda 4b4b0f9244 Add ID - initial commit (#103) (#113)
* 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>
2022-07-02 16:01:48 -07:00
Amanda Bullington 2e184b97f4 Enforce globalized text with eslint plugin (#120)
Add plugin to enforce globalized text with warnings; globalize some strings; closes #93
2022-07-01 12:42:24 -07:00