Skip to content
Draft
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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import com.hedvig.android.logger.LogPriority
import com.hedvig.android.logger.logcat
import com.hedvig.android.navigation.core.HedvigDeepLinkContainer
import com.hedvig.android.navigation.core.allDeepLinkUriPatterns
import com.hedvig.android.notification.badge.data.payment.MissedPaymentNotificationServiceProvider
import com.hedvig.android.theme.Theme
import com.stylianosgakis.navigation.recents.url.sharing.provideAssistContent
import java.util.Locale
Expand Down Expand Up @@ -74,6 +75,7 @@ class MainActivity : AppCompatActivity() {

private val logoutUseCase: LogoutUseCase by inject()
private val getMemberAuthorizationCodeUseCase: GetMemberAuthorizationCodeUseCase by inject()
private val missedPaymentNotificationServiceProvider: MissedPaymentNotificationServiceProvider by inject()

private var navController: NavController? = null

Expand Down Expand Up @@ -164,6 +166,7 @@ class MainActivity : AppCompatActivity() {
externalNavigator = externalNavigator,
logoutUseCase = logoutUseCase,
getMemberAuthorizationCodeUseCase = getMemberAuthorizationCodeUseCase,
missedPaymentNotificationServiceProvider = missedPaymentNotificationServiceProvider,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import com.hedvig.android.core.demomode.Provider
import com.hedvig.android.data.paying.member.GetOnlyHasNonPayingContractsUseCase
import com.hedvig.android.data.settings.datastore.SettingsDataStore
import com.hedvig.android.feature.cross.sell.sheet.CrossSellSheet
import com.hedvig.android.notification.badge.data.payment.MissedPaymentNotificationServiceProvider
import com.hedvig.android.feature.login.navigation.LoginDestination
import com.hedvig.android.featureflags.FeatureManager
import com.hedvig.android.language.LanguageService
Expand Down Expand Up @@ -84,13 +85,15 @@ internal fun HedvigApp(
externalNavigator: ExternalNavigator,
logoutUseCase: LogoutUseCase,
getMemberAuthorizationCodeUseCase: GetMemberAuthorizationCodeUseCase,
missedPaymentNotificationServiceProvider: MissedPaymentNotificationServiceProvider,
) {
val hedvigAppState = rememberHedvigAppState(
windowSizeClass = windowSizeClass,
settingsDataStore = settingsDataStore,
getOnlyHasNonPayingContractsUseCase = getOnlyHasNonPayingContractsUseCase,
featureManager = featureManager,
navHostController = navHostController,
missedPaymentNotificationServiceProvider = missedPaymentNotificationServiceProvider,
)
val darkTheme = hedvigAppState.darkTheme
HedvigTheme(darkTheme = darkTheme) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.hedvig.android.core.demomode.Provider
import com.hedvig.android.data.paying.member.GetOnlyHasNonPayingContractsUseCase
import com.hedvig.android.data.settings.datastore.SettingsDataStore
import com.hedvig.android.feature.forever.navigation.ForeverDestination
import com.hedvig.android.notification.badge.data.payment.MissedPaymentNotificationServiceProvider
import com.hedvig.android.feature.help.center.navigation.helpCenterCrossSellBottomSheetPermittingDestinations
import com.hedvig.android.feature.home.home.navigation.HomeDestination
import com.hedvig.android.feature.home.home.navigation.homeCrossSellBottomSheetPermittingDestinations
Expand Down Expand Up @@ -62,6 +63,7 @@ internal fun rememberHedvigAppState(
getOnlyHasNonPayingContractsUseCase: Provider<GetOnlyHasNonPayingContractsUseCase>,
featureManager: FeatureManager,
navHostController: NavHostController,
missedPaymentNotificationServiceProvider: MissedPaymentNotificationServiceProvider,
coroutineScope: CoroutineScope = rememberCoroutineScope(),
): HedvigAppState {
NavigationViewTrackingEffect(navController = navHostController)
Expand All @@ -73,6 +75,7 @@ internal fun rememberHedvigAppState(
settingsDataStore,
getOnlyHasNonPayingContractsUseCase,
featureManager,
missedPaymentNotificationServiceProvider,
) {
HedvigAppState(
navController = navHostController,
Expand All @@ -81,6 +84,7 @@ internal fun rememberHedvigAppState(
settingsDataStore = settingsDataStore,
getOnlyHasNonPayingContractsUseCase = getOnlyHasNonPayingContractsUseCase,
featureManager = featureManager,
missedPaymentNotificationServiceProvider = missedPaymentNotificationServiceProvider,
)
}
}
Expand All @@ -93,6 +97,7 @@ internal class HedvigAppState(
private val settingsDataStore: SettingsDataStore,
getOnlyHasNonPayingContractsUseCase: Provider<GetOnlyHasNonPayingContractsUseCase>,
featureManager: FeatureManager,
missedPaymentNotificationServiceProvider: MissedPaymentNotificationServiceProvider,
) {
val currentDestination: NavDestination?
@Composable get() = navController.currentBackStackEntryAsState().value?.destination
Expand Down Expand Up @@ -162,6 +167,15 @@ internal class HedvigAppState(
),
)

val showPaymentsBadge: StateFlow<Boolean> = missedPaymentNotificationServiceProvider
.prodImpl
.showRedDotNotification()
.stateIn(
coroutineScope,
SharingStarted.WhileSubscribed(5_000),
false,
)

/**
* UI logic for navigating to a top level destination in the app. Top level destinations have
* only one copy of the destination of the back stack, and save and restore state whenever you
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import com.hedvig.android.design.system.hedvig.tokens.MotionTokens
import com.hedvig.android.language.LanguageService
import com.hedvig.android.navigation.activity.ExternalNavigator
import com.hedvig.android.navigation.core.HedvigDeepLinkContainer
import com.hedvig.android.navigation.core.TopLevelGraph
import hedvig.resources.EXIT_DEMO_MODE_BUTTON
import hedvig.resources.Res
import org.jetbrains.compose.resources.stringResource
Expand All @@ -65,6 +66,7 @@ internal fun HedvigAppUi(
logoutUseCase: LogoutUseCase,
) {
val isDemoMode by demoManager.isDemoMode().collectAsState(false)
val showPaymentsBadge by hedvigAppState.showPaymentsBadge.collectAsState()
val globalSnackBarState = rememberGlobalSnackBarState()
Box(Modifier.fillMaxSize()) {
Surface(
Expand All @@ -76,6 +78,9 @@ internal fun HedvigAppUi(
topLevelGraphs = hedvigAppState.topLevelGraphs.collectAsState().value,
currentDestination = hedvigAppState.currentDestination,
onNavigateToTopLevelGraph = hedvigAppState::navigateToTopLevelGraph,
getShowNotificationBadge = { graph ->
if (graph == TopLevelGraph.Payments) showPaymentsBadge else false
},
) {
Box(
propagateMinConstraints = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ internal fun NavigationSuite(
currentDestination: NavDestination?,
onNavigateToTopLevelGraph: (TopLevelGraph) -> Unit,
modifier: Modifier = Modifier,
getShowNotificationBadge: (TopLevelGraph) -> Boolean = { false },
content: @Composable RowScope.() -> Unit,
) {
Column(modifier) {
Expand All @@ -49,6 +50,7 @@ internal fun NavigationSuite(
onNavigateToDestination = onNavigateToTopLevelGraph,
getIsCurrentlySelected = currentDestination::isTopLevelGraphInHierarchy,
isExtraTall = navigationSuiteType == NavigationSuiteType.NavigationRailXLarge,
getShowNotificationBadge = getShowNotificationBadge,
)
}
content()
Expand All @@ -62,6 +64,7 @@ internal fun NavigationSuite(
destinations = topLevelGraphs,
onNavigateToDestination = onNavigateToTopLevelGraph,
getIsCurrentlySelected = currentDestination::isTopLevelGraphInHierarchy,
getShowNotificationBadge = getShowNotificationBadge,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,6 @@
<string name="BANKID_MISSING_MESSAGE_GEN_AUTH">Skanna QR-koden med BankID-appen på din telefon, eller logga in med din e-postadress nedan.</string>
<string name="BANK_PAYOUT_METHOD_CARD_DESCRIPTION">Utbetalning till ett svenskt bankkonto</string>
<string name="BANK_PAYOUT_METHOD_CARD_TITLE">Bankkonto</string>
<string name="BANK_PAYOUT_METHOD_FORM_CLEARING_FIELD_LABEL">Clearing</string>
<string name="BANK_PAYOUT_METHOD_TRUSTLY_DESCRIPTION">Direktutbetalning via Trustly</string>
<string name="BOT_SERVICE_STATUS_REPLY_AFTER_LUNCH">Hej - just nu har vi lunch-stängt i chatten. Vi svarar så fort vi kan när vi öppnar igen klockan 13.</string>
<string name="BOT_SERVICE_STATUS_REPLY_ASAP">Tack för ditt meddelande. Vi svarar så snart som möjligt.</string>
<string name="BOT_SERVICE_STATUS_REPLY_WHEN_OPEN">Just nu är chatten stängd. Vi svarar så fort vi kan när vi öppnar.</string>
Expand Down Expand Up @@ -147,7 +145,7 @@
<string name="CHANGE_ADDRESS_YEAR_OF_CONSTRUCTION_ERROR">Ange byggår</string>
<string name="CHANGE_ADDRESS_YEAR_OF_CONSTRUCTION_LABEL">Byggår</string>
<string name="CHANGE_ADDRESS_YOU_PLUS">Du + %1$d</string>
<string name="CHANGE_PAYOUT_METHOD_BUTTON_LABEL">Ändra konto</string>
<string name="CHANGE_PAYOUT_METHOD_BUTTON_LABEL">Ändra utbetalningskonto</string>
<string name="CHANGE_TIER_BUTTON_TITLE">Ändra skyddsnivå</string>
<string name="CHATBOT_TALK_TO_HUMAN_BUTTON_TITLE">Chatta med en specialist</string>
<string name="CHATBOT_TALK_TO_HUMAN_TEXT">Om det inte fungerar eller om du har några andra frågor, vänligen meddela oss så hjälper en av våra specialister till inom kort!</string>
Expand Down Expand Up @@ -517,7 +515,7 @@
<string name="KIVRA_PAYMENT_INFO">Fakturan skickas till din Kivra-inkorg 14 dagar före förfallodatumet varje månad.</string>
<string name="LEGAL_A11Y">Tillgänglighet</string>
<string name="LEGAL_CATEGORY_LABEL">Juridisk information</string>
<string name="LEGAL_INFORMATION">Juridisk information</string>
<string name="LEGAL_INFORMATION">Legal information</string>
<string name="LEGAL_PRIVACY_POLICY">Personuppgifter</string>
<string name="LETTER_TO_EIR_SUBJECT">Fråga angående skadeanmälan - Fordon reg. %1$s</string>
<string name="LOGIN_MARKET_PICKER_PREFERENCES">Välj land och språk</string>
Expand Down Expand Up @@ -608,7 +606,19 @@
<string name="PAYMENTS_PAYMENT_DUE_INFO">Om du uppdaterar ditt bankkonto nära den %1$s kan det ta några extra dagar innan pengarna dras.</string>
<string name="PAYMENTS_PAYMENT_FAILED">Denna betalning misslyckades och lades till i din betalning den %1$s .</string>
<string name="PAYMENTS_PAYMENT_HISTORY_BUTTON_LABEL">Betalningshistorik</string>
<string name="PAYMENTS_PAYMENT_IN_PROGRESS">Betalning pågår</string>
<string name="PAYMENTS_PAYMENT_IN_PROGRESS_DESCRIPTION">Det kan ta upp till 5 bankdagar innan betalningen syns</string>
<string name="PAYMENTS_PAYMENT_METHOD">Betalningssätt</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_AMOUNT_DUE">Att betala: %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_BODY">Vi kunde inte dra betalningen från ditt bankkonto. Betala för att undvika avbrott i ditt skydd.</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_BUTTON">Granska betalning</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_BODY">Betala för att undvika avbrott</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_DUE_DATE">Förfallodag</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_FINE_PRINT">Se till att det finns tillräckliga medel på kontot för att genomföra betalningen</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_PAY">Betala %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_SINCE">Försenad sedan %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_VIEW_DETAILS">Visa betalningsdetaljer</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_TITLE">Försenad betalning</string>
<string name="PAYMENTS_PAYMENT_SUCCESSFUL">Betalning genomförd</string>
<string name="PAYMENTS_PERIOD_DAYS">%1$s dagar</string>
<string name="PAYMENTS_PERIOD_FULL">Hel period</string>
Expand All @@ -622,6 +632,11 @@
<string name="PAYMENTS_UPCOMING_PAYMENT">Kommande betalning</string>
<string name="PAYMENTS_VALID_UNTIL">Giltig till %1$s</string>
<string name="PAYMENT_HISTORY_TITLE">Betalningshistorik</string>
<string name="PAYOUT_ADD_PAYOUT_METHOD">Lägg till utbetalningsmetod</string>
<string name="PAYOUT_METHOD_INVOICE_DESCRIPTION">Direktutbetalning via Faktura</string>
<string name="PAYOUT_METHOD_SWISH_DESCRIPTION">Snabb utbetalning med Swish</string>
<string name="PAYOUT_METHOD_TRUSTLY_DESCRIPTION">Utbetalning via Trustly</string>
<string name="PAYOUT_MISSING_INFO">Du har inte lagt till någon utbetalningsmetod än. Lägg till en för att vi ska kunna betala ut till dig.</string>
<string name="PAYOUT_PAGE_HEADING">Utbetalningskonto</string>
<string name="PAYOUT_SELECT_PAYOUT_METHOD">Välj utbetalningsmetod</string>
<string name="PERMISSION_DIALOG_RECORD_AUDIO_MESSAGE">Vi behöver tillåtelse att spela in ljud</string>
Expand Down
23 changes: 19 additions & 4 deletions app/core/core-resources/src/androidMain/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,8 @@
<string name="AUTOMATED_MESSAGE_INFO_SHEET_TEXT">We use AI to help you as quickly as possible. The answers are generated automatically and may not always be correct.\n\nIf necessary, you’ll be connected to our service team to help you further.\n\nThe details of your insurance are outlined in your insurance letter and terms and conditions.</string>
<string name="AUTOMATED_MESSAGE_INFO_SHEET_TITLE">AI and automated messages</string>
<string name="BANKID_MISSING_MESSAGE_GEN_AUTH">Scan the QR-code with the BankID app on the phone where it’s installed or log in with email using the button below.</string>
<string name="BANK_PAYOUT_METHOD_CARD_DESCRIPTION">Payout via a Swedish bank account</string>
<string name="BANK_PAYOUT_METHOD_CARD_DESCRIPTION">Payout to a Swedish bank account</string>
<string name="BANK_PAYOUT_METHOD_CARD_TITLE">Bank account</string>
<string name="BANK_PAYOUT_METHOD_FORM_CLEARING_FIELD_LABEL">Clearing</string>
<string name="BANK_PAYOUT_METHOD_TRUSTLY_DESCRIPTION">Direct payment via Trustly</string>
<string name="BOT_SERVICE_STATUS_REPLY_AFTER_LUNCH">Hej - just nu har vi lunch-stängt i chatten. Vi svarar så fort vi kan när vi öppnar igen klockan 13.</string>
<string name="BOT_SERVICE_STATUS_REPLY_ASAP">Thank you for reaching out to us. We will answer as soon as possible.</string>
<string name="BOT_SERVICE_STATUS_REPLY_WHEN_OPEN">Hej - just nu är chatten stängd. Vi svarar så fort vi kan när vi öppnar.</string>
Expand Down Expand Up @@ -147,7 +145,7 @@
<string name="CHANGE_ADDRESS_YEAR_OF_CONSTRUCTION_ERROR">Please enter year of construction</string>
<string name="CHANGE_ADDRESS_YEAR_OF_CONSTRUCTION_LABEL">Year of construction</string>
<string name="CHANGE_ADDRESS_YOU_PLUS">You + %1$d</string>
<string name="CHANGE_PAYOUT_METHOD_BUTTON_LABEL">Change account</string>
<string name="CHANGE_PAYOUT_METHOD_BUTTON_LABEL">Change payout account</string>
<string name="CHANGE_TIER_BUTTON_TITLE">Change coverage level</string>
<string name="CHATBOT_TALK_TO_HUMAN_BUTTON_TITLE">Talk to a human</string>
<string name="CHATBOT_TALK_TO_HUMAN_TEXT">If it’s not working or if you have any other questions, please let us know and one of our specialists will help out shortly!</string>
Expand Down Expand Up @@ -608,7 +606,19 @@
<string name="PAYMENTS_PAYMENT_DUE_INFO">If you update your bank account close to the %1$s, the withdrawal might take a few extra days.</string>
<string name="PAYMENTS_PAYMENT_FAILED">This payment failed and was added to your payment on %1$s.</string>
<string name="PAYMENTS_PAYMENT_HISTORY_BUTTON_LABEL">Payment history</string>
<string name="PAYMENTS_PAYMENT_IN_PROGRESS">Payment in progress</string>
<string name="PAYMENTS_PAYMENT_IN_PROGRESS_DESCRIPTION">It may take up to 5 business days for the charge to appear</string>
<string name="PAYMENTS_PAYMENT_METHOD">Payment method</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_AMOUNT_DUE">Amount due: %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_BODY">We couldn\'t collect this payment from your bank account. Pay now to keep your coverage active.</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_BUTTON">Review payment</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_BODY">Pay now to avoid interruption</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_DUE_DATE">Payment due</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_FINE_PRINT">Ensure your account has enough funds to cover this payment</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_PAY">Pay %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_SINCE">Overdue since %1$s</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_DETAILS_VIEW_DETAILS">View payment details</string>
<string name="PAYMENTS_PAYMENT_OVERDUE_TITLE">Payment overdue</string>
<string name="PAYMENTS_PAYMENT_SUCCESSFUL">Payment successful</string>
<string name="PAYMENTS_PERIOD_DAYS">%1$s days</string>
<string name="PAYMENTS_PERIOD_FULL">Full period</string>
Expand All @@ -622,6 +632,11 @@
<string name="PAYMENTS_UPCOMING_PAYMENT">Upcoming payment</string>
<string name="PAYMENTS_VALID_UNTIL">Valid until %1$s</string>
<string name="PAYMENT_HISTORY_TITLE">Payment history</string>
<string name="PAYOUT_ADD_PAYOUT_METHOD">Add payout method</string>
<string name="PAYOUT_METHOD_INVOICE_DESCRIPTION">Direct payment via Invoice</string>
<string name="PAYOUT_METHOD_SWISH_DESCRIPTION">Instant payout with Swish</string>
<string name="PAYOUT_METHOD_TRUSTLY_DESCRIPTION">Payout via Trustly</string>
<string name="PAYOUT_MISSING_INFO">You haven’t added a payout method yet. Add one to receive payouts.</string>
<string name="PAYOUT_PAGE_HEADING">Payout account</string>
<string name="PAYOUT_SELECT_PAYOUT_METHOD">Choose payout method</string>
<string name="PERMISSION_DIALOG_RECORD_AUDIO_MESSAGE">We need permission to record audio</string>
Expand Down
Loading
Loading