Skip to content

Commit 6d01667

Browse files
authored
Merge pull request #466 from mindbox-cloud/release/2.10.0
release/2.10.0
2 parents 23e9e0e + 27156b7 commit 6d01667

File tree

17 files changed

+169
-90
lines changed

17 files changed

+169
-90
lines changed

example/app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ dependencies {
5252
implementation 'com.huawei.hms:push:6.11.0.300'
5353

5454
//Mindbox
55-
implementation 'cloud.mindbox:mobile-sdk:2.10.0-rc'
56-
implementation 'cloud.mindbox:mindbox-firebase:2.10.0-rc'
57-
implementation 'cloud.mindbox:mindbox-huawei:2.10.0-rc'
55+
implementation 'cloud.mindbox:mobile-sdk:2.10.0'
56+
implementation 'cloud.mindbox:mindbox-firebase'
57+
implementation 'cloud.mindbox:mindbox-huawei'
5858

5959
//Glade for custom loader
6060
implementation 'com.github.bumptech.glide:glide:4.15.1'

example/app/src/main/java/com/mindbox/example/MindboxFirebaseMessagingServiceMyService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class MindboxFirebaseMessagingService : FirebaseMessagingService() {
2323
val defaultActivity = MainActivity::class.java
2424

2525
// Method for rendering mobile push from Mindbox
26+
// Override resource mindbox_default_notification_color to change color pushSmallIcon
2627
val messageWasHandled = Mindbox.handleRemoteMessage(
2728
context = applicationContext,
2829
message = message,

example/app/src/main/java/com/mindbox/example/MindboxHuaweiMessagingService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class MindboxHuaweiMessagingService : HmsMessageService() {
3333
val defaultActivity = MainActivity::class.java
3434

3535
// Method for rendering mobile push from Mindbox
36+
// Override resource mindbox_default_notification_color to change color pushSmallIcon
3637
val messageWasHandled = Mindbox.handleRemoteMessage(
3738
context = applicationContext,
3839
message = message,

example/app/src/main/res/values/colors.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
<resources>
33
<color name="black">#FF000000</color>
44
<color name="white">#FFFFFFFF</color>
5+
<color name="mindbox_default_notification_color">#FF000000</color>
56
</resources>

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ android.enableJetifier=true
2020
# Kotlin code style for this project: "official" or "obsolete":
2121
kotlin.code.style=official
2222
# SDK version property
23-
SDK_VERSION_NAME=2.10.0-rc
23+
SDK_VERSION_NAME=2.10.0

sdk/src/main/java/cloud/mindbox/mobile_sdk/Extensions.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ import org.threeten.bp.format.DateTimeFormatter
3333
import java.nio.charset.Charset
3434
import java.util.Queue
3535
import kotlin.math.roundToInt
36+
import kotlin.time.Duration.Companion.days
37+
import kotlin.time.Duration.Companion.hours
38+
import kotlin.time.Duration.Companion.minutes
39+
import kotlin.time.Duration.Companion.seconds
3640

3741
internal fun SessionDelay(): SessionDelay {
3842
return Frequency.Delay.TimeDelay(0, InAppTime.SECONDS)
@@ -211,4 +215,19 @@ internal fun verifyMainThreadExecution(methodName: String) {
211215
if (Looper.myLooper() != Looper.getMainLooper()) {
212216
logE("Method $methodName must be called by main thread")
213217
}
214-
}
218+
}
219+
220+
fun String.parseTimeSpanToMillis(): Long {
221+
val regex = """(-)?(\d+\.)?([01]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)(\.\d{1,7})?""".toRegex()
222+
val matchResult = regex.matchEntire(this)
223+
?: throw IllegalArgumentException("Invalid timeSpan format")
224+
val (sign, days, hours, minutes, seconds, fraction) = matchResult.destructured
225+
val daysCorrected = if (days.isBlank()) "0" else days.dropLast(1)
226+
227+
val duration = daysCorrected.toLong().days +
228+
hours.toLong().hours +
229+
minutes.toLong().minutes +
230+
(seconds + fraction).toDouble().seconds
231+
232+
return if (sign == "-") duration.inWholeMilliseconds * -1 else duration.inWholeMilliseconds
233+
}

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -468,11 +468,8 @@ internal class InAppMapper {
468468
)
469469
}
470470

471-
fun mapToTtlDto(inAppTtlDtoBlank: SettingsDtoBlank.TtlParametersDtoBlank) = TtlDto(
472-
TtlParametersDto(
473-
inAppTtlDtoBlank.unit.enumValue<InAppTime>(),
474-
inAppTtlDtoBlank.value!!
475-
)
471+
fun mapToTtlDto(inAppTtlDtoBlank: SettingsDtoBlank.TtlDtoBlank) = TtlDto(
472+
inApps = inAppTtlDtoBlank.inApps!!
476473
)
477474

478475
private fun getTargetingProductSegmentationsList(targeting: TreeTargeting): List<String> {

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/repositories/MobileConfigRepositoryImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package cloud.mindbox.mobile_sdk.inapp.data.repositories
22

33
import cloud.mindbox.mobile_sdk.Mindbox
4-
import cloud.mindbox.mobile_sdk.inapp.data.managers.data_filler.DataManager
54
import cloud.mindbox.mobile_sdk.inapp.data.managers.SessionStorageManager
5+
import cloud.mindbox.mobile_sdk.inapp.data.managers.data_filler.DataManager
66
import cloud.mindbox.mobile_sdk.inapp.data.mapper.InAppMapper
77
import cloud.mindbox.mobile_sdk.inapp.data.validators.*
88
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.MobileConfigSerializationManager
@@ -162,7 +162,7 @@ internal class MobileConfigRepositoryImpl(
162162

163163
private fun getInAppTtl(configBlank: InAppConfigResponseBlank?): TtlDto? =
164164
try {
165-
configBlank?.settings?.ttl?.inApps?.takeIf { ttlParametersDtoBlank ->
165+
configBlank?.settings?.ttl?.takeIf { ttlParametersDtoBlank ->
166166
ttlParametersValidator.isValid(ttlParametersDtoBlank)
167167
}?.let { ttlParametersDtoBlank ->
168168
inAppMapper.mapToTtlDto(ttlParametersDtoBlank)

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/InAppConfigTtlValidator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package cloud.mindbox.mobile_sdk.inapp.data.validators
22

33
import cloud.mindbox.mobile_sdk.inapp.domain.models.InAppTtlData
44
import cloud.mindbox.mobile_sdk.logger.mindboxLogI
5-
import cloud.mindbox.mobile_sdk.models.operation.response.TtlParametersDto
5+
import cloud.mindbox.mobile_sdk.parseTimeSpanToMillis
66
import cloud.mindbox.mobile_sdk.repository.MindboxPreferences
77
import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
88
import java.util.Date
@@ -23,12 +23,12 @@ internal class InAppConfigTtlValidator : Validator<InAppTtlData> {
2323
}
2424
}
2525

26-
private fun isConfigValid(ttl: TtlParametersDto?): Boolean {
26+
private fun isConfigValid(ttl: String?): Boolean {
2727
return LoggingExceptionHandler.runCatching(true) {
2828
ttl?.let {
2929
val configUpdatedTime = MindboxPreferences.inAppConfigUpdatedTime.toULong()
3030
val currentTime = System.currentTimeMillis().toULong()
31-
val ttlTime = ttl.unit.toMillis(ttl.value).toULong()
31+
val ttlTime = ttl.parseTimeSpanToMillis().toULong()
3232
val safeTtlTime = minOf(Long.MAX_VALUE.toULong(), configUpdatedTime + ttlTime)
3333
mindboxLogI("Check In-Apps ttl. Current time $currentTime , config updated time $configUpdatedTime , ttl settings $ttlTime")
3434
mindboxLogI("Cached config valid to ${Date(safeTtlTime.toLong())}")
Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
11
package cloud.mindbox.mobile_sdk.inapp.data.validators
22

3-
import cloud.mindbox.mobile_sdk.enumValue
4-
import cloud.mindbox.mobile_sdk.inapp.domain.models.InAppTime
53
import cloud.mindbox.mobile_sdk.models.operation.response.SettingsDtoBlank
6-
import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
4+
import cloud.mindbox.mobile_sdk.parseTimeSpanToMillis
5+
import cloud.mindbox.mobile_sdk.utils.loggingRunCatching
76

8-
internal class TtlParametersValidator : Validator<SettingsDtoBlank.TtlParametersDtoBlank> {
7+
internal class TtlParametersValidator : Validator<SettingsDtoBlank.TtlDtoBlank> {
98

10-
override fun isValid(item: SettingsDtoBlank.TtlParametersDtoBlank): Boolean =
11-
unitIsValid(item) && valueIsValid(item)
12-
13-
private fun unitIsValid(ttlParameters: SettingsDtoBlank.TtlParametersDtoBlank): Boolean {
14-
return LoggingExceptionHandler.runCatching(defaultValue = false) {
15-
ttlParameters.unit?.enumValue<InAppTime>() != null
16-
}
17-
}
18-
19-
private fun valueIsValid(ttlParameters: SettingsDtoBlank.TtlParametersDtoBlank?): Boolean {
20-
return ttlParameters?.value?.let { it >= 0 } ?: false
9+
override fun isValid(item: SettingsDtoBlank.TtlDtoBlank): Boolean = loggingRunCatching(false) {
10+
item.inApps!!.parseTimeSpanToMillis() >= 0
2111
}
2212
}

0 commit comments

Comments
 (0)