Skip to content

Commit e8e4542

Browse files
author
Marco Romano
authored
Extract maptiler's map ids (#926)
Maptiler custom map ids are only useable by the account that create them. So if we hardcode them forkers won't be able to use the maps even if the bring in their own api key (because they can't access our maps with their api key). Requires to set our map ids in `local.properties` for local development: ``` services.maptiler.lightMapId=9bc819c8-e627-474a-a348-ec144fe3d810 services.maptiler.darkMapId=dea61faf-292b-4774-9660-58fcef89a7f3 ```
1 parent f7e7339 commit e8e4542

File tree

6 files changed

+32
-8
lines changed

6 files changed

+32
-8
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ jobs:
4040
- name: Assemble debug APK
4141
env:
4242
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
43+
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
44+
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
4345
run: ./gradlew assembleDebug $CI_GRADLE_ARG_PROPERTIES
4446
- name: Upload debug APKs
4547
uses: actions/upload-artifact@v3

.github/workflows/maestro.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ jobs:
3838
run: ./gradlew assembleDebug $CI_GRADLE_ARG_PROPERTIES
3939
env:
4040
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
41+
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
42+
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
4143
- name: Upload debug APKs
4244
uses: actions/upload-artifact@v3
4345
with:

.github/workflows/nightly.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ jobs:
3636
./gradlew assembleNightly appDistributionUploadNightly $CI_GRADLE_ARG_PROPERTIES
3737
env:
3838
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
39+
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
40+
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
3941
ELEMENT_ANDROID_NIGHTLY_KEYID: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_KEYID }}
4042
ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD }}
4143
ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD: ${{ secrets.ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD }}

.github/workflows/release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ jobs:
2727
- name: Configure gradle
2828
uses: gradle/[email protected]
2929
- name: Create app bundle
30+
env:
31+
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
32+
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
33+
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
3034
run: ./gradlew bundleRelease $CI_GRADLE_ARG_PROPERTIES
3135
- name: Upload bundle as artifact
3236
uses: actions/upload-artifact@v3

features/location/api/build.gradle.kts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ plugins {
2222
id("kotlin-parcelize")
2323
}
2424

25-
fun readLocalProperty(name: String) = Properties().apply {
25+
fun readLocalProperty(name: String): String? = Properties().apply {
2626
try {
2727
load(rootProject.file("local.properties").reader())
2828
} catch (ignored: java.io.IOException) {
2929
}
30-
}[name]
30+
}.getProperty(name)
3131

3232
android {
3333
namespace = "io.element.android.features.location.api"
@@ -37,9 +37,23 @@ android {
3737
type = "string",
3838
name = "maptiler_api_key",
3939
value = System.getenv("ELEMENT_ANDROID_MAPTILER_API_KEY")
40-
?: readLocalProperty("services.maptiler.apikey") as? String
40+
?: readLocalProperty("services.maptiler.apikey")
4141
?: ""
4242
)
43+
resValue(
44+
type = "string",
45+
name = "maptiler_light_map_id",
46+
value = System.getenv("ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID")
47+
?: readLocalProperty("services.maptiler.lightMapId")
48+
?: "basic-v2" // fall back to maptiler's default light map.
49+
)
50+
resValue(
51+
type = "string",
52+
name = "maptiler_dark_map_id",
53+
value = System.getenv("ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID")
54+
?: readLocalProperty("services.maptiler.darkMapId")
55+
?: "basic-v2-dark" // fall back to maptiler's default dark map.
56+
)
4357
}
4458
}
4559

features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/MapUrls.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ fun staticMapUrl(
3535
height: Int,
3636
darkMode: Boolean,
3737
): String {
38-
return "${baseUrl(darkMode)}/static/${lon},${lat},${zoom}/${width}x${height}@2x.webp?key=${context.apiKey}&attribution=bottomleft"
38+
return "${context.baseUrl(darkMode)}/static/${lon},${lat},${zoom}/${width}x${height}@2x.webp?key=${context.apiKey}&attribution=bottomleft"
3939
}
4040

4141
/**
@@ -60,15 +60,15 @@ private fun tileStyleUrl(
6060
context: Context,
6161
darkMode: Boolean,
6262
): String {
63-
return "${baseUrl(darkMode)}/style.json?key=${context.apiKey}"
63+
return "${context.baseUrl(darkMode)}/style.json?key=${context.apiKey}"
6464
}
6565

66-
private fun baseUrl(darkMode: Boolean) =
66+
private fun Context.baseUrl(darkMode: Boolean) =
6767
"https://api.maptiler.com/maps/" +
6868
if (darkMode)
69-
"dea61faf-292b-4774-9660-58fcef89a7f3"
69+
getString(R.string.maptiler_dark_map_id)
7070
else
71-
"9bc819c8-e627-474a-a348-ec144fe3d810"
71+
getString(R.string.maptiler_light_map_id)
7272

7373
private val Context.apiKey: String
7474
get() = getString(R.string.maptiler_api_key)

0 commit comments

Comments
 (0)