Coverage Summary for Class: MinIntervalBetweenShowsLimitChecker (cloud.mindbox.mobile_sdk.inapp.data.checkers)

Class Class, % Method, % Branch, % Line, % Instruction, %
MinIntervalBetweenShowsLimitChecker 100% (1/1) 100% (2/2) 100% (4/4) 100% (15/15) 100% (58/58)


 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
 
 internal class MinIntervalBetweenShowsLimitChecker(
     private val sessionStorageManager: SessionStorageManager,
     private val inAppRepository: InAppRepository,
     private val timeProvider: TimeProvider
 ) : Checker {
     override fun check(): Boolean {
         mindboxLogI("Checking min interval between shows limit")
         return when (val minIntervalBetweenShowDuration = sessionStorageManager.inAppShowLimitsSettings.minIntervalBetweenShows) {
             null -> {
                 mindboxLogI("Parameter min interval between inapp show not specify. Work without limit")
                 true
             }
 
             else -> {
                 val lastDismissInappTime = inAppRepository.getLastInappDismissTime().ms
                 val currentTime = timeProvider.currentTimeMillis()
                 val timeDiff = currentTime - lastDismissInappTime
                 val isAllowed = minIntervalBetweenShowDuration.interval + lastDismissInappTime < currentTime
                 mindboxLogI("Min interval between inapp show: $minIntervalBetweenShowDuration, last inapp dismiss time: $lastDismissInappTime, current time: $currentTime, time since last dismiss: ${timeDiff}ms. Show allowed: $isAllowed")
                 isAllowed
             }
         }
     }
 }