diff --git a/.gitignore b/.gitignore index b264a21..62ae14e 100755 --- a/.gitignore +++ b/.gitignore @@ -94,6 +94,8 @@ dist /android-app/**/build/ /android-app/local.properties /android-app/gradle-local.properties +# Android Play Store / release artifacts are generated locally or in CI. +/android-app/**/*.aab # JVM Heap-Dumps sind lokale Diagnoseartefakte und dürfen nie ins Repository. *.hprof diff --git a/.osv-scanner.toml b/.osv-scanner.toml index a7904b6..0a3836c 100644 --- a/.osv-scanner.toml +++ b/.osv-scanner.toml @@ -1,4 +1 @@ -[[IgnoredVulns]] -id = "GHSA-v3m3-f69x-jf25" -ignoreUntil = 2026-12-31 -reason = "Temporary exception: Quill 2.0.3 is required by the current RichTextEditor implementation, and OSV currently reports no fixed version. Track upstream fix and remove this ignore once a patched release is available." +# Intentionally empty: retained because the CI scanner is invoked with --config. diff --git a/android-app/app/instantTest/release/app-instantTest-release.aab b/android-app/app/instantTest/release/app-instantTest-release.aab deleted file mode 100755 index 14162da..0000000 Binary files a/android-app/app/instantTest/release/app-instantTest-release.aab and /dev/null differ diff --git a/android-app/app/local/release/app-local-release.aab b/android-app/app/local/release/app-local-release.aab deleted file mode 100755 index 5c6b984..0000000 Binary files a/android-app/app/local/release/app-local-release.aab and /dev/null differ diff --git a/android-app/app/production/release/app-production-release.aab b/android-app/app/production/release/app-production-release.aab deleted file mode 100644 index efeffed..0000000 Binary files a/android-app/app/production/release/app-production-release.aab and /dev/null differ diff --git a/android-app/app/src/main/java/de/harheimertc/data/ApiService.kt b/android-app/app/src/main/java/de/harheimertc/data/ApiService.kt index e5f82a3..690fd28 100755 --- a/android-app/app/src/main/java/de/harheimertc/data/ApiService.kt +++ b/android-app/app/src/main/java/de/harheimertc/data/ApiService.kt @@ -283,6 +283,7 @@ data class PushTokenRequest( val token: String, val platform: String = "android", val appVersion: String? = null, + val installationId: String? = null, ) data class BirthdayDto( val name: String = "", diff --git a/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerMessagingService.kt b/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerMessagingService.kt index a4efcde..effa997 100755 --- a/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerMessagingService.kt +++ b/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerMessagingService.kt @@ -21,7 +21,7 @@ class HarheimerMessagingService : FirebaseMessagingService() { override fun onNewToken(token: String) { super.onNewToken(token) serviceScope.launch { - pushTokenRepository.registerToken(token) + pushTokenRepository.registerCurrentDevice() } } diff --git a/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerNotifications.kt b/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerNotifications.kt index 634d79d..18c6762 100755 --- a/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerNotifications.kt +++ b/android-app/app/src/main/java/de/harheimertc/notifications/HarheimerNotifications.kt @@ -81,6 +81,7 @@ object HarheimerNotifications { "news", "news_expiring" -> Destinations.MemberNews.route "event", "events_today", "events_tomorrow" -> Destinations.Termine.route "team_matches" -> Destinations.Spielplan.route + "qttr_list_updated", "ttr_change" -> Destinations.Qttr.route "birthdays" -> Destinations.MemberArea.route "contact_request" -> Destinations.CmsContactRequests.route "user_registration" -> Destinations.CmsBenutzer.route diff --git a/android-app/app/src/main/java/de/harheimertc/repositories/PushTokenRepository.kt b/android-app/app/src/main/java/de/harheimertc/repositories/PushTokenRepository.kt index 4cecdf3..f743f2a 100755 --- a/android-app/app/src/main/java/de/harheimertc/repositories/PushTokenRepository.kt +++ b/android-app/app/src/main/java/de/harheimertc/repositories/PushTokenRepository.kt @@ -1,6 +1,7 @@ package de.harheimertc.repositories import android.util.Log +import com.google.firebase.installations.FirebaseInstallations import com.google.firebase.messaging.FirebaseMessaging import de.harheimertc.BuildConfig import de.harheimertc.data.ApiService @@ -15,16 +16,18 @@ class PushTokenRepository @Inject constructor( ) { suspend fun registerCurrentDevice(): Result = runCatching { val token = FirebaseMessaging.getInstance().token.await() - registerToken(token).getOrThrow() + val installationId = FirebaseInstallations.getInstance().id.await() + registerToken(token, installationId).getOrThrow() } - suspend fun registerToken(token: String): Result = runCatching { + suspend fun registerToken(token: String, installationId: String? = null): Result = runCatching { if (token.isBlank()) return@runCatching retryOnNetworkFailure { val response = api.registerPushToken( PushTokenRequest( token = token, appVersion = "${BuildConfig.VERSION_NAME}+${BuildConfig.VERSION_CODE}", + installationId = installationId, ), ) if (!response.isSuccessful) { diff --git a/android-app/gradle.properties b/android-app/gradle.properties index db6024a..1a6a32a 100755 --- a/android-app/gradle.properties +++ b/android-app/gradle.properties @@ -8,8 +8,8 @@ LOCAL_API_BASE_URL=https://harheimertc.tsschulz.de/ PRODUCTION_API_BASE_URL=https://harheimertc.de/ # Android app versioning for Play Store uploads -ANDROID_VERSION_CODE=35 -ANDROID_VERSION_NAME=0.9.30 +ANDROID_VERSION_CODE=36 +ANDROID_VERSION_NAME=0.10.0 # Temporary hotfix: disable R8 minification for release to avoid Retrofit generic signature stripping. RELEASE_MINIFY_ENABLED=false diff --git a/components/Navigation.vue b/components/Navigation.vue index e8fbda4..747eace 100755 --- a/components/Navigation.vue +++ b/components/Navigation.vue @@ -292,69 +292,69 @@