Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.hedvig.android.data.addons.di

import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.core.demomode.DemoManager
import com.hedvig.android.core.demomode.Provider
import com.hedvig.android.data.addons.data.DemoGetAddonBannerInfoUseCase
import com.hedvig.android.data.addons.data.GetAddonBannerInfoUseCase
import com.hedvig.android.data.addons.data.GetTravelAddonBannerInfoUseCaseProvider
Expand All @@ -22,4 +23,9 @@ interface DataAddonsMetroProviders {
demoImpl = demoImpl,
prodImpl = prodImpl,
)

@Provides
fun provideGetAddonBannerInfoUseCaseProvider(
provider: GetTravelAddonBannerInfoUseCaseProvider,
): Provider<GetAddonBannerInfoUseCase> = provider
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.feature.chat.data.GetAllConversationsUseCase
import com.hedvig.android.feature.chat.model.InboxConversation
Expand All @@ -15,12 +16,13 @@ import com.hedvig.android.molecule.public.MoleculePresenterScope
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey
import kotlinx.coroutines.flow.collectLatest

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class InboxViewModel(
getAllConversationsUseCase: GetAllConversationsUseCase,
) : MoleculeViewModel<InboxEvent, InboxUiState>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.data.changetier.data.ChangeTierCreateSource.SELF_SERVICE
import com.hedvig.android.data.changetier.data.ChangeTierRepository
Expand All @@ -23,11 +24,12 @@ import com.hedvig.android.molecule.public.MoleculePresenterScope
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class ChooseInsuranceViewModel(
getCustomizableInsurancesUseCase: GetCustomizableInsurancesUseCase,
tierRepository: ChangeTierRepository,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package com.hedvig.android.feature.connect.payment.trustly

import androidx.lifecycle.ViewModel
import com.hedvig.android.apollo.NetworkCacheManager
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.feature.connect.payment.trustly.data.TrustlyCallback
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class TrustlyViewModel(
trustlyCallback: TrustlyCallback,
startTrustlySessionUseCase: StartTrustlySessionUseCase,
Expand Down
1 change: 1 addition & 0 deletions app/feature/feature-cross-sell-sheet/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ dependencies {
implementation(libs.arrow.fx)
implementation(projects.apolloCore)
implementation(projects.apolloOctopusPublic)
implementation(projects.coreCommonPublic)
implementation(projects.coreDemoMode)
implementation(projects.crossSells)
implementation(projects.dataAddons)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import arrow.core.Either
import arrow.core.left
import arrow.core.raise.either
Expand All @@ -30,7 +31,7 @@ import com.hedvig.android.molecule.public.MoleculePresenterScope
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collectLatest
Expand All @@ -48,7 +49,7 @@ import octopus.type.UserFlow

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class CrossSellSheetViewModel(
getCrossSellSheetDataUseCaseProvider: Provider<GetCrossSellSheetDataUseCase>,
crossSellAfterFlowRepository: CrossSellAfterFlowRepository,
Expand Down Expand Up @@ -135,12 +136,10 @@ internal class GetCrossSellSheetDataUseCaseProvider(
override val prodImpl: GetCrossSellSheetDataUseCase,
) : ProdOrDemoProvider<GetCrossSellSheetDataUseCase>

internal interface GetCrossSellSheetDataUseCase {
interface GetCrossSellSheetDataUseCase {
suspend fun invoke(source: CrossSellInput): Flow<Either<ErrorMessage, CrossSellSheetData>>
}

@Inject
@SingleIn(AppScope::class)
internal class GetCrossSellSheetDataUseCaseImpl(
private val apolloClient: ApolloClient,
) : GetCrossSellSheetDataUseCase {
Expand Down Expand Up @@ -199,8 +198,7 @@ internal fun CrossSellFragment.toCrossSell(): CrossSell {
}
}

@Inject
internal class DemoGetCrossSellSheetDataUseCase() : GetCrossSellSheetDataUseCase {
internal class DemoGetCrossSellSheetDataUseCase : GetCrossSellSheetDataUseCase {
override suspend fun invoke(source: CrossSellInput): Flow<Either<ErrorMessage, CrossSellSheetData>> {
return flowOf(ErrorMessage("Ineligible for demo mode").left())
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hedvig.android.feature.cross.sell.sheet.di

import com.apollographql.apollo.ApolloClient
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.core.demomode.DemoManager
import com.hedvig.android.core.demomode.Provider
Expand All @@ -12,16 +13,15 @@ import dev.zacsweers.metro.Provides
import dev.zacsweers.metro.SingleIn

@ContributesTo(AppScope::class)
internal interface CrossSellSheetMetroProviders {
interface CrossSellSheetMetroProviders {
@Provides
@SingleIn(AppScope::class)
fun provideGetCrossSellSheetDataUseCaseProvider(
demoManager: DemoManager,
prodImpl: GetCrossSellSheetDataUseCaseImpl,
demoImpl: DemoGetCrossSellSheetDataUseCase,
apolloClient: ApolloClient,
): Provider<GetCrossSellSheetDataUseCase> = GetCrossSellSheetDataUseCaseProvider(
demoManager = demoManager,
demoImpl = demoImpl,
prodImpl = prodImpl,
prodImpl = GetCrossSellSheetDataUseCaseImpl(apolloClient),
demoImpl = DemoGetCrossSellSheetDataUseCase(),
)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hedvig.android.feature.chat

import androidx.lifecycle.ViewModel
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.feature.deleteaccount.DeleteAccountEvent
import com.hedvig.android.feature.deleteaccount.DeleteAccountPresenter
Expand All @@ -9,11 +10,12 @@ import com.hedvig.android.feature.deleteaccount.data.RequestAccountDeletionUseCa
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class DeleteAccountViewModel(
private val requestAccountDeletionUseCase: RequestAccountDeletionUseCase,
private val deleteAccountStateUseCase: DeleteAccountStateUseCase,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hedvig.android.feature.help.center

import androidx.lifecycle.ViewModel
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.data.conversations.HasAnyActiveConversationUseCase
import com.hedvig.android.feature.help.center.data.GetHelpCenterFAQUseCase
Expand All @@ -8,11 +9,12 @@ import com.hedvig.android.feature.help.center.data.GetQuickLinksUseCase
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class HelpCenterViewModel(
getQuickLinksUseCase: GetQuickLinksUseCase,
hasAnyActiveConversationUseCase: HasAnyActiveConversationUseCase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.lifecycle.ViewModel
import arrow.core.merge
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.data.conversations.HasAnyActiveConversationUseCase
Expand All @@ -12,12 +13,13 @@ import com.hedvig.android.molecule.public.MoleculePresenterScope
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey
import kotlinx.coroutines.flow.map

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class ShowNavigateToInboxViewModel(
hasAnyActiveConversationUseCase: HasAnyActiveConversationUseCase,
) : MoleculeViewModel<Unit, Boolean>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.feature.help.center.data.GetPuppyGuideUseCase
import com.hedvig.android.feature.help.center.data.PuppyGuideStory
Expand All @@ -15,12 +16,13 @@ import com.hedvig.android.molecule.public.MoleculePresenterScope
import com.hedvig.android.molecule.public.MoleculeViewModel
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.binding
import dev.zacsweers.metrox.viewmodel.ViewModelKey
import kotlinx.coroutines.flow.SharingStarted

@Inject
@ViewModelKey
@ContributesIntoMap(AppScope::class)
@ContributesIntoMap(AppScope::class, binding<ViewModel>())
internal class PuppyGuideViewModel(
getPuppyGuideUseCase: GetPuppyGuideUseCase,
) : MoleculeViewModel<PuppyGuideEvent, PuppyGuideUiState>(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,46 @@
package com.hedvig.android.feature.home.di

import com.apollographql.apollo.ApolloClient
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.core.demomode.DemoManager
import com.hedvig.android.core.demomode.Provider
import com.hedvig.android.data.addons.data.GetTravelAddonBannerInfoUseCaseProvider
import com.hedvig.android.data.conversations.HasAnyActiveConversationUseCase
import com.hedvig.android.feature.home.home.data.GetHomeDataUseCase
import com.hedvig.android.feature.home.home.data.GetHomeDataUseCaseDemo
import com.hedvig.android.feature.home.home.data.GetHomeDataUseCaseImpl
import com.hedvig.android.featureflags.FeatureManager
import com.hedvig.android.memberreminders.GetMemberRemindersUseCase
import dev.zacsweers.metro.ContributesTo
import dev.zacsweers.metro.Provides
import dev.zacsweers.metro.SingleIn
import kotlin.time.Clock
import kotlinx.datetime.TimeZone

@ContributesTo(AppScope::class)
internal interface HomeMetroProviders {
interface HomeMetroProviders {
@Provides
@SingleIn(AppScope::class)
fun provideGetHomeDataUseCaseProvider(
demoManager: DemoManager,
prodImpl: GetHomeDataUseCaseImpl,
demoImpl: GetHomeDataUseCaseDemo,
apolloClient: ApolloClient,
hasAnyActiveConversationUseCase: HasAnyActiveConversationUseCase,
getMemberRemindersUseCase: GetMemberRemindersUseCase,
featureManager: FeatureManager,
clock: Clock,
timeZone: TimeZone,
getTravelAddonBannerInfoUseCaseProvider: GetTravelAddonBannerInfoUseCaseProvider,
): Provider<GetHomeDataUseCase> = GetHomeDataUseCaseProvider(
demoManager = demoManager,
demoImpl = demoImpl,
prodImpl = prodImpl,
prodImpl = GetHomeDataUseCaseImpl(
apolloClient = apolloClient,
hasAnyActiveConversationUseCase = hasAnyActiveConversationUseCase,
getMemberRemindersUseCase = getMemberRemindersUseCase,
featureManager = featureManager,
clock = clock,
timeZone = timeZone,
getTravelAddonBannerInfoUseCaseProvider = getTravelAddonBannerInfoUseCaseProvider,
),
demoImpl = GetHomeDataUseCaseDemo(),
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.apollographql.apollo.cache.normalized.FetchPolicy
import com.apollographql.apollo.cache.normalized.fetchPolicy
import com.hedvig.android.apollo.ApolloOperationError
import com.hedvig.android.apollo.safeFlow
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.crosssells.BundleProgress
import com.hedvig.android.crosssells.CrossSellSheetData
import com.hedvig.android.crosssells.RecommendedCrossSell
Expand All @@ -31,8 +30,6 @@ import com.hedvig.android.memberreminders.GetMemberRemindersUseCase
import com.hedvig.android.memberreminders.MemberReminders
import com.hedvig.android.ui.claimstatus.model.ClaimStatusCardUiState
import com.hedvig.android.ui.emergency.FirstVetSection
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import kotlin.time.Clock
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.currentCoroutineContext
Expand All @@ -50,12 +47,10 @@ import octopus.HomeQuery
import octopus.UnreadMessageCountQuery
import octopus.fragment.HomeCrossSellFragment

internal interface GetHomeDataUseCase {
interface GetHomeDataUseCase {
fun invoke(forceNetworkFetch: Boolean): Flow<Either<ApolloOperationError, HomeData>>
}

@Inject
@SingleIn(AppScope::class)
internal class GetHomeDataUseCaseImpl(
private val apolloClient: ApolloClient,
private val hasAnyActiveConversationUseCase: HasAnyActiveConversationUseCase,
Expand Down Expand Up @@ -286,7 +281,7 @@ private fun HomeQuery.Data.claimStatusCards(): HomeData.ClaimStatusCardsData? {
)
}

internal data class HomeData(
data class HomeData(
val contractStatus: ContractStatus,
val claimStatusCardsData: ClaimStatusCardsData?,
val veryImportantMessages: List<VeryImportantMessage>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,14 @@ package com.hedvig.android.feature.home.home.data
import arrow.core.Either
import arrow.core.right
import com.hedvig.android.apollo.ApolloOperationError
import com.hedvig.android.core.common.di.AppScope
import com.hedvig.android.crosssells.CrossSellSheetData
import com.hedvig.android.crosssells.RecommendedCrossSell
import com.hedvig.android.data.contract.CrossSell
import com.hedvig.android.data.contract.ImageAsset
import com.hedvig.android.memberreminders.MemberReminders
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf

@Inject
@SingleIn(AppScope::class)
internal class GetHomeDataUseCaseDemo : GetHomeDataUseCase {
override fun invoke(forceNetworkFetch: Boolean): Flow<Either<ApolloOperationError, HomeData>> = flowOf(
HomeData(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.hedvig.android.feature.home.home.data

import com.hedvig.android.core.common.di.AppScope
import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
Expand All @@ -11,6 +15,9 @@ interface SeenImportantMessagesStorage {
fun markMessageAsSeen(id: String)
}

@Inject
@SingleIn(AppScope::class)
@ContributesBinding(AppScope::class)
internal class SeenImportantMessagesStorageImpl : SeenImportantMessagesStorage {
private val storedSeenMessages: MutableStateFlow<List<String>> = MutableStateFlow(listOf())

Expand Down
Loading
Loading