Skip to content

Commit ab63f47

Browse files
authored
refactor: adjust android consumer to logic api first using explicitApi (WPB-22250) (#4495)
1 parent dd53d88 commit ab63f47

File tree

16 files changed

+67
-69
lines changed

16 files changed

+67
-69
lines changed

app/src/androidTest/kotlin/com/wire/android/TestCoreLogicModule.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import com.wire.android.di.NoSession
2626
import com.wire.android.util.UserAgentProvider
2727
import com.wire.kalium.logic.CoreLogic
2828
import com.wire.kalium.logic.data.id.QualifiedIdMapper
29-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
3029
import com.wire.kalium.logic.feature.asset.AudioNormalizedLoudnessBuilder
3130
import com.wire.kalium.logic.feature.server.ServerConfigForAccountUseCase
3231
import com.wire.kalium.logic.feature.session.GetSessionsUseCase
@@ -111,7 +110,7 @@ class TestCoreLogicModule {
111110
@NoSession
112111
@Singleton
113112
@Provides
114-
fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapperImpl(null)
113+
fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapper(null)
115114

116115
@Singleton
117116
@Provides

app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import com.wire.kalium.logic.CoreLogic
2727
import com.wire.kalium.logic.data.asset.KaliumFileSystem
2828
import com.wire.kalium.logic.data.id.FederatedIdMapper
2929
import com.wire.kalium.logic.data.id.QualifiedIdMapper
30-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
3130
import com.wire.kalium.logic.data.user.UserId
3231
import com.wire.kalium.logic.feature.analytics.GetCurrentAnalyticsTrackingIdentifierUseCase
3332
import com.wire.kalium.logic.feature.asset.AudioNormalizedLoudnessBuilder
@@ -140,7 +139,7 @@ class CoreLogicModule {
140139
@NoSession
141140
@Singleton
142141
@Provides
143-
fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapperImpl(null)
142+
fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapper(null)
144143

145144
@Singleton
146145
@Provides

app/src/main/kotlin/com/wire/android/ui/calling/CallActivity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import androidx.lifecycle.lifecycleScope
2727
import com.wire.android.ui.AppLockActivity
2828
import com.wire.android.ui.common.setupOrientationForDevice
2929
import com.wire.android.util.SwitchAccountObserver
30-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
30+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
3131
import dagger.hilt.android.AndroidEntryPoint
3232
import kotlinx.coroutines.launch
3333
import javax.inject.Inject
@@ -46,12 +46,13 @@ abstract class CallActivity : AppCompatActivity() {
4646
}
4747

4848
private val callActivityViewModel: CallActivityViewModel by viewModels()
49-
protected val qualifiedIdMapper = QualifiedIdMapperImpl(null)
49+
protected val qualifiedIdMapper = QualifiedIdMapper(null)
5050

5151
override fun onCreate(savedInstanceState: Bundle?) {
5252
super.onCreate(savedInstanceState)
5353
setupOrientationForDevice()
5454
}
55+
5556
fun switchAccountIfNeeded(userId: String?) {
5657
userId?.let {
5758
qualifiedIdMapper.fromStringToQualifiedID(it).run {

app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/AudioMediaRecorder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.wire.android.appLogger
3131
import com.wire.android.util.dispatchers.DispatcherProvider
3232
import com.wire.android.util.fileDateTime
3333
import com.wire.kalium.logic.data.asset.KaliumFileSystem
34-
import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCaseImpl.Companion.ASSET_SIZE_DEFAULT_LIMIT_BYTES
34+
import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase.AssetSizeLimits.ASSET_SIZE_DEFAULT_LIMIT_BYTES
3535
import com.wire.kalium.util.DateTimeUtil
3636
import dagger.hilt.android.scopes.ViewModelScoped
3737
import kotlinx.coroutines.CoroutineScope

app/src/main/kotlin/com/wire/android/util/deeplink/DeepLinkProcessor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import com.wire.kalium.logic.CoreLogic
3030
import com.wire.kalium.logic.data.auth.AccountInfo
3131
import com.wire.kalium.logic.data.id.ConversationId
3232
import com.wire.kalium.logic.data.id.QualifiedID
33-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
33+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
3434
import com.wire.kalium.logic.data.id.toQualifiedID
3535
import com.wire.kalium.logic.feature.session.CurrentSessionResult
3636
import com.wire.kalium.logic.feature.session.CurrentSessionUseCase
@@ -84,7 +84,7 @@ class DeepLinkProcessor @Inject constructor(
8484
private val currentSession: CurrentSessionUseCase,
8585
@KaliumCoreLogic private val coreLogic: CoreLogic,
8686
) {
87-
private val qualifiedIdMapper = QualifiedIdMapperImpl(null)
87+
private val qualifiedIdMapper = QualifiedIdMapper(null)
8888

8989
suspend operator fun invoke(uri: Uri? = null, action: String? = null): DeepLinkResult {
9090
return when (val sessionResult = currentSession()) {

app/src/main/kotlin/com/wire/android/util/deeplink/UserLinkQRMapper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ package com.wire.android.util.deeplink
1919

2020
import android.net.Uri
2121
import com.wire.kalium.logic.data.id.QualifiedID
22-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
22+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
2323

2424
object UserLinkQRMapper {
2525

26-
val qualifiedIdMapper = QualifiedIdMapperImpl(null)
26+
val qualifiedIdMapper = QualifiedIdMapper(null)
2727

2828
fun fromDeepLinkToQualifiedId(uri: Uri, defaultDomain: String): UserLinkQRResult {
2929
val segments = uri.pathSegments

app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,20 @@ package com.wire.android.util.lifecycle
2121
import com.wire.android.appLogger
2222
import com.wire.android.di.KaliumCoreLogic
2323
import com.wire.android.util.CurrentScreenManager
24-
import com.wire.kalium.common.functional.Either
2524
import com.wire.kalium.common.functional.onFailure
2625
import com.wire.kalium.common.functional.onSuccess
2726
import com.wire.kalium.logger.KaliumLogger.Companion.ApplicationFlow.SYNC
2827
import com.wire.kalium.logger.obfuscateDomain
2928
import com.wire.kalium.logger.obfuscateId
3029
import com.wire.kalium.logic.CoreLogic
31-
import com.wire.kalium.logic.data.auth.AccountInfo
3230
import com.wire.kalium.logic.data.user.UserId
3331
import kotlinx.coroutines.awaitCancellation
3432
import kotlinx.coroutines.coroutineScope
3533
import kotlinx.coroutines.delay
3634
import kotlinx.coroutines.flow.collectLatest
3735
import kotlinx.coroutines.flow.combine
3836
import kotlinx.coroutines.flow.distinctUntilChanged
39-
import kotlinx.coroutines.flow.filterIsInstance
37+
import kotlinx.coroutines.flow.filter
4038
import kotlinx.coroutines.flow.map
4139
import kotlinx.coroutines.launch
4240
import javax.inject.Inject
@@ -60,26 +58,32 @@ class SyncLifecycleManager @Inject constructor(
6058
* Should be called only once on a global level
6159
*/
6260
suspend fun observeAppLifecycle() {
63-
coreLogic.getGlobalScope().sessionRepository.allValidSessionsFlow()
64-
.filterIsInstance<Either.Right<List<AccountInfo>>>()
65-
.map { it.value }
66-
.combine(currentScreenManager.isAppVisibleFlow(), ::Pair)
67-
.distinctUntilChanged()
68-
.collectLatest { (accounts, isAppVisible) ->
69-
if (!isAppVisible) {
70-
logger.i("Not running foreground sync request for users, as App is not visible.")
71-
return@collectLatest
61+
coreLogic.getGlobalScope().observeValidAccounts()
62+
.filter { pairs -> pairs.isNotEmpty() }
63+
.map { pairs ->
64+
pairs.map { (selfUser, _) ->
65+
selfUser.id
7266
}
73-
coroutineScope {
74-
accounts.forEach { accountInfo ->
75-
val userId = accountInfo.userId
76-
launch {
77-
logger.i("!!!!! Starting foreground sync request for user ${userId.value.obfuscateId()}.")
78-
coreLogic.getSessionScope(userId).syncExecutor.request {
79-
awaitCancellation()
67+
}.combine(currentScreenManager.isAppVisibleFlow(), ::Pair)
68+
.distinctUntilChanged()
69+
.collectLatest { (userIds, isAppVisible) ->
70+
if (isAppVisible) {
71+
logger.i(
72+
"App moved to foreground, " +
73+
"starting sync requests for users: ${userIds.joinToString { it.value.obfuscateId() }}"
74+
)
75+
coroutineScope {
76+
userIds.forEach { userId ->
77+
launch {
78+
logger.i("!!!!! Starting foreground sync request for user ${userId.value.obfuscateId()}.")
79+
coreLogic.getSessionScope(userId).syncExecutor.request {
80+
awaitCancellation()
81+
}
8082
}
8183
}
8284
}
85+
} else {
86+
logger.i("App moved to background, no longer running foreground sync requests for users.")
8387
}
8488
}
8589
}

app/src/main/kotlin/com/wire/android/workmanager/worker/DeleteConversationLocallyWorker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import com.wire.android.notification.openAppPendingIntent
3939
import com.wire.kalium.common.functional.fold
4040
import com.wire.kalium.logic.CoreLogic
4141
import com.wire.kalium.logic.data.id.ConversationId
42-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
42+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
4343
import com.wire.kalium.logic.data.user.UserId
4444
import com.wire.kalium.logic.feature.session.DoesValidSessionExistResult
4545
import dagger.assisted.Assisted
@@ -74,7 +74,7 @@ class DeleteConversationLocallyWorker @AssistedInject constructor(
7474
if (userIdString == null || conversationIdString == null) {
7575
return@coroutineScope Result.failure() // If either ID is not provided, fail the work
7676
}
77-
val qualifiedIdMapper = QualifiedIdMapperImpl(null)
77+
val qualifiedIdMapper = QualifiedIdMapper(null)
7878
val conversationId = qualifiedIdMapper.fromStringToQualifiedID(conversationIdString)
7979
val userId = qualifiedIdMapper.fromStringToQualifiedID(userIdString)
8080
coreLogic.getGlobalScope().doesValidSessionExist(userId).let {

app/src/test/kotlin/com/wire/android/navigation/NavigationUtilsTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ package com.wire.android.navigation
2121
import com.wire.android.model.ImageAsset
2222
import com.wire.android.model.parseIntoPrivateImageAsset
2323
import com.wire.kalium.logic.data.id.QualifiedID
24-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
24+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
2525
import org.junit.jupiter.api.Assertions.assertEquals
2626
import org.junit.jupiter.api.Test
2727
import org.junit.jupiter.api.assertThrows
@@ -30,7 +30,7 @@ internal class NavigationUtilsTest {
3030

3131
@Test
3232
fun `Given some correct string, when calling parseIntoPrivateImageAsset, then it correctly parses it to PrivateImageAsset`() {
33-
val qualifiedIdMapper = QualifiedIdMapperImpl(null)
33+
val qualifiedIdMapper = QualifiedIdMapper(null)
3434

3535
// Given
3636
val mockConversationIdValue = "mocked-conversation-id-value"
@@ -55,7 +55,7 @@ internal class NavigationUtilsTest {
5555

5656
@Test
5757
fun `Given an incorrect string, when parsing it to PrivateImageAsset, then it throws an exception`() {
58-
val qualifiedIdMapper = QualifiedIdMapperImpl(null)
58+
val qualifiedIdMapper = QualifiedIdMapper(null)
5959

6060
// Given
6161
val mockWrongImagePrivateAssetString = "wrong-private-asset@image"

app/src/test/kotlin/com/wire/android/notification/CallNotificationManagerTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.wire.kalium.logic.data.call.Call
3131
import com.wire.kalium.logic.data.call.CallStatus
3232
import com.wire.kalium.logic.data.conversation.Conversation
3333
import com.wire.kalium.logic.data.id.ConversationId
34-
import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl
34+
import com.wire.kalium.logic.data.id.QualifiedIdMapper
3535
import com.wire.kalium.logic.data.user.UserId
3636
import com.wire.kalium.logic.feature.session.CurrentSessionResult
3737
import io.mockk.MockKAnnotations
@@ -491,7 +491,7 @@ class CallNotificationManagerTest {
491491
dispatcherProvider = dispatcherProvider,
492492
builder = callNotificationBuilder,
493493
coreLogic = coreLogic,
494-
qualifiedIdMapper = QualifiedIdMapperImpl(TestUser.SELF_USER_ID),
494+
qualifiedIdMapper = QualifiedIdMapper(TestUser.SELF_USER_ID),
495495
)
496496
}
497497

0 commit comments

Comments
 (0)