-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add analytics user profile - Part 2 (WPB-8978) #2877
feat: add analytics user profile - Part 2 (WPB-8978) #2877
Conversation
… and set tracking identifier to user config metadata
…vious tracking identifier
…lytics_user_profile_part2 # Conflicts: # logic/src/commonMain/kotlin/com/wire/kalium/logic/configuration/UserConfigRepository.kt # logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/receiver/handler/DataTransferEventHandler.kt # logic/src/commonTest/kotlin/com/wire/kalium/logic/sync/receiver/handler/DataTransferEventHandlerTest.kt # logic/src/commonTest/kotlin/com/wire/kalium/logic/util/arrangement/repository/UserConfigRepositoryArrangement.kt # persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/unread/UserConfigDAO.kt
logic/src/commonMain/kotlin/com/wire/kalium/logic/configuration/UserConfigRepository.kt
Outdated
Show resolved
Hide resolved
...n/com/wire/kalium/logic/feature/analytics/ObserveAnalyticsTrackingIdentifierStatusUseCase.kt
Outdated
Show resolved
Hide resolved
Datadog ReportBranch report: ✅ 0 Failed, 3023 Passed, 105 Skipped, 12.04s Total Time |
…r Left is tracking identifier already exists
… propagating tracking identifier
suspend fun getTrackingIdentifier(): String? | ||
suspend fun observeTrackingIdentifier(): Flow<Either<StorageFailure, String>> | ||
suspend fun setPreviousTrackingIdentifier(identifier: String) | ||
suspend fun getPreviousTrackingIdentifier(): String? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the previousTrackingIdentifier
, how does it compare with getTrackingIdentifier
?
Every time we setTrackingIdentifier(N)
we setPreviousTrackingIdentifier(N-1)
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, we set the PreviouTrackingIdentifier
when we receive a new TrackingIdentifier
from remote (meaning a new device of the user was logged in somewhere else and we now need to use this new tracking identifier).
Both identifiers are kept until a proper analytics migration of the new identifier is done, then the previous identifier is deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work as always 👏 added some suggestions about naming and docs, that can help us in the future, looking sharp 🔪
data/src/commonMain/kotlin/com/wire/kalium/logic/data/analytics/AnalyticsIdentifierResult.kt
Show resolved
Hide resolved
logic/src/commonMain/kotlin/com/wire/kalium/logic/configuration/UserConfigRepository.kt
Outdated
Show resolved
Hide resolved
.../src/commonMain/kotlin/com/wire/kalium/logic/feature/analytics/AnalyticsIdentifierManager.kt
Show resolved
Hide resolved
Quality Gate passedIssues Measures |
e55ce2d
into
feat/add_analytics_user_profile_epic
* feat: add analytics user profile - Part 1 (WPB-8978) (#2868) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add analytics user profile - Part 2 (WPB-8978) (#2877) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add get for current tracking identifier and get and set for previous tracking identifier * feat: add usage and logic handling for current and previous tracking identifiers * feat: add tests * feat: add better handling of receiving already existing tracking id and tests * feat: add new analytics logger to kalium logger * feat: add usecase to observe analytics tracking identifier * feat: add tests for observeAnalyticsTrackingIdentifierStatus * feat: add none AnalyticsIdentifierResult to be used in AR and remove abstract attribute * feat: add proper mapping to observer result and verification on Either Left is tracking identifier already exists * feat: add tests for observer with new logic * chore: add user scope logger * chore: add `as` instantiation of right value for usecase result * feat: move AnalyticsIdentifierResult to new data module and update its usages * feat: add usecase to delete previous tracking identifier * chore: add missing imports * test: add test for DeletePreviousTrackingIdentifierUseCase * chore: remove delete previous tracking identifier use case * feat: add extra sealed interface for better handling of analytics identifier result * feat: add AnalyticsIdentifierManager to handle migration complete and propagating tracking identifier * chore: add missing extension from new sealed interface * test: add tests for AnalyticsIdentifierManager * chore: adjust detekt * chore: remove unused import * chore: rename user config current tracking identifier * chore: add docs
* feat: add analytics user profile - Part 1 (WPB-8978) (#2868) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add analytics user profile - Part 2 (WPB-8978) (#2877) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add get for current tracking identifier and get and set for previous tracking identifier * feat: add usage and logic handling for current and previous tracking identifiers * feat: add tests * feat: add better handling of receiving already existing tracking id and tests * feat: add new analytics logger to kalium logger * feat: add usecase to observe analytics tracking identifier * feat: add tests for observeAnalyticsTrackingIdentifierStatus * feat: add none AnalyticsIdentifierResult to be used in AR and remove abstract attribute * feat: add proper mapping to observer result and verification on Either Left is tracking identifier already exists * feat: add tests for observer with new logic * chore: add user scope logger * chore: add `as` instantiation of right value for usecase result * feat: move AnalyticsIdentifierResult to new data module and update its usages * feat: add usecase to delete previous tracking identifier * chore: add missing imports * test: add test for DeletePreviousTrackingIdentifierUseCase * chore: remove delete previous tracking identifier use case * feat: add extra sealed interface for better handling of analytics identifier result * feat: add AnalyticsIdentifierManager to handle migration complete and propagating tracking identifier * chore: add missing extension from new sealed interface * test: add tests for AnalyticsIdentifierManager * chore: adjust detekt * chore: remove unused import * chore: rename user config current tracking identifier * chore: add docs (cherry picked from commit f534d36)
* feat: Add Anonymous Analytics User Profile EPIC - (WPB-8978) (#2887) * feat: add analytics user profile - Part 1 (WPB-8978) (#2868) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add analytics user profile - Part 2 (WPB-8978) (#2877) * feat: add method to set/insert tracking identifier into user metadata table * feat: add MessageContent for DataTransfer with TrackingIdentifier * feat: add DataTransferEventHandler to handle new data transfer events and set tracking identifier to user config metadata * chore: remove needless blank line * feat: add get for current tracking identifier and get and set for previous tracking identifier * feat: add usage and logic handling for current and previous tracking identifiers * feat: add tests * feat: add better handling of receiving already existing tracking id and tests * feat: add new analytics logger to kalium logger * feat: add usecase to observe analytics tracking identifier * feat: add tests for observeAnalyticsTrackingIdentifierStatus * feat: add none AnalyticsIdentifierResult to be used in AR and remove abstract attribute * feat: add proper mapping to observer result and verification on Either Left is tracking identifier already exists * feat: add tests for observer with new logic * chore: add user scope logger * chore: add `as` instantiation of right value for usecase result * feat: move AnalyticsIdentifierResult to new data module and update its usages * feat: add usecase to delete previous tracking identifier * chore: add missing imports * test: add test for DeletePreviousTrackingIdentifierUseCase * chore: remove delete previous tracking identifier use case * feat: add extra sealed interface for better handling of analytics identifier result * feat: add AnalyticsIdentifierManager to handle migration complete and propagating tracking identifier * chore: add missing extension from new sealed interface * test: add tests for AnalyticsIdentifierManager * chore: adjust detekt * chore: remove unused import * chore: rename user config current tracking identifier * chore: add docs (cherry picked from commit f534d36) * feat: Add packing and sending DataTransfer message - (WPB-8978) (#2896) * feat: add syncManager to AnalyticsIdentifierManager in order to wait for current device to be available * feat: add implementation of packDataTransfer message * test: add tests (cherry picked from commit 337c415) * chore: Improve isSelfATeamMember UseCase (WPB-8978) (#2924) * chore: add slow sync repository to observe for last sync completion before returning default false value for isSelfATeamMember * chore: add parameter for SlowSyncRepository for new usage * tests: adjust existing tests for the usecase (cherry picked from commit 9dbf5f5)
PR Submission Checklist for internal contributors
The PR Title
SQPIT-764
The PR Description
What's new in this PR?
Issues
There was no way of observing when either a new tracking identifier was received or it needed to be generated
Causes (Optional)
Not implemented.
Solutions
This is Part 2, which solves Observing if:
Dependencies (Optional)
Testing
Test Coverage (Optional)
Notes (Optional)
This is Part 2