From 31598171eb1888cb40f37dd125800965ff183436 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2026 10:37:44 +0000 Subject: [PATCH 1/3] fix(deps): update maplibrecomposeversion to v0.20.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 419a00f0783..e35f8e8851e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,7 +29,7 @@ val daggerVersion = "2.60.1" val emojiVersion = "1.7.0" val fidoVersion = "4.1.0-patch2" val lifecycleVersion = "2.11.0" -val maplibreComposeVersion = "0.19.0" +val maplibreComposeVersion = "0.20.0" val okhttpVersion = "4.12.0" val markwonVersion = "4.6.2" val materialDialogsVersion = "3.3.0" From 845280ab98b25677ae193a5596c4ce39892648b2 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Sat, 17 Oct 2026 14:16:23 +0200 Subject: [PATCH 2/3] fix(deps): migrate to maplibre-compose 0.20 API - ColorLiteral and DpLiteral are internal now, use const() - CameraPosition/CameraUpdate renamed target to center - enum entries are PascalCase, e.g. CameraMoveReason.Gesture Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Andy Scherzinger --- .../components/LocationPickerScreen.kt | 25 +++++++++---------- .../talk/ui/chat/GeolocationMessage.kt | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt b/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt index 122ee6e9ea4..eac9d50feb9 100644 --- a/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt +++ b/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt @@ -106,8 +106,7 @@ import kotlinx.coroutines.yield import org.maplibre.compose.camera.CameraMoveReason import org.maplibre.compose.camera.CameraPosition import org.maplibre.compose.camera.CameraUpdate -import org.maplibre.compose.expressions.ast.ColorLiteral -import org.maplibre.compose.expressions.ast.DpLiteral +import org.maplibre.compose.expressions.dsl.const import org.maplibre.compose.layers.CircleLayer import org.maplibre.compose.map.MapState import org.maplibre.compose.map.MaplibreMap @@ -181,7 +180,7 @@ fun LocationPickerScreen( val mapState = rememberMapState( baseStyle = BaseStyle.Uri(styleUri), initialCameraPosition = CameraPosition( - target = initialTarget ?: Position(FALLBACK_LON, FALLBACK_LAT), + center = initialTarget ?: Position(FALLBACK_LON, FALLBACK_LAT), zoom = if (initialTarget != null) initialZoom else ZOOM_LEVEL_FALLBACK ) ) { @@ -192,10 +191,10 @@ fun LocationPickerScreen( CircleLayer( id = USER_LOCATION_LAYER_ID, source = userLocationSource, - color = ColorLiteral.of(Color(COLOR_NC_BLUE_PACKED)), - radius = DpLiteral.of(7.5.dp), - strokeColor = ColorLiteral.of(Color.White), - strokeWidth = DpLiteral.of(2.dp) + color = const(Color(COLOR_NC_BLUE_PACKED)), + radius = const(7.5.dp), + strokeColor = const(Color.White), + strokeWidth = const(2.dp) ) } @@ -235,9 +234,9 @@ fun LocationPickerScreen( // Ignore all camera events until the map style has finished loading if (!isMapInitialized) return@collect if (!isProgrammaticCameraMove) { - viewModel.onMapScrolled(position.target.latitude, position.target.longitude) + viewModel.onMapScrolled(position.center.latitude, position.center.longitude) } - viewModel.updateMapCenter(position.target.latitude, position.target.longitude) + viewModel.updateMapCenter(position.center.latitude, position.center.longitude) } } @@ -258,7 +257,7 @@ fun LocationPickerScreen( !hasZoomedToInitialLocation && myLocation.latitude != COORDINATE_ZERO ) { - mapState.animateCamera(CameraUpdate(target = myLocation, zoom = ZOOM_LEVEL_DEFAULT)) + mapState.animateCamera(CameraUpdate(center = myLocation, zoom = ZOOM_LEVEL_DEFAULT)) viewModel.updateMapCenter(myLocation.latitude, myLocation.longitude) hasZoomedToInitialLocation = true } @@ -299,7 +298,7 @@ fun LocationPickerScreen( // a gesture cancels animateCamera, so reset the flag in finally try { mapState.animateCamera( - CameraUpdate(target = Position(result.lon, result.lat), zoom = ZOOM_LEVEL_RECEIVED_RESULT) + CameraUpdate(center = Position(result.lon, result.lat), zoom = ZOOM_LEVEL_RECEIVED_RESULT) ) yield() viewModel.updateMapCenter(result.lat, result.lon) @@ -401,7 +400,7 @@ fun LocationPickerScreen( } } else { coroutineScope.launch { - mapState.animateCamera(CameraUpdate(target = myLocation, zoom = ZOOM_LEVEL_DEFAULT)) + mapState.animateCamera(CameraUpdate(center = myLocation, zoom = ZOOM_LEVEL_DEFAULT)) } viewModel.onCenterLocationRequested() } @@ -477,7 +476,7 @@ private fun LocationPickerAttribution(mapState: MapState, modifier: Modifier = M // collapse once the user starts moving the map LaunchedEffect(mapState) { - snapshotFlow { mapState.isCameraMoving && mapState.cameraMoveReason == CameraMoveReason.GESTURE } + snapshotFlow { mapState.isCameraMoving && mapState.cameraMoveReason == CameraMoveReason.Gesture } .filter { it } .collect { expanded = false } } diff --git a/app/src/main/java/com/nextcloud/talk/ui/chat/GeolocationMessage.kt b/app/src/main/java/com/nextcloud/talk/ui/chat/GeolocationMessage.kt index de708657b4a..2f574c528d0 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/chat/GeolocationMessage.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/chat/GeolocationMessage.kt @@ -146,7 +146,7 @@ fun OpenStreetMap(latitude: Double, longitude: Double) { val mapState = rememberMapState( baseStyle = BaseStyle.Uri(styleUri), - initialCameraPosition = CameraPosition(target = Position(longitude, latitude), zoom = 12.0) + initialCameraPosition = CameraPosition(center = Position(longitude, latitude), zoom = 12.0) ) { val markerSource = rememberGeoJsonSource( GeoJsonData.JsonString(markerJson) From 96bc125883b588cb66b8ea14723152bf0f10a848 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Sat, 17 Oct 2026 14:16:24 +0200 Subject: [PATCH 3/3] fix(location): drop unnecessary non-null assertions geocodingResult is smart-cast to non-null by the preceding when condition. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Andy Scherzinger --- .../nextcloud/talk/location/components/LocationPickerScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt b/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt index eac9d50feb9..efd8d675f9e 100644 --- a/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt +++ b/app/src/main/java/com/nextcloud/talk/location/components/LocationPickerScreen.kt @@ -166,7 +166,7 @@ fun LocationPickerScreen( Position(initialState.mapCenterLon, initialState.mapCenterLat) initialState.geocodingResult?.let { it.lat != COORDINATE_ZERO && it.lon != COORDINATE_ZERO } == true -> - Position(initialState.geocodingResult!!.lon, initialState.geocodingResult!!.lat) + Position(initialState.geocodingResult.lon, initialState.geocodingResult.lat) else -> null }