Skip to content

Commit a375c92

Browse files
authored
Merge pull request #446 from mindbox-cloud/release/2.9.0-rc
Release/2.9.0-rc
2 parents 1928e62 + e6f0c67 commit a375c92

File tree

54 files changed

+1699
-70
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1699
-70
lines changed

.github/workflows/publish.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,17 @@ jobs:
9898
run: ./gradlew --no-daemon publish -PsonatypeUsername=${{secrets.OSSRHUSERNAME}} -PsonatypePassword=${{secrets.OSSRHPASSWORD}}
9999

100100
#To update version in Github README.md
101-
- name: Version Upgrade
102-
run: |
103-
chmod +x ./maven-version-update.sh
104-
./maven-version-update.sh
105-
- name: Commit and push if it changed
106-
run: |
107-
git diff
108-
git config --global user.email "[email protected]"
109-
git config --global user.name "GitHub Actions"
110-
git commit -am "Update README.md" || exit 0
111-
git push origin HEAD:develop
101+
# - name: Version Upgrade
102+
# run: |
103+
# chmod +x ./maven-version-update.sh
104+
# ./maven-version-update.sh
105+
# - name: Commit and push if it changed
106+
# run: |
107+
# git diff
108+
# git config --global user.email "[email protected]"
109+
# git config --global user.name "GitHub Actions"
110+
#git commit -am "Update README.md" || exit 0
111+
#git push origin HEAD:develop
112112

113113
- name: Job status notification
114114
uses: rtCamp/action-slack-notify@v2

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ To integrate Mindbox SDK into your Android app, follow the installation process
2121
2. Now, add the Mindbox SDK to your app-level build.gradle file:
2222
```markdown
2323
dependencies {
24-
implementation 'cloud.mindbox:mobile-sdk:2.8.3'
24+
implementation 'cloud.mindbox:mobile-sdk:{use-latest-version}}'
2525
}
2626
```
2727

example/app/build.gradle

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

6060
//Mindbox
61-
implementation 'cloud.mindbox:mobile-sdk:2.8.4'
62-
implementation 'cloud.mindbox:mindbox-firebase:2.8.4'
63-
implementation 'cloud.mindbox:mindbox-huawei:2.8.4'
61+
implementation 'cloud.mindbox:mobile-sdk:2.8.5'
62+
implementation 'cloud.mindbox:mindbox-firebase:2.8.5'
63+
implementation 'cloud.mindbox:mindbox-huawei:2.8.5'
6464

6565
//Glade for custom loader
6666
implementation 'com.github.bumptech.glide:glide:4.15.1'

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ android.enableJetifier=true
2121
kotlin.code.style=official
2222

2323
# SDK version property
24-
SDK_VERSION_NAME=2.8.5
24+
SDK_VERSION_NAME=2.9.0-rc

sdk/src/main/AndroidManifest.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,15 @@
88
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
99

