Skip to content

Releases: inaturalist/SeekReactNative

v2.12.7

07 Jun 19:23
Compare
Choose a tag to compare

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 iNat LocationPicker
  • 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 of GalleryImage for better performance
  • Translations

v2.12.6

24 May 20:05
Compare
Choose a tag to compare

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

04 May 18:58
Compare
Choose a tag to compare

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 like ReplacePhotoModal, FlagModal, Social Screen, PostToINat Screen
  • Reverted Achievements screen to use FlatLists instead of using individual View components for species and challenge badges, since Views seemed to create a memory leak / performance hit on Android (it's worth noting that these nested FlatLists 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

26 Apr 21:16
Compare
Choose a tag to compare

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 on iNatStats 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 and Seek 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

12 Apr 18:45
2596cd1
Compare
Choose a tag to compare

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" in react-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

02 Apr 23:19
Compare
Choose a tag to compare

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

25 Mar 18:52
Compare
Choose a tag to compare

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

19 Mar 19:52
Compare
Choose a tag to compare

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 to UploadPhotoRealm 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 use org.webkit:android-jsc-intl:+, which will make the app ~6MB larger, so we might consider rewriting to upload the observation with an observation[time_zone] string in the future

Improved

  • Simplified Posting to iNat code / rewrote pickers to use Hooks

v2.11.4

05 Mar 21:46
Compare
Choose a tag to compare

Fixed

  • setupChallenges is no longer called from a setTimeout, 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

23 Feb 18:43
Compare
Choose a tag to compare

Fixed

  • Added a missing CLOSE_MODAL action to the PostScreen 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 or linking 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, and secondLogo) 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