Coverage Summary for Class: MaxInappsPerDayLimitChecker (cloud.mindbox.mobile_sdk.inapp.data.checkers)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| MaxInappsPerDayLimitChecker |
100%
(1/1)
|
100%
(2/2)
|
87.5%
(7/8)
|
100%
(18/18)
|
98.7%
(76/77)
|
package cloud.mindbox.mobile_sdk.inapp.data.checkers
import cloud.mindbox.mobile_sdk.inapp.data.managers.SessionStorageManager
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.checkers.Checker
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.InAppRepository
import cloud.mindbox.mobile_sdk.logger.mindboxLogI
import cloud.mindbox.mobile_sdk.utils.TimeProvider
import cloud.mindbox.mobile_sdk.utils.getDayStartTimestamp
import java.util.concurrent.TimeUnit
internal class MaxInappsPerDayLimitChecker(
private val inAppRepository: InAppRepository,
private val sessionStorageManager: SessionStorageManager,
private val timeProvider: TimeProvider
) : Checker {
override fun check(): Boolean {
mindboxLogI("Checking max inapps per day limit")
return when (val maxInappsPerSessionCount = sessionStorageManager.inAppShowLimitsSettings.maxInappsPerDay) {
null -> {
mindboxLogI("Parameter limit inapp for show per day not specify. Work without limits for show per day")
true
}
else -> {
val startOfDay = getDayStartTimestamp(timeProvider.currentTimestamp())
val shownInAppsToday = inAppRepository.getShownInApps()
.values
.flatten()
.count { timestamp ->
timestamp in startOfDay.ms until startOfDay.ms + TimeUnit.DAYS.toMillis(1)
}
val isAllowed = maxInappsPerSessionCount > shownInAppsToday
mindboxLogI("Shows today: $shownInAppsToday, limit per day: $maxInappsPerSessionCount isAllowed = $isAllowed")
isAllowed
}
}
}
}