1010
<uses-sdk tools:overrideLibrary="io.mockk, io.mockk.proxy.android" />
11+
<application>
12+
<activity
13+
android:name="cloud.mindbox.mobile_sdk.inapp.presentation.actions.PushActivationActivity"
14+
android:excludeFromRecents="true"
15+
android:exported="false"
16+
android:finishOnTaskLaunch="true"
17+
android:launchMode="singleTask"
18+
android:noHistory="true"
19+
android:theme="@style/Theme.MindboxTransparent">
20+
</activity>
21+
</application>
1122
</manifest>

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import cloud.mindbox.mobile_sdk.services.BackgroundWorkManager
3030
import cloud.mindbox.mobile_sdk.utils.Constants
3131
import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
3232
import cloud.mindbox.mobile_sdk.utils.MigrationManager
33+
import cloud.mindbox.mobile_sdk.utils.loggingRunCatching
3334
import com.jakewharton.threetenabp.AndroidThreeTen
3435
import kotlinx.coroutines.*
3536
import kotlinx.coroutines.Dispatchers.Default
@@ -86,6 +87,8 @@ object Mindbox : MindboxLog {
8687

8788
private lateinit var lifecycleManager: LifecycleManager
8889

90+
private val userVisitManager: UserVisitManager by mindboxInject { userVisitManager }
91+
8992
internal var pushServiceHandler: PushServiceHandler? = null
9093

9194
private val inAppMessageManager: InAppMessageManager by mindboxInject { inAppMessageManager }
@@ -307,23 +310,23 @@ object Mindbox : MindboxLog {
307310
* @param pushService - the instance of [MindboxPushService], which handles push notifications.
308311
*/
309312
fun updatePushToken(context: Context, token: String, pushService: MindboxPushService) =
310-
MindboxLoggerImpl.runCatching {
313+
loggingRunCatching {
311314
initComponents(context)
312315
mindboxLogI("updatePushToken token: $token with provider $pushService")
313316

314317
if (token.trim().isEmpty()) {
315318
mindboxLogW("Token is empty! Skipping update token.")
316-
return@runCatching
319+
return@loggingRunCatching
317320
}
318321

319322
if (MindboxPreferences.isFirstInitialize) {
320323
mindboxLogW("Mindbox init was never called. Skipping update token.")
321-
return@runCatching
324+
return@loggingRunCatching
322325
}
323326

324327
if (pushService.tag != pushServiceHandler?.notificationProvider) {
325328
mindboxLogW("Token provider ${pushService.tag} not matching with selected provider ${pushServiceHandler?.notificationProvider}. Skipping update token.")
326-
return@runCatching
329+
return@loggingRunCatching
327330
}
328331

329332
mindboxScope.launch {
@@ -482,6 +485,9 @@ object Mindbox : MindboxLog {
482485

483486
if (!firstInitCall) {
484487
InitializeLock.reset(InitializeLock.State.SAVE_MINDBOX_CONFIG)
488+
} else
489+
{
490+
userVisitManager.saveUserVisit()
485491
}
486492

487493
initScope.launch {

sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/DataModule.kt

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,21 @@ import cloud.mindbox.mobile_sdk.inapp.data.validators.*
1212
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppContentFetcher
1313
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppImageLoader
1414
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppImageSizeStorage
15+
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.PermissionManager
1516
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.GeoSerializationManager
1617
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppSerializationManager
1718
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.MobileConfigSerializationManager
1819
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.*
1920
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.validators.InAppValidator
21+
import cloud.mindbox.mobile_sdk.inapp.presentation.MindboxNotificationManager
22+
import cloud.mindbox.mobile_sdk.inapp.presentation.MindboxNotificationManagerImpl
23+
import cloud.mindbox.mobile_sdk.managers.RequestPermissionManager
24+
import cloud.mindbox.mobile_sdk.managers.RequestPermissionManagerImpl
2025
import cloud.mindbox.mobile_sdk.models.TreeTargetingDto
2126
import cloud.mindbox.mobile_sdk.monitoring.data.validators.MonitoringValidator
2227
import cloud.mindbox.mobile_sdk.utils.Constants
28+
import cloud.mindbox.mobile_sdk.utils.PushPermissionActionDto
29+
import cloud.mindbox.mobile_sdk.utils.RedirectUrlActionDto
2330
import cloud.mindbox.mobile_sdk.utils.RuntimeTypeAdapterFactory
2431
import com.google.gson.Gson
2532
import com.google.gson.GsonBuilder
@@ -116,6 +123,9 @@ internal fun DataModule(
116123

117124
override val sessionStorageManager: SessionStorageManager by lazy { SessionStorageManager() }
118125

126+
override val permissionManager: PermissionManager
127+
get() = PermissionManagerImpl(appContext)
128+
119129
override val inAppContentFetcher: InAppContentFetcher by lazy {
120130
InAppContentFetcherImpl(
121131
inAppImageLoader
@@ -203,6 +213,16 @@ internal fun DataModule(
203213

204214
override val inAppMapper: InAppMapper by lazy { InAppMapper() }
205215

216+
override val mindboxNotificationManager: MindboxNotificationManager by lazy {
217+
MindboxNotificationManagerImpl(
218+
context = appContext,
219+
requestPermissionManager = requestPermissionManager
220+
)
221+
}
222+
223+
override val requestPermissionManager: RequestPermissionManager
224+
get() = RequestPermissionManagerImpl()
225+
206226
override val gson: Gson by lazy {
207227
GsonBuilder().registerTypeAdapterFactory(
208228
RuntimeTypeAdapterFactory.of(
@@ -240,8 +260,11 @@ internal fun DataModule(
240260
Constants.TYPE_JSON_NAME,
241261
true
242262
).registerSubtype(
243-
BackgroundDto.LayerDto.ImageLayerDto.ActionDto.RedirectUrlActionDto::class.java,
244-
BackgroundDto.LayerDto.ImageLayerDto.ActionDto.RedirectUrlActionDto.REDIRECT_URL_ACTION_TYPE_JSON_NAME
263+
RedirectUrlActionDto::class.java,
264+
RedirectUrlActionDto.REDIRECT_URL_ACTION_TYPE_JSON_NAME
265+
).registerSubtype(
266+
PushPermissionActionDto::class.java,
267+
PushPermissionActionDto.PUSH_PERMISSION_TYPE_JSON_NAME
245268
)
246269
).registerTypeAdapterFactory(
247270
RuntimeTypeAdapterFactory.of(
@@ -304,6 +327,12 @@ internal fun DataModule(
304327
).registerSubtype(
305328
TreeTargetingDto.ViewProductNodeDto::class.java,
306329
TreeTargetingDto.ViewProductNodeDto.VIEW_PRODUCT_ID_JSON_NAME
330+
).registerSubtype(
331+
TreeTargetingDto.VisitNodeDto::class.java,
332+
TreeTargetingDto.VisitNodeDto.VISIT_JSON_NAME
333+
).registerSubtype(
334+
TreeTargetingDto.PushPermissionDto::class.java,
335+
TreeTargetingDto.PushPermissionDto.PUSH_PERMISSION_JSON_NAME
307336
)
308337
).create()
309338
}

sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/DomainModule.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@ package cloud.mindbox.mobile_sdk.di.modules
44
import cloud.mindbox.mobile_sdk.abtests.CustomerAbMixer
55
import cloud.mindbox.mobile_sdk.abtests.CustomerAbMixerImpl
66
import cloud.mindbox.mobile_sdk.abtests.InAppABTestLogic
7-
import cloud.mindbox.mobile_sdk.inapp.domain.CallbackInteractorImpl
8-
import cloud.mindbox.mobile_sdk.inapp.domain.InAppProcessingManagerImpl
9-
import cloud.mindbox.mobile_sdk.inapp.domain.InAppEventManagerImpl
10-
import cloud.mindbox.mobile_sdk.inapp.domain.InAppFilteringManagerImpl
11-
import cloud.mindbox.mobile_sdk.inapp.domain.InAppInteractorImpl
7+
import cloud.mindbox.mobile_sdk.inapp.domain.*
128
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.interactors.CallbackInteractor
139
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.interactors.InAppInteractor
14-
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppProcessingManager
1510
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppEventManager
1611
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppFilteringManager
12+
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.InAppProcessingManager
13+
import cloud.mindbox.mobile_sdk.managers.UserVisitManager
14+
import cloud.mindbox.mobile_sdk.managers.UserVisitManagerImpl
1715

1816

1917
internal fun DomainModule(
@@ -51,14 +49,19 @@ internal fun DomainModule(
5149
get() = InAppEventManagerImpl()
5250

5351
override val inAppFilteringManager: InAppFilteringManager
54-
get() = InAppFilteringManagerImpl(inAppRepository = inAppRepository)
52+
get() = InAppFilteringManagerImpl(
53+
inAppRepository = inAppRepository
54+
)
5555

5656
override val inAppABTestLogic: InAppABTestLogic
5757
get() = InAppABTestLogic(
5858
mixer = customerAbMixer,
5959
repository = mobileConfigRepository
6060
)
6161

62+
override val userVisitManager: UserVisitManager
63+
get() = UserVisitManagerImpl()
64+
6265
override val customerAbMixer: CustomerAbMixer
6366
get() = CustomerAbMixerImpl()
6467
}

sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/MindboxModule.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ import cloud.mindbox.mobile_sdk.inapp.data.validators.*
1111
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppContentFetcher
1212
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppImageLoader
1313
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.InAppImageSizeStorage
14+
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.PermissionManager
1415
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.interactors.CallbackInteractor
1516
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.interactors.InAppInteractor
1617
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.managers.*
1718
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.repositories.*
1819
import cloud.mindbox.mobile_sdk.inapp.domain.interfaces.validators.InAppValidator
19-
import cloud.mindbox.mobile_sdk.inapp.presentation.ActivityManager
20-
import cloud.mindbox.mobile_sdk.inapp.presentation.ClipboardManager
21-
import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageManager
22-
import cloud.mindbox.mobile_sdk.inapp.presentation.InAppMessageViewDisplayer
20+
import cloud.mindbox.mobile_sdk.inapp.presentation.*
2321
import cloud.mindbox.mobile_sdk.managers.GatewayManager
22+
import cloud.mindbox.mobile_sdk.managers.RequestPermissionManager
23+
import cloud.mindbox.mobile_sdk.managers.UserVisitManager
2424
import cloud.mindbox.mobile_sdk.monitoring.data.mappers.MonitoringMapper
2525
import cloud.mindbox.mobile_sdk.monitoring.data.room.MonitoringDatabase
2626
import cloud.mindbox.mobile_sdk.monitoring.data.room.dao.MonitoringDao
@@ -97,6 +97,9 @@ internal interface DataModule : MindboxModule {
9797
val snackbarElementValidator: SnackBarElementValidator
9898
val snackBarElementDtoDataFiller: SnackbarElementDtoDataFiller
9999
val closeButtonSnackbarElementDtoDataFiller: CloseButtonSnackbarElementDtoDataFiller
100+
val mindboxNotificationManager: MindboxNotificationManager
101+
val permissionManager: PermissionManager
102+
val requestPermissionManager: RequestPermissionManager
100103
}
101104

102105
internal interface MonitoringModule : MindboxModule {
@@ -118,6 +121,7 @@ internal interface DomainModule : MindboxModule {
118121
val inAppFilteringManager: InAppFilteringManager
119122
val customerAbMixer: CustomerAbMixer
120123
val inAppABTestLogic: InAppABTestLogic
124+
val userVisitManager: UserVisitManager
121125
}
122126

123127
internal interface ApiModule : MindboxModule {

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/dto/BackgroundDto.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ internal data class BackgroundDto(
3333
const val REDIRECT_URL_ACTION_TYPE_JSON_NAME = "redirectUrl"
3434
}
3535
}
36+
37+
internal data class PushPermissionActionDto(
38+
@SerializedName("intentPayload")
39+
val intentPayload: String?,
40+
@SerializedName("${"$"}type")
41+
val type: String?,
42+
) : ActionDto() {
43+
internal companion object {
44+
const val PUSH_PERMISSION_TYPE_JSON_NAME = "pushPermission"
45+
}
46+
}
3647
}
3748

3849
internal sealed class SourceDto {

0 commit comments

Comments
 (0)