From 8d6e88e553441e6493ae5c5874fed90dac596467 Mon Sep 17 00:00:00 2001 From: acrespo Date: Thu, 30 Jan 2025 14:13:19 -0300 Subject: [PATCH] Apollo: Release source code for 52.7 --- android/CHANGELOG.md | 6 ++++++ .../apollo/data/os/BackgroundExecutionMetricsProvider.kt | 9 +++++++-- .../apollo/data/preferences/BackgroundTimesRepository.kt | 6 ++++++ .../muun/apollo/data/preferences/RepositoryRegistry.kt | 3 ++- .../java/io/muun/apollo/domain/model/BackgroundEvent.kt | 3 +++ android/apolloui/build.gradle | 4 ++-- 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/android/CHANGELOG.md b/android/CHANGELOG.md index 2a5757ef..29aa048d 100644 --- a/android/CHANGELOG.md +++ b/android/CHANGELOG.md @@ -6,6 +6,12 @@ follow [https://changelog.md/](https://changelog.md/) guidelines. ## [Unreleased] +## [52.7] - 2025-01-30 + +### ADDED + +- Background notification processing reliability improvements + ## [52.6] - 2025-01-14 ### ADDED diff --git a/android/apollo/src/main/java/io/muun/apollo/data/os/BackgroundExecutionMetricsProvider.kt b/android/apollo/src/main/java/io/muun/apollo/data/os/BackgroundExecutionMetricsProvider.kt index 4b05d6bb..6a7ed100 100644 --- a/android/apollo/src/main/java/io/muun/apollo/data/os/BackgroundExecutionMetricsProvider.kt +++ b/android/apollo/src/main/java/io/muun/apollo/data/os/BackgroundExecutionMetricsProvider.kt @@ -10,6 +10,8 @@ import android.os.SystemClock import io.muun.apollo.data.net.ConnectivityInfoProvider import io.muun.apollo.data.net.NetworkInfoProvider import io.muun.apollo.data.net.TrafficStatsInfoProvider +import io.muun.apollo.data.preferences.BackgroundTimesRepository +import io.muun.apollo.domain.model.BackgroundEvent import kotlinx.serialization.Serializable import javax.inject.Inject @@ -30,6 +32,7 @@ class BackgroundExecutionMetricsProvider @Inject constructor( private val localeInfoProvider: LocaleInfoProvider, private val trafficStatsInfoProvider: TrafficStatsInfoProvider, private val nfcProvider: NfcProvider, + private val bkgTimesRepo: BackgroundTimesRepository, ) { private val powerManager: PowerManager by lazy { @@ -92,7 +95,8 @@ class BackgroundExecutionMetricsProvider @Inject constructor( nfcProvider.getNfcAntennaPosition().map { "${it.first};${it.second}" }.toTypedArray(), nfcProvider.deviceSizeInMm?.let { "${it.first};${it.second}" } ?: "", nfcProvider.isDeviceFoldable, - activityManagerInfoProvider.isBackgroundRestricted + activityManagerInfoProvider.isBackgroundRestricted, + bkgTimesRepo.getLatestBackgroundTimes() ) @Suppress("ArrayInDataClass") @@ -152,7 +156,8 @@ class BackgroundExecutionMetricsProvider @Inject constructor( private val androidNfcAntennaPositions: Array, // in mms starting bottom-left private val androidDeviceSizeInMms: String, private val androidFoldableDevice: Boolean?, - private val isBackgroundRestricted: Boolean + private val isBackgroundRestricted: Boolean, + private val bkgTimes: List, ) /** diff --git a/android/apollo/src/main/java/io/muun/apollo/data/preferences/BackgroundTimesRepository.kt b/android/apollo/src/main/java/io/muun/apollo/data/preferences/BackgroundTimesRepository.kt index d66cb0c2..63d35ef3 100644 --- a/android/apollo/src/main/java/io/muun/apollo/data/preferences/BackgroundTimesRepository.kt +++ b/android/apollo/src/main/java/io/muun/apollo/data/preferences/BackgroundTimesRepository.kt @@ -77,6 +77,12 @@ class BackgroundTimesRepository @Inject constructor( return backgroundTimesPreferences.get()!!.map { it.toModel() } } + fun getLatestBackgroundTimes(): List { + return backgroundTimesPreferences.get()!! + .takeLast(10) + .map { it.toModel() } + } + fun pruneIfGreaterThan(maxBkgTimesArraySize: Int) { val storedBkgTimes = getBackgroundTimes() val bkgTimes = storedBkgTimes.takeLast(maxBkgTimesArraySize) diff --git a/android/apollo/src/main/java/io/muun/apollo/data/preferences/RepositoryRegistry.kt b/android/apollo/src/main/java/io/muun/apollo/data/preferences/RepositoryRegistry.kt index 45f95fd2..1b3bb65d 100644 --- a/android/apollo/src/main/java/io/muun/apollo/data/preferences/RepositoryRegistry.kt +++ b/android/apollo/src/main/java/io/muun/apollo/data/preferences/RepositoryRegistry.kt @@ -67,7 +67,8 @@ class RepositoryRegistry { NightModeRepository::class.java, SchemaVersionRepository::class.java, NotificationPermissionDeniedRepository::class.java, - NotificationPermissionSkippedRepository::class.java + NotificationPermissionSkippedRepository::class.java, + BackgroundTimesRepository::class.java ) // Note: the use of a map is critical here for 2 reasons, both of them related to memory diff --git a/android/apollo/src/main/java/io/muun/apollo/domain/model/BackgroundEvent.kt b/android/apollo/src/main/java/io/muun/apollo/domain/model/BackgroundEvent.kt index 0daf9c53..fce5cd7c 100644 --- a/android/apollo/src/main/java/io/muun/apollo/domain/model/BackgroundEvent.kt +++ b/android/apollo/src/main/java/io/muun/apollo/domain/model/BackgroundEvent.kt @@ -1,5 +1,8 @@ package io.muun.apollo.domain.model +import kotlinx.serialization.Serializable + +@Serializable class BackgroundEvent( val beginTimeInMillis: Long, val durationInMillis: Long, diff --git a/android/apolloui/build.gradle b/android/apolloui/build.gradle index b89a637a..65fee3c4 100644 --- a/android/apolloui/build.gradle +++ b/android/apolloui/build.gradle @@ -96,8 +96,8 @@ android { applicationId "io.muun.apollo" minSdk 19 targetSdk 34 - versionCode 1206 - versionName "52.6" + versionCode 1207 + versionName "52.7" // Needed to make sure these classes are available in the main DEX file for API 19 // See: https://spin.atomicobject.com/2018/07/16/support-kitkat-multidex/