Coverage Summary for Class: MindboxPreferences (cloud.mindbox.mobile_sdk.repository)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| MindboxPreferences |
63.8%
(30/47)
|
|
69.1%
(38/55)
|
65.3%
(213/326)
|
| MindboxPreferences$deviceUuid$1 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
100%
(10/10)
|
| MindboxPreferences$deviceUuid$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$firstInitializationTime$1 |
100%
(1/1)
|
25%
(1/4)
|
100%
(2/2)
|
83.3%
(20/24)
|
| MindboxPreferences$firstInitializationTime$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$hostAppName$1 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
100%
(10/10)
|
| MindboxPreferences$hostAppName$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$inAppConfig$1 |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/1)
|
0%
(0/10)
|
| MindboxPreferences$inAppConfig$2 |
100%
(1/1)
|
|
100%
(2/2)
|
100%
(18/18)
|
| MindboxPreferences$inAppConfig$2$1 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(13/13)
|
| MindboxPreferences$inAppConfigUpdatedTime$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$inAppConfigUpdatedTime$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$inAppGeo$1 |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/1)
|
0%
(0/10)
|
| MindboxPreferences$inAppGeo$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$infoUpdatedVersion$1 |
100%
(1/1)
|
|
100%
(5/5)
|
100%
(13/13)
|
| MindboxPreferences$instanceId$1 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
100%
(10/10)
|
| MindboxPreferences$instanceId$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$isFirstInitialize$1 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$isFirstInitialize$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$isNotificationEnabled$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$isNotificationEnabled$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$lastInappChangeStateTime$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/7)
|
| MindboxPreferences$lastInappChangeStateTime$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$lastInfoUpdateTime$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/7)
|
| MindboxPreferences$lastInfoUpdateTime$2 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
81.8%
(9/11)
|
| MindboxPreferences$localStateVersion$1 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$localStateVersion$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$logsRequestIds$1 |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/1)
|
0%
(0/8)
|
| MindboxPreferences$logsRequestIds$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$operationsDomainFromConfig$1 |
100%
(1/1)
|
25%
(1/4)
|
100%
(2/2)
|
83.3%
(20/24)
|
| MindboxPreferences$operationsDomainFromConfig$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$pushTokens$1 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(7/7)
|
| MindboxPreferences$pushTokens$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(6/6)
|
| MindboxPreferences$requestPermissionCount$1 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$requestPermissionCount$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$shownInAppIds$1 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
75%
(6/8)
|
| MindboxPreferences$shownInAppIds$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$shownInApps$1 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
75%
(6/8)
|
| MindboxPreferences$shownInApps$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$userVisitCount$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$userVisitCount$2 |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(5/5)
|
| MindboxPreferences$uuidDebugEnabled$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$uuidDebugEnabled$2 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/5)
|
| MindboxPreferences$versionCode$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/7)
|
| MindboxPreferences$versionCode$2 |
100%
(1/1)
|
50%
(1/2)
|
100%
(1/1)
|
81.8%
(9/11)
|
| Total |
63.7%
(58/91)
|
32.1%
(9/28)
|
68.9%
(73/106)
|
65.9%
(440/668)
|
package cloud.mindbox.mobile_sdk.repository
import cloud.mindbox.mobile_sdk.managers.SharedPreferencesManager
import cloud.mindbox.mobile_sdk.models.Timestamp
import cloud.mindbox.mobile_sdk.pushes.PrefPushTokenMap
import cloud.mindbox.mobile_sdk.pushes.toPreferences
import cloud.mindbox.mobile_sdk.pushes.toTokensMap
import cloud.mindbox.mobile_sdk.utils.Constants
import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
import cloud.mindbox.mobile_sdk.utils.loggingRunCatching
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
internal object MindboxPreferences {
private const val KEY_IS_FIRST_INITIALIZATION = "key_is_first_initialization"
private const val KEY_DEVICE_UUID = "key_device_uuid"
private const val KEY_PUSH_TOKENS = "key_push_tokens"
private const val KEY_IS_NOTIFICATION_ENABLED = "key_is_notification_enabled"
private const val KEY_HOST_APP_MANE =
"key_host_app_name" // need for scheduling and stopping one-time background service
private const val KEY_INFO_UPDATED_VERSION = "key_info_updated_version"
private const val KEY_INSTANCE_ID = "key_instance_id"
private const val KEY_UUID_DEBUG_ENABLED = "key_uuid_debug_enabled"
private const val DEFAULT_INFO_UPDATED_VERSION = 1
private const val IN_APP_CONFIG = "IN_APP_CONFIG"
private const val SHOWN_IDS = "SHOWN_IDS"
private const val IN_APP_GEO = "IN_APP_GEO"
private const val LOGS_REQUEST_IDS = "LOGS_REQUEST_IDS"
private const val KEY_USER_VISIT_COUNT = "key_user_visit_count"
private const val KEY_REQUEST_PERMISSION_COUNT = "key_request_permission_count"
private const val IN_APPS_METADATA = "key_inapp_metadata"
private const val KEY_CONFIG_UPDATE_DATE = "key_config_update_date"
private const val KEY_SDK_VERSION_CODE = "key_sdk_version_code"
private const val KEY_LAST_INFO_UPDATE_TIME = "key_last_info_update_time"
private const val KEY_LAST_INAPP_CHANGE_STATE_TIME = "key_last_inapp_change_state_time"
private const val KEY_LOCAL_STATE_VERSION = "local_state_version"
private const val DEFAULT_LOCAL_STATE_VERSION = 1
private const val KEY_FIRST_INITIALIZATION_TIME = "key_first_initialization_time"
private const val KEY_OPERATIONS_DOMAIN_FROM_CONFIG = "key_operations_domain_from_config"
private val prefScope = CoroutineScope(Dispatchers.Default)
fun softReset() {
inAppConfig = ""
shownInAppIds = ""
inAppGeo = ""
logsRequestIds = ""
userVisitCount = 0
requestPermissionCount = 0
shownInApps = ""
inAppConfigUpdatedTime = 0
}
var logsRequestIds: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(LOGS_REQUEST_IDS, "") ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(LOGS_REQUEST_IDS, value)
}
}
var inAppGeo: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(IN_APP_GEO) ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(IN_APP_GEO, value)
}
}
val inAppConfigFlow: MutableSharedFlow<String> = MutableSharedFlow(replay = 20)
var inAppConfig: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(IN_APP_CONFIG) ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(IN_APP_CONFIG, value)
prefScope.launch {
inAppConfigFlow.emit(value)
}
}
}
var shownInAppIds: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(SHOWN_IDS, "") ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(SHOWN_IDS, value)
}
}
var isFirstInitialize: Boolean
get() = LoggingExceptionHandler.runCatching(defaultValue = true) {
SharedPreferencesManager.getBoolean(KEY_IS_FIRST_INITIALIZATION, true)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_IS_FIRST_INITIALIZATION, value)
}
}
var deviceUuid: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(KEY_DEVICE_UUID) ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.putSync(KEY_DEVICE_UUID, value)
}
}
var pushTokens: PrefPushTokenMap
get() = loggingRunCatching(defaultValue = emptyMap()) {
SharedPreferencesManager.getString(KEY_PUSH_TOKENS).toTokensMap()
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_PUSH_TOKENS, value.toPreferences())
}
}
var isNotificationEnabled: Boolean
get() = LoggingExceptionHandler.runCatching(defaultValue = true) {
SharedPreferencesManager.getBoolean(KEY_IS_NOTIFICATION_ENABLED, true)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_IS_NOTIFICATION_ENABLED, value)
}
}
var hostAppName: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(KEY_HOST_APP_MANE) ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_HOST_APP_MANE, value)
}
}
fun resetAppInfoUpdated() =
SharedPreferencesManager.put(KEY_INFO_UPDATED_VERSION, DEFAULT_INFO_UPDATED_VERSION)
val infoUpdatedVersion: Int
@Synchronized get() = LoggingExceptionHandler.runCatching(
defaultValue = DEFAULT_INFO_UPDATED_VERSION
) {
val version = SharedPreferencesManager.getInt(
KEY_INFO_UPDATED_VERSION,
DEFAULT_INFO_UPDATED_VERSION
)
SharedPreferencesManager.put(KEY_INFO_UPDATED_VERSION, version + 1)
version
}
var instanceId: String
get() = LoggingExceptionHandler.runCatching(defaultValue = "") {
SharedPreferencesManager.getString(KEY_INSTANCE_ID) ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_INSTANCE_ID, value)
}
}
var uuidDebugEnabled: Boolean
get() = LoggingExceptionHandler.runCatching(defaultValue = true) {
SharedPreferencesManager.getBoolean(KEY_UUID_DEBUG_ENABLED, true)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_UUID_DEBUG_ENABLED, value)
}
}
var requestPermissionCount: Int
get() =
LoggingExceptionHandler.runCatching(defaultValue = 0) {
SharedPreferencesManager.getInt(KEY_REQUEST_PERMISSION_COUNT, 0)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_REQUEST_PERMISSION_COUNT, value)
}
}
var userVisitCount: Int
get() =
LoggingExceptionHandler.runCatching(defaultValue = 0) {
SharedPreferencesManager.getInt(KEY_USER_VISIT_COUNT, 0)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_USER_VISIT_COUNT, value)
}
}
var shownInApps: String
get() =
LoggingExceptionHandler.runCatching("") {
SharedPreferencesManager.getString(IN_APPS_METADATA, "") ?: ""
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(IN_APPS_METADATA, value)
}
}
var inAppConfigUpdatedTime: Long
get() =
LoggingExceptionHandler.runCatching(defaultValue = 0) {
SharedPreferencesManager.getLong(KEY_CONFIG_UPDATE_DATE, 0)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_CONFIG_UPDATE_DATE, value)
}
}
var versionCode: Int?
get() = LoggingExceptionHandler.runCatching(defaultValue = null) {
SharedPreferencesManager.getInt(KEY_SDK_VERSION_CODE)
}
set(value) {
LoggingExceptionHandler.runCatching {
SharedPreferencesManager.put(KEY_SDK_VERSION_CODE, value ?: Constants.SDK_VERSION_CODE)
}
}
var firstInitializationTime: String?
get() = loggingRunCatching(defaultValue = null) {
SharedPreferencesManager.getString(KEY_FIRST_INITIALIZATION_TIME)
?.takeIf { value -> value.isNotBlank() }
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_FIRST_INITIALIZATION_TIME, value)
}
}
var lastInfoUpdateTime: Long?
get() = loggingRunCatching(defaultValue = null) {
SharedPreferencesManager.getLong(KEY_LAST_INFO_UPDATE_TIME)
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_LAST_INFO_UPDATE_TIME, value ?: 0)
}
}
var lastInappChangeStateTime: Timestamp
get() = loggingRunCatching(defaultValue = Timestamp(0)) {
Timestamp(SharedPreferencesManager.getLong(KEY_LAST_INAPP_CHANGE_STATE_TIME))
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_LAST_INAPP_CHANGE_STATE_TIME, value.ms)
}
}
var localStateVersion: Int
get() = loggingRunCatching(defaultValue = DEFAULT_LOCAL_STATE_VERSION) {
SharedPreferencesManager.getInt(KEY_LOCAL_STATE_VERSION, DEFAULT_LOCAL_STATE_VERSION)
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_LOCAL_STATE_VERSION, value)
}
}
var operationsDomainFromConfig: String?
get() = loggingRunCatching(defaultValue = null) {
SharedPreferencesManager.getString(KEY_OPERATIONS_DOMAIN_FROM_CONFIG)
?.takeIf { it.isNotBlank() }
}
set(value) {
loggingRunCatching {
SharedPreferencesManager.put(KEY_OPERATIONS_DOMAIN_FROM_CONFIG, value)
}
}
}