MOBILE-213: send tags for inapps operations#733
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds support for propagating in-app “tags” through the SDK’s in-app operational flows (webview operations, targeting/click/show events, and failure tracking), gated by a new feature toggle (MobileSdkShouldSendInAppTags).
Changes:
- Introduces request models and serialization for in-app targeting/click operations with optional
tags, and threadstagsthrough repository/interactor/manager layers. - Extends WebView operation execution to merge in-app tags into the JS-provided operation body (
body.tags) while preserving client-provided values on key collisions. - Adds a feature toggle and a shared
gatedTags(...)helper to conditionally include tags, plus broad test updates for the new behavior.
Reviewed changes
Copilot reviewed 34 out of 34 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk/src/test/java/cloud/mindbox/mobile_sdk/models/operation/request/InAppTargetingRequestStub.kt | Adds a targeting request test stub. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/models/operation/request/InAppHandleRequestStub.kt | Removes obsolete handle-request stub. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/WebViewOperationExecutorTest.kt | Updates executor construction and adds coverage for tag merging rules. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayerImplTest.kt | Adds coverage for tags propagation when reattach fails. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageManagerTest.kt | Adds feature-toggle-driven tag passing assertions for show/click. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/domain/InAppProcessingManagerTest.kt | Updates repository contract and adds tests for tag gating in targeting/failures. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/domain/InAppInteractorImplTest.kt | Updates constructor wiring for new dependency. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/repositories/InAppRepositoryTest.kt | Updates repository tests to pass tags into click/targeted operations. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/managers/InAppSerializationManagerTest.kt | Adds targeting/click serialization coverage (and updates expectations). |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/managers/InAppFailureTrackerImplTest.kt | Adds tests ensuring tags are stored and forwarded with failures. |
| sdk/src/test/java/cloud/mindbox/mobile_sdk/ExtensionsKtTest.kt | Adds unit tests for the new gatedTags helper. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/models/operation/request/InAppOperationRequests.kt | Introduces request DTOs for click/targeting and adds tags to failures. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/models/operation/request/InAppHandleRequest.kt | Removes obsolete handle request DTOs. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/WebViewOperationExecutor.kt | Adds tag merging into operation body and injects Gson. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/WebViewInappViewHolder.kt | Passes wrapper tags into webview async/sync operations and failure tracking. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt | Includes tags in presentation failure tracking calls. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayerImpl.kt | Stores/propagates tags via InAppTypeWrapper, including restore/reattach paths. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageViewDisplayer.kt | Extends displayer API with optional tags parameter. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppMessageManagerImpl.kt | Gates tags via feature toggle and forwards to show/click/shown flows. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/models/InAppTypeWrapper.kt | Adds tags to the wrapper so holders can access them. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/interfaces/repositories/InAppRepository.kt | Updates repository API to accept tags for click/targeted events. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/interfaces/managers/InAppSerializationManager.kt | Splits serialization into targeting vs click methods with tags. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/interfaces/managers/InAppFailureTracker.kt | Extends failure APIs with optional tags. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/interfaces/interactors/InAppInteractor.kt | Updates click API to accept tags. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/InAppProcessingManagerImpl.kt | Gates tags by feature toggle and forwards tags to targeting and failure tracking. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/InAppInteractorImpl.kt | Passes tags through to repository on click. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/domain/extensions/TrackingFailureExtension.kt | Threads tags through failure-tracking helper extensions. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/repositories/InAppRepositoryImpl.kt | Serializes and sends click/targeted events including tags. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/managers/InAppSerializationManagerImpl.kt | Implements new click/targeting serialization methods with tags. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/managers/InAppFailureTrackerImpl.kt | Persists tags in collected/sent failures. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/managers/FeatureToggleManagerImpl.kt | Adds SEND_INAPP_TAGS_FEATURE constant. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/Extensions.kt | Adds InApp.gatedTags(isTagsFeatureEnabled) helper. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/PresentationModule.kt | Wires feature toggle manager into InAppMessageManagerImpl. |
| sdk/src/main/java/cloud/mindbox/mobile_sdk/di/modules/DomainModule.kt | Wires feature toggle manager into InAppProcessingManagerImpl. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
enotniy
reviewed
Jul 1, 2026
enotniy
approved these changes
Jul 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
https://tracker.yandex.ru/MOBILE-213