Skip to content

Commit

Permalink
Merge 2bec1d3 into 34bedde
Browse files Browse the repository at this point in the history
  • Loading branch information
arriolac committed Sep 16, 2021
2 parents 34bedde + 2bec1d3 commit c4cec3e
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 41 deletions.
3 changes: 2 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ android {

defaultConfig {
applicationId "com.google.maps.android.ktx.demo"
minSdkVersion versions.android.minSdk
minSdkVersion 24
targetSdkVersion versions.android.targetSdk
versionCode 1
versionName "1.0"
Expand All @@ -41,6 +41,7 @@ android {

kotlinOptions {
freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
jvmTarget = "1.8"
}
}

Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ buildscript {
'junit' : '1.1.1',
],
'junit' : '4.12',
'kotlin' : '1.4.32',
'kotlinxCoroutines': '1.4.3',
'kotlin' : '1.5.30',
'kotlinxCoroutines': '1.5.1',
'mapsBeta' : '3.1.0-beta',
'mockito' : '3.0.0',
'mockitoKotlin' : '2.2.0',
Expand Down Expand Up @@ -132,7 +132,7 @@ subprojects { project ->

// Code coverage
jacoco {
toolVersion = "0.8.4"
toolVersion = "0.8.7"
}

tasks.withType(Test) {
Expand Down
1 change: 1 addition & 0 deletions maps-ktx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ android {

kotlinOptions {
freeCompilerArgs += '-Xexplicit-api=strict'
jvmTarget = "1.8"
}
}

Expand Down
59 changes: 26 additions & 33 deletions maps-ktx/src/main/java/com/google/maps/android/ktx/GoogleMap.kt
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,6 @@ public object IndoorBuildingFocusedEvent : IndoorChangeEvent()
*/
public data class IndoorLevelActivatedEvent(val building: IndoorBuilding) : IndoorChangeEvent()

// Since offer() can throw when the channel is closed (channel can close before the
// block within awaitClose), wrap `offer` calls inside `runCatching`.
// See: https://github.com/Kotlin/kotlinx.coroutines/issues/974
internal fun <E> SendChannel<E>.offerCatching(element: E): Boolean {
return runCatching { offer(element) }.getOrDefault(false)
}

/**
* Returns a [Flow] of [CameraEvent] items so that camera movements can be observed. Using this to
* observe camera events will set listeners and thus override existing listeners to
Expand All @@ -126,16 +119,16 @@ internal fun <E> SendChannel<E>.offerCatching(element: E): Boolean {
public fun GoogleMap.cameraEvents(): Flow<CameraEvent> =
callbackFlow {
setOnCameraIdleListener {
offerCatching(CameraIdleEvent)
trySend(CameraIdleEvent)
}
setOnCameraMoveCanceledListener {
offerCatching(CameraMoveCanceledEvent)
trySend(CameraMoveCanceledEvent)
}
setOnCameraMoveListener {
offerCatching(CameraMoveEvent)
trySend(CameraMoveEvent)
}
setOnCameraMoveStartedListener {
offerCatching(CameraMoveStartedEvent(it))
trySend(CameraMoveStartedEvent(it))
}
awaitClose {
setOnCameraIdleListener(null)
Expand Down Expand Up @@ -186,7 +179,7 @@ public suspend inline fun GoogleMap.awaitMapLoad(): Unit =
public fun GoogleMap.cameraIdleEvents(): Flow<Unit> =
callbackFlow {
setOnCameraIdleListener {
offerCatching(Unit)
trySend(Unit)
}
awaitClose {
setOnCameraIdleListener(null)
Expand All @@ -202,7 +195,7 @@ public fun GoogleMap.cameraIdleEvents(): Flow<Unit> =
public fun GoogleMap.cameraMoveCanceledEvents(): Flow<Unit> =
callbackFlow {
setOnCameraMoveCanceledListener {
offerCatching(Unit)
trySend(Unit)
}
awaitClose {
setOnCameraMoveCanceledListener(null)
Expand All @@ -217,7 +210,7 @@ public fun GoogleMap.cameraMoveCanceledEvents(): Flow<Unit> =
public fun GoogleMap.cameraMoveEvents(): Flow<Unit> =
callbackFlow {
setOnCameraMoveListener {
offerCatching(Unit)
trySend(Unit)
}
awaitClose {
setOnCameraMoveListener(null)
Expand All @@ -244,7 +237,7 @@ public suspend inline fun GoogleMap.awaitSnapshot(bitmap: Bitmap? = null): Bitma
public fun GoogleMap.cameraMoveStartedEvents(): Flow<Unit> =
callbackFlow {
setOnCameraMoveStartedListener {
offerCatching(Unit)
trySend(Unit)
}
awaitClose {
setOnCameraMoveStartedListener(null)
Expand All @@ -259,7 +252,7 @@ public fun GoogleMap.cameraMoveStartedEvents(): Flow<Unit> =
public fun GoogleMap.circleClickEvents(): Flow<Circle> =
callbackFlow {
setOnCircleClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnCircleClickListener(null)
Expand All @@ -275,7 +268,7 @@ public fun GoogleMap.circleClickEvents(): Flow<Circle> =
public fun GoogleMap.groundOverlayClicks(): Flow<GroundOverlay> =
callbackFlow {
setOnGroundOverlayClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnGroundOverlayClickListener(null)
Expand All @@ -292,11 +285,11 @@ public fun GoogleMap.indoorStateChangeEvents(): Flow<IndoorChangeEvent> =
callbackFlow {
setOnIndoorStateChangeListener(object : GoogleMap.OnIndoorStateChangeListener {
override fun onIndoorBuildingFocused() {
offerCatching(IndoorBuildingFocusedEvent)
trySend(IndoorBuildingFocusedEvent)
}

override fun onIndoorLevelActivated(indoorBuilding: IndoorBuilding) {
offerCatching(IndoorLevelActivatedEvent(building = indoorBuilding))
trySend(IndoorLevelActivatedEvent(building = indoorBuilding))
}
})
awaitClose {
Expand All @@ -313,7 +306,7 @@ public fun GoogleMap.indoorStateChangeEvents(): Flow<IndoorChangeEvent> =
public fun GoogleMap.infoWindowClickEvents(): Flow<Marker> =
callbackFlow {
setOnInfoWindowClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnInfoWindowClickListener(null)
Expand All @@ -329,7 +322,7 @@ public fun GoogleMap.infoWindowClickEvents(): Flow<Marker> =
public fun GoogleMap.infoWindowCloseEvents(): Flow<Marker> =
callbackFlow {
setOnInfoWindowCloseListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnInfoWindowCloseListener(null)
Expand All @@ -345,7 +338,7 @@ public fun GoogleMap.infoWindowCloseEvents(): Flow<Marker> =
public fun GoogleMap.infoWindowLongClickEvents(): Flow<Marker> =
callbackFlow {
setOnInfoWindowLongClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnInfoWindowLongClickListener(null)
Expand All @@ -360,7 +353,7 @@ public fun GoogleMap.infoWindowLongClickEvents(): Flow<Marker> =
public fun GoogleMap.mapClickEvents(): Flow<LatLng> =
callbackFlow {
setOnMapClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnMapClickListener(null)
Expand All @@ -375,7 +368,7 @@ public fun GoogleMap.mapClickEvents(): Flow<LatLng> =
public fun GoogleMap.mapLongClickEvents(): Flow<LatLng> =
callbackFlow {
setOnMapLongClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnMapLongClickListener(null)
Expand All @@ -390,7 +383,7 @@ public fun GoogleMap.mapLongClickEvents(): Flow<LatLng> =
public fun GoogleMap.markerClickEvents(): Flow<Marker> =
callbackFlow {
setOnMarkerClickListener {
offerCatching(it)
trySend(it).isSuccess
}
awaitClose {
setOnMarkerClickListener(null)
Expand All @@ -406,15 +399,15 @@ public fun GoogleMap.markerDragEvents(): Flow<OnMarkerDragEvent> =
callbackFlow {
setOnMarkerDragListener(object : GoogleMap.OnMarkerDragListener {
override fun onMarkerDragStart(marker: Marker) {
offerCatching(MarkerDragStartEvent(marker = marker))
trySend(MarkerDragStartEvent(marker = marker))
}

override fun onMarkerDrag(marker: Marker) {
offerCatching(MarkerDragEvent(marker = marker))
trySend(MarkerDragEvent(marker = marker))
}

override fun onMarkerDragEnd(marker: Marker) {
offerCatching(MarkerDragEndEvent(marker = marker))
trySend(MarkerDragEndEvent(marker = marker))
}

})
Expand All @@ -432,7 +425,7 @@ public fun GoogleMap.markerDragEvents(): Flow<OnMarkerDragEvent> =
public fun GoogleMap.myLocationButtonClickEvents(): Flow<Unit> =
callbackFlow {
setOnMyLocationButtonClickListener {
offerCatching(Unit)
trySend(Unit).isSuccess
}
awaitClose {
setOnMyLocationButtonClickListener(null)
Expand All @@ -448,7 +441,7 @@ public fun GoogleMap.myLocationButtonClickEvents(): Flow<Unit> =
public fun GoogleMap.myLocationClickEvents(): Flow<Location> =
callbackFlow {
setOnMyLocationClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnMyLocationClickListener(null)
Expand All @@ -464,7 +457,7 @@ public fun GoogleMap.myLocationClickEvents(): Flow<Location> =
public fun GoogleMap.poiClickEvents(): Flow<PointOfInterest> =
callbackFlow {
setOnPoiClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnPoiClickListener(null)
Expand All @@ -479,7 +472,7 @@ public fun GoogleMap.poiClickEvents(): Flow<PointOfInterest> =
public fun GoogleMap.polygonClickEvents(): Flow<Polygon> =
callbackFlow {
setOnPolygonClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnPolygonClickListener(null)
Expand All @@ -494,7 +487,7 @@ public fun GoogleMap.polygonClickEvents(): Flow<Polygon> =
public fun GoogleMap.polylineClickEvents(): Flow<Polyline> =
callbackFlow {
setOnPolylineClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnPolylineClickListener(null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public suspend inline fun StreetViewPanoramaView.awaitStreetViewPanorama(): Stre
public fun StreetViewPanorama.cameraChangeEvents(): Flow<StreetViewPanoramaCamera> =
callbackFlow {
setOnStreetViewPanoramaCameraChangeListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnStreetViewPanoramaCameraChangeListener(null)
Expand All @@ -52,7 +52,7 @@ public fun StreetViewPanorama.cameraChangeEvents(): Flow<StreetViewPanoramaCamer
public fun StreetViewPanorama.changeEvents(): Flow<StreetViewPanoramaLocation> =
callbackFlow {
setOnStreetViewPanoramaChangeListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnStreetViewPanoramaChangeListener(null)
Expand All @@ -68,7 +68,7 @@ public fun StreetViewPanorama.changeEvents(): Flow<StreetViewPanoramaLocation> =
public fun StreetViewPanorama.clickEvents(): Flow<StreetViewPanoramaOrientation> =
callbackFlow {
setOnStreetViewPanoramaClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnStreetViewPanoramaClickListener(null)
Expand All @@ -84,7 +84,7 @@ public fun StreetViewPanorama.clickEvents(): Flow<StreetViewPanoramaOrientation>
public fun StreetViewPanorama.longClickEvents(): Flow<StreetViewPanoramaOrientation> =
callbackFlow {
setOnStreetViewPanoramaLongClickListener {
offerCatching(it)
trySend(it)
}
awaitClose {
setOnStreetViewPanoramaLongClickListener(null)
Expand Down
1 change: 1 addition & 0 deletions maps-utils-ktx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ android {

kotlinOptions {
freeCompilerArgs += '-Xexplicit-api=strict'
jvmTarget = "1.8"
}
}

Expand Down
1 change: 1 addition & 0 deletions maps-utils-v3-ktx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ android {

kotlinOptions {
freeCompilerArgs += '-Xexplicit-api=strict'
jvmTarget = "1.8"
}
}

Expand Down
1 change: 1 addition & 0 deletions maps-v3-ktx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ android {

kotlinOptions {
freeCompilerArgs += '-Xexplicit-api=strict'
jvmTarget = "1.8"
}
}

Expand Down

0 comments on commit c4cec3e

Please sign in to comment.