Send My Location (#770)

- https://github.com/vector-im/element-meta/issues/1682
This commit is contained in:
Marco Romano 2023-07-19 11:58:13 +02:00 committed by GitHub
parent 68c2aa8822
commit 3c45a5ece4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
55 changed files with 1351 additions and 767 deletions

View file

@ -37,4 +37,8 @@ data class Location(
)
}
}
fun toGeoUri(): String {
return "geo:$lat,$lon;u=$accuracy"
}
}

View file

@ -107,6 +107,7 @@ fun StaticMapView(
contentDescription = null,
tint = Color.Unspecified,
modifier = Modifier.align { size, space, _ ->
// Center bottom edge of pin (i.e. its arrow) to center of screen
IntOffset(
x = (space.width - size.width) / 2,
y = (space.height / 2) - size.height,

View file

@ -17,7 +17,11 @@
package io.element.android.features.location.api.internal
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import io.element.android.features.location.api.R
import io.element.android.libraries.theme.ElementTheme
/**
* Provides the URL to an image that contains a statically-generated map of the given location.
@ -34,10 +38,25 @@ fun staticMapUrl(
return "${baseUrl(darkMode)}/static/${lon},${lat},${zoom}/${width}x${height}@2x.webp?key=${context.apiKey}&attribution=bottomleft"
}
/**
* Utility function to remember the tile server URL based on the current theme.
*/
@Composable
fun rememberTileStyleUrl(): String {
val context = LocalContext.current
val darkMode = !ElementTheme.isLightTheme
return remember(darkMode) {
tileStyleUrl(
context = context,
darkMode = darkMode
)
}
}
/**
* Provides the URL to a MapLibre style document, used for rendering dynamic maps.
*/
fun tileStyleUrl(
private fun tileStyleUrl(
context: Context,
darkMode: Boolean,
): String {

View file

@ -76,4 +76,9 @@ internal class LocationKtTest {
))
}
@Test
fun `encode geoUri - returns geoUri from a Location`() {
assertThat(Location(1.0,2.0,3.0f).toGeoUri())
.isEqualTo("geo:1.0,2.0;u=3.0")
}
}