Releases: inaturalist/SeekReactNative
Releases · inaturalist/SeekReactNative
v2.12.7
Fixed
- Locations fetched by Seek now have a maximum age of 20 seconds, which fixes part of #280 where all observations in a single app session (and sometimes multiple app sessions) were being posted to iNat with a stale location
- Improved the spotty cell signal experience (1-2 bars of cell service) for Seek by adding
Promise.race
to timeout after 0.5 seconds instead of waiting indefinitely for the default taxa photo to be fetched. Previously, a user would see a loading wheel on the AR Camera indefinitely, or sometimes the fetch would resolve after 20+ seconds. When a timeout occurs, the user will see the same screen they see while fully offline (only the user photo is shown on the match screen). - Added Cyperaceae to the Sept 2019 challenge and fixed challenge text typo
- UI fixes: padding around date in
ReplacePhotoModal
, back button on posting to iNatLocationPicker
- Add default value of zero observations if challenge mission observations are undefined; this fixes the following crash which happened when starting the June challenge from the Home Screen:
Error: Objects are not valid as a React child (found: object with keys {zero, one, two, few, many, other}).
Updated
- Challenge setup code now runs every time a user opens the app, which should fix a bug where at least one user was seeing the wrong dates for every challenge (they were all off by one month)
- Reverted to using release build of
react-native-geolocation-services
since this library was causing crashes on Android - Using
ObservationProvider
to store a single observation from the AR Camera or Photo Library; this fixes a bug where
a previous observation that was slow to resolve (with spotty cell signal) could show up on the Match Screen after a new observation was taken - Moved results & navigational functions into
GalleryImageList
instead ofGalleryImage
for better performance - Translations
v2.12.6
Added
- UI for copying scientific name (selected text + toast)
- New login to iNaturalist cards on Home Screen for logged in and logged out users
Updated
- Revamped iNatStats screen to show username, profile icon, and number of observations posted to iNat for logged in user (#317); logged out users see value props for why they might consider downloading iNat
- Upgraded to React Native 0.64.1
- Challenge Screen uses
SectionList
for better performance - Save SpeciesNearby state in global context provider; when user returns to Home Screen within an app session, they will see their previous state instead of needing to start over with a new species nearby fetch
- Move Achievements screen business logic into custom hooks and reduce number of times realm is opened to fetch data
Fixed
- Set
place_guess
to null if location name isn't available when posting to iNat (instead of maintaining previous guess)
Android
- Removed play-services dependency in top-level
build.gradle
file to address #274 - Update code to make Flipper usable with an Android device
- Downgrade
react-native-tab-view
to 2.16.0 since 3+ was causing crashes when used with picker library
iOS
- Fix permissions error in camera for non-English languages
v2.12.5
Fixed
- Imported images without metadata no longer default to checking for user location in posting to iNat flow; instead they say "undefined location" for better data quality / user privacy per this forum request
- Fetching seasonality setting directly from Realm, not a custom hook, so initial value is true/false instead of undefined (#332)
- Only try to create an observation once in the posting to iNat flow; if
observation.photo.id
already exists, skip to photo upload. This fixes an issue (second example) where Seek would tack on an identification to an existing obs if anyone suggested a different id from the original id (and it's one less unnecessary API call) - Added error messages when users forget to fill the username or password screen while logging in (before, they could advance to the welcome to iNat screen without actually logging in)
iOS
- Move
addARCameraFiles
back to every app launch instead of only first app launch, since the latter breaks the camera for offloaded Seek apps which no longer have taxonomy/model files in the main bundle - Show No Match screen instead of server error screen when vision results are empty for imported photos
Updated
- Image data from AR Camera / Gallery is now stored in
ObservationContext
and accessible throughout the app, meaning less props & parameters are needed for nested screens likeReplacePhotoModal
,FlagModal
,Social Screen
,PostToINat Screen
- Reverted Achievements screen to use
FlatLists
instead of using individualView
components for species and challenge badges, sinceViews
seemed to create a memory leak / performance hit on Android (it's worth noting that these nestedFlatLists
throw a couple warnings in RN which we're currently suppressing)
Added
- Clipboard allows logged-in users to copy scientific name from Species Detail screens
- Debug logging for posting to iNat flow and AR Camera
v2.12.4
Added
- May NatGeo challenge
Updated
- Users can now interact with the Species Nearby location picker even when device location services are turned off (the map does not display until they input a location name). This allows users to explore species nearby without Seek needing to know the user's location and without the user having GPS signal
- Location picker search now includes coarser place names
- Move more functions out of
App.js
and load some functions like quick actions setup for Android and moving AR camera files only on the first launch of the app to improve cold start time - Break
INatStatsPhotos
into its own component to improve loading of network requests oniNatStats
screen - AR Camera Warning screen up-leveled so it remains on top of the camera error screens instead of disappearing without user input
Fixed
- Localize rank names in Species Detail taxonomy tree & show common name instead of scientific name for species rank
- Set margins instead of fixed component height to make sure "Tap to load species nearby" text is not cut off in foreign languages (on small devices with large text enabled) (#326)
- Dates display the correct language when a user's device is set to a language with a specific region (i.e. French Canadian falls back to French instead of English)
- Show ReplacePhotoModal even if the original photo no longer exists on user's device
- Updated various accessibility labels, including SpeciesDetail radio buttons and gallery images
Android
- When location services are not enabled, tapping the user location button in the Species Nearby location picker shows a relevant alert (instead of silently failing)
- Set Google Backups to include
db.realm
andSeek
folder with thumbnail photos and exclude everything else - Update geolocation library to include new fallback to
android.location
when Google Play Services is not installed on a user's device (like Huawei or devices with GrapheneOS) (#274)
v2.12.3
Fixed
- Crustaceans now count correctly towards April challenge
- Scientific names are italicized with a lowercase epithet throughout the app
- Notifications and Settings screen use text width based on screen size, so text will stretch across larger screens (i.e. iPad)
- Display a coarser locality place name (country or feature level, instead of only locality and admin area) to support Caribbean islands like St. Martin and also display names for Oceans, Seas, Channels, etc. (#323)
Updated
- User settings (scientific name preference, auto capture preference, and local vs. global species chart preference) are now stored in Realm instead of global Context, which hopefully improves cold start time and makes it easier to add more user settings in the future
iOS
- Logging library (
react-native-logs
) added, which allows logged-in users to email logs for trickier-to-debug issues - March / April challenge now loading normally for iOS users who updated with TestFlight before March 1
Android
- Removed
piexifjs
library in RN; instead, setting the software tag "React Native iNat Camera 1.0.0" inreact-native-inat-camera
with all the other exif data. This ensures photos uploaded to iNat still have the right exif data & speeds up the time between taking a photo and saving the photo to the camera roll
v2.12.2
Added
- New check for iNat admins; this allows admins to see Seek challenges ahead of the 1st of the month for testing purposes
- AR Camera has a gear icon for quick navigation to Settings
- Upload status card is dismissible after all observations have uploaded successfully
- Posting to iNat uses an edit icon (instead of arrow) to encourage users to select a new species before posting to iNat
Fixed
- Added pluralization for translations in background uploader flow
- Show the correct error messages (login, internet, etc.) in the upload status card
- Achievements Screen is now showing the correct badges
iOS
- Devices <= iOS 14 will see new error text on the gallery screen explaining how to use selected photos in Seek
Android
- Upgraded
react-native-inat-camera
to address some crash fixes / null pointer exceptions - Reviews for the Play Store use the new in-app modal supported by
react-native-store-review
v2.12.1
Added
- April NatGeo challenge
Updated
- Minor accessibility fixes
- Further simplify navigation (now only one stack navigator instead of nested stacks), which means less boilerplate code for navigating to some nested routes
v2.12.0
Added
- New background uploader flow with error states, which allows users to 1) post to iNaturalist even when there is no internet connection and 2) continue using the AR camera without waiting up to 60 seconds for each individual upload to complete.
- Migrated Realm to include a new
UploadObservationRealm
model and added field toUploadPhotoRealm
to mark whether a user has seen the notification that their upload successfully uploaded - Anytime a user navigates to the Home Screen, the navigator will reset to that screen. That allows the UploadStatus component and SpeciesNearby component to be updated each time, instead of a stale state being pulled from the stack
Fixed
- Issue with recalculating species badges (looping through a filtered list of Realm objects meant that the loop didn't complete, so badges wouldn't calculate correctly until that function ran ~4x)
- UI fixes for Achievements Screen and Species Badge Modal on larger screen sizes, like iPad mini / iPads
- Posting to iNat uses a more specific time zone (i.e. PDT or MST) instead of simply using GMT-0700 and having the server guess which time zone is most accurate. This required updating Android
app/build.gradle
to useorg.webkit:android-jsc-intl:+
, which will make the app ~6MB larger, so we might consider rewriting to upload the observation with anobservation[time_zone]
string in the future
Improved
- Simplified Posting to iNat code / rewrote pickers to use Hooks
v2.11.4
Fixed
setupChallenges
is no longer called from asetTimeout
, which should make it possible for users to see newly-added challenges and challenge notifications on the HomeScreen- Removed loading screen from Gallery; check for unique photo assets before appending photos; attempt a second camera roll fetch in a
setTimeout
if the first fetch is not triggered to address #288 - Reset SpeciesDetail screen on focus, instead of on blur, to address #307 where a user could delete a species in Observations, navigate to SpeciesDetail, and see the previous screen / deleted species
- Temporarily rerun setup for March 2021 Challenge (and make sure to not create duplicate notifications while rerunning this code) to fix issue where beta testers cannot see the challenge or any logos / sponsor names
Updated
- NatGeo challenge
en.json
strings now include #NatGeoSeekChallenge hashtags - All
react-native-modal
modals use native driver for animations and backdrop to improve performance - Third-party libraries updated
Android
android.hardware.camera
is now an optional feature, which will allow Chromebook users without a back camera to install Seek. Seek automatically checks for a back camera, then a front camera, and displays the correct camera to the user- Updated gradle to 6.5 and added
ndk.debugSymbolLevel = "FULL"
to get rid of debug symbol warning in Play Console - Bumped target age from 5+ to 13+ in Play Store to address ongoing Google Maps API issues
v2.11.3
Fixed
- Added a missing
CLOSE_MODAL
action to thePostScreen
to avoid showing a blank white JS exception screen after a user clicked "OK" from the failed posting to iNat screen - Added cleanup function to
SpeciesChart
- No longer using
linkTo
method orlinking
prop for navigation, even with quick actions, since this was unnecessary and causing occasional crashes (#294). Instead, using normal navigation after the Splash screen.
Added
- Signup screen has "Learn more" popups explaining our data storage and licensing checkboxes (in parity with iNat web) (#239)
- Prep for NatGeo challenges March - June 2021, including updates to mission and challenge dictionary, translation strings, assets, new logo sizes, and styling cleanup for challenges
- Updated Realm to include new ChallengeRealm fields (
sponsorName
,logo
, andsecondLogo
) to help streamline the process for new challenge sponsors
Updated
- Removed full size photo loading screen for AR camera and gallery photos with offline results (attempting to make the AR camera -> Match screen flow feel a bit faster, with smoother navigation)
- Continued to fix Flow issues