-
Notifications
You must be signed in to change notification settings - Fork 173
fix: Use firstOrNull vs first to prevent NoSuchElementException #43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Use firstOrNull vs first to prevent NoSuchElementException #43
Conversation
|
Thanks. @webfrea-k can you repro / confirm that this fixes the issue in the sample app? I'm adding some unit tests in #37 which also sets up the test infrastructure. Seems like this is a good issue to try to write a test for. |
|
Hi @arriolac , I did try to reproduce it in the sample app, but was unable to. In my app, this happens when I am displaying pictures (with likes) from Firebase Firestore (via snapshotListener). Maybe there is a specific case where data is updated too fast. I believe it is still safer to use |
maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt
Show resolved
Hide resolved
maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt
Outdated
Show resolved
Hide resolved
|
LGTM. Failed checks appear to be due to finicky tests vs. anything caused by this change. Thanks @webfrea-k for this contribution! |
## [1.3.1](v1.3.0...v1.3.1) (2022-03-14) ### Bug Fixes * Use firstOrNull vs first to prevent NoSuchElementException ([#43](#43)) ([c68fc93](c68fc93))
|
🎉 This PR is included in version 1.3.1 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
* chore: Fix recommendation on setting the camera's position. (googlemaps#51) Change-Id: I5c2fc72df6e1aaade50f62ab825b13b506160a67 * chore(Test): Add UI tests (googlemaps#37) * chore(Test): Add androidTest. Change-Id: I35a30c7b70bbb88804db8ce5e0e8146c4aa5cb53 * Add connectedCheck step. Change-Id: I0a1530cc9133f2d07f682917f7ac709aee3e8406 * Run connectedCheck on app only Change-Id: I58d97e288db98eac56ef6df9659b653ac2aa92b2 * Upload test reports. Change-Id: I41ec0a6b30d77bf9803e53e7d6f93efbf01e642b * Remove failing test. Change-Id: I14c1b96d13fe796c5145de79df3f1f25046f00c6 * Add timeout to await call. Change-Id: I7dfd70c1e15f7a9c357d506006aae3c3c3426636 * Inject maps API key. Change-Id: Ia3fdd45c839f64df9610b93cc0023c80ab72e465 * Injecting api key sooner. Change-Id: I106362be7128ebdeed133febfc1c8dc2ad062370 * Create local.properties file. Change-Id: Ifab425e1a664da74c407bb6d2bf7bf76d1cd3854 * Move api key inject a step before connectedCheck. Change-Id: Idf737d9d1e7eab3d9b94d60d11cd9f2b0d8a70b2 * Simplify test workflow. Change-Id: Ic55a817da8fb344ac0185c50c107e582b6f42de5 * Add back synced test.yml and rename to instrumentation-test.yml Change-Id: I3a9ffe7b48591e7e0ec0c79f79d86a34aec6110a * Add debug statement. Change-Id: Ia75de3fe64826dea3cbd807a1c82cbd06e06a291 * Inject API key directly in AndroidManifest.xml Change-Id: Ie922328946106712d66791a0589f592b3109b36a * Update layout on sample app. Change-Id: I26075247a5cf0ba5a889fb67fbb08b6312cd076a * Use a single API level. Change-Id: Ifd2aa8abfce30251207e057565b6694787164db6 * s/waitForIdle/waitUntil Change-Id: Icef7d759573d1459a37e3d9058a1214ee2e52301 * Adjust rounding error. Change-Id: Ieefa005ab8c83e3d287a53f00c8b79c229f5a372 * chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#56) * chore: Add license headers. (googlemaps#55) Change-Id: I0029c52b31fdc977e5c6e105ace5df7097b7c287 * docs(README): Clarify that MapUiSettings should be preferred. (googlemaps#59) Change-Id: I4af84fa16323ddd867c08f9d2e65ffc8da3fe6bb * feat: Add support to get projection. (googlemaps#53) * feat: Add support to get projection. Change-Id: I999c56e6a31e33dd4c8d20215d24f56509a3e967 * Add tests for projection. Change-Id: Ia1a9b3dd95080e5df62e4aadf5fd46b03d82175b * Update waitUntil duration. Change-Id: Ic71bdd2fa8efe9a7a949d96b25010ee744c54a68 * chore(release): 1.3.0 [skip ci] # [1.3.0](googlemaps/android-maps-compose@v1.2.0...v1.3.0) (2022-03-10) ### Features * Add support to get projection. ([googlemaps#53](googlemaps#53)) ([e085588](googlemaps@e085588)) * chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#63) * fix: Use firstOrNull vs first to prevent NoSuchElementException (googlemaps#43) * Fixed Collection contains no element matching the predicate. * first or null overlay node; no wildcard imports * chore(release): 1.3.1 [skip ci] ## [1.3.1](googlemaps/android-maps-compose@v1.3.0...v1.3.1) (2022-03-14) ### Bug Fixes * Use firstOrNull vs first to prevent NoSuchElementException ([googlemaps#43](googlemaps#43)) ([c68fc93](googlemaps@c68fc93)) * docs: Link releases for required version of Compose. (googlemaps#66) Change-Id: I00da3f9b6db4b406da5aca61ed25550feb311afe * feat: Add marker drag event callback to Marker composable (googlemaps#11) * Fix renamed property name on README * Replace MarkerDragState with onMarkerDrag callback * Add sample code to show how to use marker drag callback * Fix API doc * Introduce MarkerPositionState * Remove onMarkerDrag callback * Update sample * Implement `rememberSaveable` for MarkerPositionState * chore: Bump version to 2.0-SNAPSHOT (googlemaps#68) Change-Id: Id18d60619ad573ef79b0c81dd05cda7e84fc8a4a * feat: Support showing/hiding info window. (googlemaps#69) * feat: Support showing/hiding info window. Change-Id: I3de945bd8847edd533b89d7b8f1381114df56469 * Update waitUntil timeout. Change-Id: I5bc6b43171745e2d3df20a09e04fc116297c196d * Add test for reusing markerstate. Change-Id: Iccdbd0f53f424df3bf055f9b3083640716be6487 * docs: Update README to use MarkerState. (googlemaps#70) Change-Id: I35b57a23cf80d8bf48bba31191f5415ebec72a3d * chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#73) * chore(release): 2.0.0 Change-Id: Id72487859f494d724cc15c55e66eb63d61b52c2d * chore: Remove core-ktx from demo app. (googlemaps#77) Change-Id: Iffc775b16a8727589957551bd91d5029d5f7ae33 * chore: Synced local '.github/' with remote 'sync-files/android/.github/' (googlemaps#80) * chore: Update blunderbuss.yml. (googlemaps#81) Change-Id: Ic0b2a92f1d2b37b4f86a0ad2935961d8748b0673 * feat: Support specifying animation duration for camera changes. (googlemaps#83) * feat: Support specifying animation duration for camera changes. Change-Id: I18e60574610a5c248627af75369498c9e3e16889 * Use null to indicate default animation duration. Change-Id: I13fcb192b0e43d40380d07ed2933cd2c29b7d14a * Use Int.MAX_VALUE for default animation. Change-Id: Ib77e018ad175e591419191a736d38c1b01bf3c45 * Check for MAX_VALUE for default animation. Change-Id: I65c007e74dc4d5f2d9b3469d2d4edf4c542fad72 * chore(release): 2.1.0 [skip ci] # [2.1.0](googlemaps/android-maps-compose@v2.0.0...v2.1.0) (2022-03-31) ### Features * Support specifying animation duration for camera changes. ([googlemaps#83](googlemaps#83)) ([aa02773](googlemaps@aa02773)) * chore: Add maps_android_compose_dependency region tag. (googlemaps#96) * chore: Add maps_android_compose_dependency region tag. Change-Id: I1569e7586eaefa51c05a15d6bf300809dbdece4e * Fix spacing. Change-Id: Ia2eb9574e3137472d7ec8448a70adfc74992b52d * chore: Edit maps_compose_dependency region tag. (googlemaps#97) Change-Id: Id511cb48f8ce6bb8fde6ac467d3877ffc07dc7ed * fix: Ensure CameraPositionState map reference clears when GoogleMap l… (googlemaps#109) * fix: Ensure CameraPositionState map reference clears when GoogleMap leaves composition. Change-Id: Iccf615e1a468ea7fbddb652052cec51b5d98a763 * Adding test for GoogleMap coming in and out of the Composition. Change-Id: I4e4bcdd39561ca17515e4c4891742c50bd14e409 * PR feedback. Change-Id: I4e7ce6dc006cee72f49e29b7eb15303ae71e4654 * chore(release): 2.1.1 [skip ci] ## [2.1.1](googlemaps/android-maps-compose@v2.1.0...v2.1.1) (2022-05-06) ### Bug Fixes * Ensure CameraPositionState map reference clears when GoogleMap l… ([googlemaps#109](googlemaps#109)) ([2f09c6d](googlemaps@2f09c6d)) * docs: Add compose version requirement to installation (googlemaps#101) * docs: Add compose version requirement to installation Users are installing older version of Compose and hitting problems - see: * googlemaps#67 (comment) * https://discordapp.com/channels/676948200904589322/939194796138975263/966366331492524102 This change makes it clearer in the installation instructions what the current base Compose requirement is without needing to look through the release notes. * chore: Fix formatting * docs: Add missing Javadocs for GoogleMap contentPadding parameter (googlemaps#93) docs: Add missing Javadocs for GoogleMap contentPadding parameter * chore: Synced file(s) with googlemaps/.github (googlemaps#114) * chore: Created local '.github/sync-repo-settings.yaml' from remote '.github/sync-repo-settings.yaml' * chore: Created local '.github/workflows/dependabot.yml' from remote '.github/workflows/dependabot.yml' * build: standardize check name (googlemaps#115) * build: update required checks (googlemaps#117) * chore: fix typo in check name (googlemaps#118) * chore: Bump library dependency in app (googlemaps#111) * chore: Synced local '.github/workflows/dependabot.yml' with remote '.github/workflows/dependabot.yml' (googlemaps#119) * chore: Synced local '.github/workflows/dependabot.yml' with remote '.github/workflows/dependabot.yml' (googlemaps#120) * chore: simplify dependabot workflow * chore: update pull request approval comment * chore: fix approval by providing url to pr * chore: add --approve * chore: only approve * chore: Use explicitApi. (googlemaps#121) Change-Id: Ibd3d442cefe59a194bb648143b802262e0ce5649 * build: change dependabot interval to weekly (googlemaps#125) * feat: Update to Compose 1.2.0-beta02 (googlemaps#124) * feat: Update to Compose 1.2.0-beta02 Change-Id: I37b7a0e3388a0bbb10ae75149ebd81a07e2bde26 * Fix tests. Change-Id: I9c1a71e78f527a7c2041a5e4af327ecd1728cb47 * chore(release): 2.2.0 [skip ci] # [2.2.0](googlemaps/android-maps-compose@v2.1.1...v2.2.0) (2022-05-23) ### Features * Update to Compose 1.2.0-beta02 ([googlemaps#124](googlemaps#124)) ([09765d1](googlemaps@09765d1)) * chore: update owners (googlemaps#127) * chore: Add GoogleMapComposable annotation. (googlemaps#130) * chore: Add GoogleMapComposable annotation. * Address PR feedback. Change-Id: I2819da87f7b3c3f1505402ff718b2139b6b1d114 * Remove GoogleMapComposable annotation from sample. Change-Id: Ide6c50f04e62ed4f4fae1d50f4500d677d41bd76 * docs: Update demo app to include more examples (googlemaps#94) It now includes a new main activity with buttons for each example - the previous example is now "Basic Map Activity". It also adds an example for using the map in a column to serve as documentation for googlemaps#78 - "Map In Column Activity". * fix: Prevent MapView from being recreated when still in composition (googlemaps#137) Addresses a bug wherein the underlying MapView gets recreated due to lifecycle events, however, the GoogleMap composable never leaves the composition. In this state, map properties (markers, camera position, etc.) don't get restored. Change-Id: Iba141aa2f325fa505ef8cc2f015117bcaea856c4 * chore(release): 2.2.1 [skip ci] ## [2.2.1](googlemaps/android-maps-compose@v2.2.0...v2.2.1) (2022-06-07) ### Bug Fixes * Prevent MapView from being recreated when still in composition ([googlemaps#137](googlemaps#137)) ([83b1cd7](googlemaps@83b1cd7)) Co-authored-by: Chris Arriola <c.rriola@gmail.com> Co-authored-by: googlemaps-bot <googlemaps-bot@google.com> Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net> Co-authored-by: Takao Chiba <chibatching@users.noreply.github.com> Co-authored-by: Chris Arriola <chrisarriola@google.com> Co-authored-by: Sean Barbeau <sjbarbeau@gmail.com> Co-authored-by: Justin Poehnelt <jpoehnelt@google.com>
This PR fixes the case where none of the elements in the collection is matching the predicate. I believe this happens when markers are removed and the info window is still open (or some other case modifying the markers, when they are no longer present on the map).
StackTrace:
Fixed #65