├── .aiexclude
├── .editorconfig
├── .github
├── CODEOWNERS
├── ci-gradle.properties
└── workflows
│ ├── pr.yml
│ ├── staging.yml
│ ├── unused-resources.yml
│ └── upload-to-play-store.yml
├── .gitignore
├── .idea
├── .gitignore
├── codeInsightSettings.xml
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
└── runConfigurations
│ └── Run_all_unit_tests.xml
├── LICENSE
├── README.md
├── app
├── apollo
│ ├── README.md
│ ├── apollo-auth-listeners
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ └── auth
│ │ │ └── listeners
│ │ │ ├── di
│ │ │ └── ApolloAuthListenersModule.kt
│ │ │ └── normalizedcache
│ │ │ └── ApolloNormalizedCacheAuthEventListener.kt
│ ├── apollo-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ ├── ApolloCallExt.kt
│ │ │ └── OperationResult.kt
│ ├── apollo-network-cache-manager
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ ├── NetworkCacheManager.kt
│ │ │ └── di
│ │ │ └── NetworkCacheManagerModule.kt
│ ├── apollo-octopus-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── apollo
│ │ │ │ └── octopus
│ │ │ │ ├── extra.graphqls
│ │ │ │ └── graphql
│ │ │ │ ├── AddonVariantFragment.graphql
│ │ │ │ ├── FragmentClaimFragment.graphql
│ │ │ │ ├── FragmentMoneyFragment.graphql
│ │ │ │ └── FragmentProductVariantFragment.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ └── octopus
│ │ │ └── MarkdownAdapter.kt
│ ├── apollo-octopus-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ └── octopus
│ │ │ └── test
│ │ │ └── OctopusFakeResolver.kt
│ └── apollo-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── apollo
│ │ └── test
│ │ └── TestApolloClientRule.kt
├── app
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ ├── AndroidManifest.xml
│ │ ├── google-services.json
│ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── app
│ │ │ │ ├── AppInitializers.kt
│ │ │ │ ├── HedvigApplication.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ ├── apollo
│ │ │ │ ├── DeviceIdInterceptor.kt
│ │ │ │ └── LoggingInterceptor.kt
│ │ │ │ ├── di
│ │ │ │ ├── AppModule.kt
│ │ │ │ ├── ApplicationModule.kt
│ │ │ │ └── KoinInitializer.kt
│ │ │ │ ├── externalnavigator
│ │ │ │ └── ExternalNavigatorImpl.kt
│ │ │ │ ├── firebase
│ │ │ │ ├── FirebaseBreadcrumbTimberTree.kt
│ │ │ │ └── FirebaseCrashlyticsLogExceptionTree.kt
│ │ │ │ ├── logginginterceptor
│ │ │ │ └── HedvigHttpLoggingInterceptor.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── HedvigNavHost.kt
│ │ │ │ ├── RememberNavigator.kt
│ │ │ │ └── RootGraph.kt
│ │ │ │ ├── notification
│ │ │ │ ├── Util.kt
│ │ │ │ └── senders
│ │ │ │ │ ├── ChatNotificationSender.kt
│ │ │ │ │ ├── ClaimClosedNotificationSender.kt
│ │ │ │ │ ├── ContactInfoSender.kt
│ │ │ │ │ ├── CrossSellNotificationSender.kt
│ │ │ │ │ ├── GenericNotificationSender.kt
│ │ │ │ │ ├── InsuranceEvidenceNotificationSender.kt
│ │ │ │ │ ├── InsuranceTabNotificationSender.kt
│ │ │ │ │ ├── NotificationSendersExt.kt
│ │ │ │ │ ├── PaymentNotificationSender.kt
│ │ │ │ │ ├── ReferralsNotificationSender.kt
│ │ │ │ │ └── TravelAddonSender.kt
│ │ │ │ ├── startup
│ │ │ │ ├── DatadogInitializerImpl.kt
│ │ │ │ └── TimberInitializer.kt
│ │ │ │ ├── ui
│ │ │ │ ├── HedvigApp.kt
│ │ │ │ ├── HedvigAppState.kt
│ │ │ │ ├── HedvigAppUi.kt
│ │ │ │ ├── IsTopLevelGraphInHierarchy.kt
│ │ │ │ └── NavigationSuite.kt
│ │ │ │ └── urihandler
│ │ │ │ ├── DeepLinkFirstUriHandler.kt
│ │ │ │ └── SafeAndroidUriHandler.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── ic_splash.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── values-night
│ │ │ ├── colors.xml
│ │ │ └── themes.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ │ └── xml
│ │ │ └── provider_paths.xml
│ │ ├── release
│ │ ├── google-services.json
│ │ └── res
│ │ │ ├── values
│ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── file_paths.xml
│ │ └── staging
│ │ ├── google-services.json
│ │ └── res
│ │ ├── values
│ │ └── strings.xml
│ │ └── xml
│ │ └── file_paths.xml
├── audio-player-data
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── audio
│ │ │ └── player
│ │ │ └── data
│ │ │ ├── AudioPlayer.kt
│ │ │ ├── AudioPlayerState.kt
│ │ │ ├── ProgressPercentage.kt
│ │ │ └── SIgnedAudioUrl.kt
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── audio
│ │ └── player
│ │ └── data
│ │ └── SignedAudioUrlTest.kt
├── audio-player-ui
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── audio
│ │ └── player
│ │ ├── HedvigAudioPlayer.kt
│ │ ├── audioplayer
│ │ └── AudioPlayerImpl.kt
│ │ └── internal
│ │ ├── FakeAudioWaves.kt
│ │ ├── FakeWaveAudioPlayerCard.kt
│ │ ├── MediaPlayerExt.kt
│ │ └── WaveInteraction.kt
├── auth
│ ├── auth-core-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── auth
│ │ │ │ ├── AccessTokenProvider.kt
│ │ │ │ ├── AndroidAccessTokenProvider.kt
│ │ │ │ ├── AuthStatus.kt
│ │ │ │ ├── AuthTokenService.kt
│ │ │ │ ├── AuthTokenServiceImpl.kt
│ │ │ │ ├── LogoutUseCase.kt
│ │ │ │ ├── MemberIdService.kt
│ │ │ │ ├── di
│ │ │ │ └── AuthModule.kt
│ │ │ │ ├── event
│ │ │ │ ├── AuthEvent.kt
│ │ │ │ ├── AuthEventBroadcaster.kt
│ │ │ │ └── AuthEventStorage.kt
│ │ │ │ ├── interceptor
│ │ │ │ └── AuthTokenRefreshingInterceptor.kt
│ │ │ │ ├── storage
│ │ │ │ └── AuthTokenStorage.kt
│ │ │ │ └── token
│ │ │ │ ├── AuthTokens.kt
│ │ │ │ ├── LocalAccessToken.kt
│ │ │ │ └── LocalRefreshToken.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── auth
│ │ │ ├── interceptor
│ │ │ └── AuthTokenRefreshingInterceptorTest.kt
│ │ │ └── storage
│ │ │ └── AuthTokenStorageTest.kt
│ ├── auth-core-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── auth
│ │ │ └── test
│ │ │ ├── FakeAuthRepository.kt
│ │ │ └── TestAuthTokenService.kt
│ ├── auth-event-core
│ │ ├── README.md
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── auth
│ │ │ └── event
│ │ │ └── AuthEventListener.kt
│ └── auth-event-fake
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── auth
│ │ └── event
│ │ └── AuthEventListener.kt
├── compose
│ ├── compose-pager-indicator
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── compose
│ │ │ └── pager
│ │ │ └── indicator
│ │ │ └── PagerIndicator.kt
│ ├── compose-photo-capture-state
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── compose
│ │ │ └── photo
│ │ │ └── capture
│ │ │ └── state
│ │ │ └── PhotoCaptureState.kt
│ └── compose-ui
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── compose
│ │ └── ui
│ │ ├── EmptyContentDescription.kt
│ │ ├── LayoutWithoutPlacement.kt
│ │ ├── PaddingValuesExt.kt
│ │ ├── SharedElements.kt
│ │ ├── StringWithShiftedLabel.kt
│ │ ├── animateContentHeight.kt
│ │ ├── dropUnlessResumed.kt
│ │ └── preview
│ │ └── ConvenienceCollectionPreviewParameterProvider.kt
├── core
│ ├── core-app-review
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── appreview
│ │ │ ├── SelfServiceCompletedAuthEventListener.kt
│ │ │ ├── SelfServiceCompletedEventManager.kt
│ │ │ ├── SelfServiceCompletedEventStore.kt
│ │ │ ├── WaitUntilAppReviewDialogShouldBeOpenedUseCase.kt
│ │ │ └── di
│ │ │ └── CoreAppReviewModule.kt
│ ├── core-build-constants
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── buildconstants
│ │ │ └── HedvigBuildConstants.kt
│ ├── core-common-android-public
│ │ ├── .gitignore
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── common
│ │ │ └── android
│ │ │ ├── SharePdf.kt
│ │ │ └── validation
│ │ │ ├── ValidateEmail.kt
│ │ │ └── ValidationResult.kt
│ ├── core-common-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── common
│ │ │ ├── ApplicationScope.kt
│ │ │ ├── Await.kt
│ │ │ ├── Cast.kt
│ │ │ ├── ErrorMessage.kt
│ │ │ ├── PersonalInfoStringBuilders.kt
│ │ │ ├── RetryChannel.kt
│ │ │ ├── daysUntil.kt
│ │ │ └── di
│ │ │ ├── CoreCommonModule.kt
│ │ │ └── Qualifier.kt
│ ├── core-common-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── common
│ │ │ └── test
│ │ │ ├── ArrowAssertExt.kt
│ │ │ └── MainCoroutineRule.kt
│ ├── core-datastore-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── datastore
│ │ │ ├── DeviceIdDataStore.kt
│ │ │ └── di
│ │ │ └── DataStoreModule.kt
│ ├── core-datastore-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── datastore
│ │ │ └── TestPreferencesDataStore.kt
│ ├── core-demo-mode
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── demomode
│ │ │ ├── DemoAuthEventListener.kt
│ │ │ ├── DemoManager.kt
│ │ │ ├── ProdOrDemoProvider.kt
│ │ │ ├── Provider.kt
│ │ │ └── di
│ │ │ └── DemoModule.kt
│ ├── core-file-upload
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── fileupload
│ │ │ ├── DownloadPdfUseCase.kt
│ │ │ ├── FileService.kt
│ │ │ ├── FileUploadModule.kt
│ │ │ ├── UploadFileUseCase.kt
│ │ │ └── ui
│ │ │ └── FilePickerBottomSheet.kt
│ ├── core-icons
│ │ ├── README.md
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── icons
│ │ │ ├── HedvigIcons.kt
│ │ │ └── hedvig
│ │ │ ├── compose
│ │ │ ├── NotificationCircle.kt
│ │ │ └── NotificationCircleWithSubtractingPadding.kt
│ │ │ ├── flag
│ │ │ ├── FlagDenmark.kt
│ │ │ ├── FlagNorway.kt
│ │ │ ├── FlagSweden.kt
│ │ │ └── FlagUk.kt
│ │ │ ├── logo
│ │ │ └── HedvigLogotype.kt
│ │ │ ├── nav
│ │ │ ├── Forever.kt
│ │ │ ├── ForeverFilled.kt
│ │ │ ├── Home.kt
│ │ │ ├── HomeFilled.kt
│ │ │ ├── Insurance.kt
│ │ │ ├── InsuranceFilled.kt
│ │ │ ├── Payments.kt
│ │ │ ├── PaymentsFilled.kt
│ │ │ ├── Profile.kt
│ │ │ └── ProfileFilled.kt
│ │ │ ├── normal
│ │ │ ├── AndroidLogo.kt
│ │ │ ├── Apartment.kt
│ │ │ ├── AppleLogo.kt
│ │ │ ├── ArrowBack.kt
│ │ │ ├── ArrowDown.kt
│ │ │ ├── ArrowForward.kt
│ │ │ ├── ArrowUp.kt
│ │ │ ├── Basketball.kt
│ │ │ ├── Calendar.kt
│ │ │ ├── Camera.kt
│ │ │ ├── Certificate.kt
│ │ │ ├── CheckmarkInCircle.kt
│ │ │ ├── CheckmarkInCircleFilled.kt
│ │ │ ├── Chevron right.kt
│ │ │ ├── ChevronDown.kt
│ │ │ ├── ChevronLeft.kt
│ │ │ ├── ChevronUp.kt
│ │ │ ├── ContactInformation.kt
│ │ │ ├── Copy.kt
│ │ │ ├── CreditCard.kt
│ │ │ ├── Deductible.kt
│ │ │ ├── Document.kt
│ │ │ ├── Edit.kt
│ │ │ ├── Eurobonus.kt
│ │ │ ├── Heart.kt
│ │ │ ├── Hedvig.kt
│ │ │ ├── House.kt
│ │ │ ├── Info.kt
│ │ │ ├── InfoFilled.kt
│ │ │ ├── Language.kt
│ │ │ ├── Logout.kt
│ │ │ ├── Mail.kt
│ │ │ ├── MinusInCircle.kt
│ │ │ ├── MoreIos.kt
│ │ │ ├── MultipleDocuments.kt
│ │ │ ├── Other.kt
│ │ │ ├── Pause.kt
│ │ │ ├── Pictures.kt
│ │ │ ├── Play.kt
│ │ │ ├── PlusInCircle.kt
│ │ │ ├── Reciept.kt
│ │ │ ├── RestartOneArrow.kt
│ │ │ ├── RestartTwoArrows.kt
│ │ │ ├── Search.kt
│ │ │ ├── Settings.kt
│ │ │ ├── StopSign.kt
│ │ │ ├── StopSignFilled.kt
│ │ │ ├── Waiting.kt
│ │ │ ├── Warning.kt
│ │ │ ├── WarningFilled.kt
│ │ │ ├── Watch.kt
│ │ │ ├── X.kt
│ │ │ ├── XInCircle.kt
│ │ │ └── XInCircleFilled.kt
│ │ │ └── small
│ │ │ ├── ArrowNorthEast.kt
│ │ │ ├── BankId.kt
│ │ │ ├── Campaign.kt
│ │ │ ├── Checkmark.kt
│ │ │ ├── CircleFilled.kt
│ │ │ ├── CircleWithOutline.kt
│ │ │ ├── Lock.kt
│ │ │ ├── Minus.kt
│ │ │ ├── Plus.kt
│ │ │ ├── Sound.kt
│ │ │ └── SquircleWithCheckmark.kt
│ ├── core-markdown
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── markdown
│ │ │ └── MarkdownString.kt
│ ├── core-resources
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res
│ │ │ ├── drawable-mdpi
│ │ │ └── pillow_hedvig.png
│ │ │ ├── drawable-night-mdpi
│ │ │ └── pillow_hedvig.png
│ │ │ ├── drawable
│ │ │ └── ic_hedvig_h.xml
│ │ │ ├── font
│ │ │ ├── hedvig_letters_small.otf
│ │ │ └── hedvig_letters_standard.otf
│ │ │ ├── values-night
│ │ │ └── colors.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── ids.xml
│ │ │ └── static_strings.xml
│ ├── core-retrofit
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── retrofit
│ │ │ └── CallErrorExt.kt
│ └── core-ui-data
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── core
│ │ └── uidata
│ │ ├── UiCurrencyCode.kt
│ │ ├── UiFile.kt
│ │ ├── UiMoney.kt
│ │ └── UiNullableMoney.kt
├── data
│ ├── data-addons
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── graphql
│ │ │ │ └── TravelAddonBannerQuery.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── data
│ │ │ │ └── addons
│ │ │ │ ├── data
│ │ │ │ ├── DemoGetTravelAddonBannerInfoUseCase.kt
│ │ │ │ ├── GetTravelAddonBannerInfoUseCase.kt
│ │ │ │ └── GetTravelAddonBannerInfoUseCaseProvider.kt
│ │ │ │ └── di
│ │ │ │ └── DataAddonsModule.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── GetTravelAddonBannerInfoUseCaseImplTest.kt
│ ├── data-changetier
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── graphql
│ │ │ │ ├── DeductibleFragment.graphql
│ │ │ │ ├── MutationChangeTierDeductible.graphql
│ │ │ │ └── MutationCommitChangeTierDeductible.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── data
│ │ │ │ └── changetier
│ │ │ │ ├── data
│ │ │ │ ├── ChangeTierQuoteStorage.kt
│ │ │ │ ├── ChangeTierRepository.kt
│ │ │ │ ├── CreateChangeTierDeductibleIntentUseCase.kt
│ │ │ │ ├── IntentModel.kt
│ │ │ │ └── TierConstants.kt
│ │ │ │ └── di
│ │ │ │ └── DataChangeTierModule.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ ├── CommonTestData.kt
│ │ │ └── data
│ │ │ ├── ChangeTierRepositoryImplTest.kt
│ │ │ └── CreateChangeTierDeductibleIntentUseCaseImplTest.kt
│ ├── data-chat
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── data
│ │ │ │ └── chat
│ │ │ │ └── database
│ │ │ │ ├── ChatDao.kt
│ │ │ │ ├── ChatMessageEntity.kt
│ │ │ │ ├── RemoteKeyDao.kt
│ │ │ │ ├── RemoteKeyEntity.kt
│ │ │ │ └── converter
│ │ │ │ ├── InstantConverter.kt
│ │ │ │ └── UuidConverter.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── chat
│ │ │ └── database
│ │ │ └── ChatDaoTest.kt
│ ├── data-claim-flow
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── graphql
│ │ │ ├── FragmentAudioContentFragment.graphql
│ │ │ ├── FragmentCheckoutMethodFragment.graphql
│ │ │ ├── FragmentClaimFlowStepFragment.graphql
│ │ │ ├── MutationFlowClaimAudioRecordingNext.graphql
│ │ │ ├── MutationFlowClaimConfirmEmergency.graphql
│ │ │ ├── MutationFlowClaimContractNext.graphql
│ │ │ ├── MutationFlowClaimDateOfOccurrenceNext.graphql
│ │ │ ├── MutationFlowClaimDateOfOccurrencePlusLocationNext.graphql
│ │ │ ├── MutationFlowClaimFileUploadNext.graphql
│ │ │ ├── MutationFlowClaimLocationNext.graphql
│ │ │ ├── MutationFlowClaimPhoneNumberNext.graphql
│ │ │ ├── MutationFlowClaimSingleItemCheckoutNext.graphql
│ │ │ ├── MutationFlowClaimSingleItemNext.graphql
│ │ │ ├── MutationFlowClaimStart.graphql
│ │ │ ├── MutationFlowClaimSummaryNext.graphql
│ │ │ └── triaging
│ │ │ │ ├── FragmentEntryPointFragment.graphql
│ │ │ │ └── QueryEntrypointGroups.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── claimflow
│ │ │ ├── ClaimFlowContextStorage.kt
│ │ │ ├── ClaimFlowDestination.kt
│ │ │ ├── ClaimFlowRepository.kt
│ │ │ ├── ClaimFlowStep.kt
│ │ │ ├── ClaimFlowStepExt.kt
│ │ │ ├── OdysseyService.kt
│ │ │ ├── di
│ │ │ └── ClaimFlowDataModule.kt
│ │ │ └── model
│ │ │ ├── AudioUrl.kt
│ │ │ └── FlowId.kt
│ ├── data-claim-triaging
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── claimtriaging
│ │ │ ├── ClaimGroup.kt
│ │ │ └── EntryPoint.kt
│ ├── data-contract
│ │ ├── data-contract-android
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── hedvig
│ │ │ │ │ └── android
│ │ │ │ │ └── data
│ │ │ │ │ └── contract
│ │ │ │ │ └── android
│ │ │ │ │ ├── ContractGroupAndroid.kt
│ │ │ │ │ └── CrossSell.kt
│ │ │ │ └── res
│ │ │ │ └── drawable-nodpi
│ │ │ │ ├── gradient_accident.webp
│ │ │ │ ├── gradient_car.webp
│ │ │ │ ├── gradient_cat.webp
│ │ │ │ ├── gradient_dog.webp
│ │ │ │ ├── gradient_homeowner.webp
│ │ │ │ ├── gradient_rental.webp
│ │ │ │ ├── gradient_student.webp
│ │ │ │ ├── gradient_villa.webp
│ │ │ │ ├── ic_pillow_accident.webp
│ │ │ │ ├── ic_pillow_car.webp
│ │ │ │ ├── ic_pillow_cat.webp
│ │ │ │ ├── ic_pillow_dog.webp
│ │ │ │ ├── ic_pillow_home.webp
│ │ │ │ ├── ic_pillow_homeowner.webp
│ │ │ │ ├── ic_pillow_pet.webp
│ │ │ │ ├── ic_pillow_rental.webp
│ │ │ │ ├── ic_pillow_student.webp
│ │ │ │ └── ic_pillow_villa.webp
│ │ └── data-contract-public
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── contract
│ │ │ ├── ContractGroup.kt
│ │ │ ├── ContractType.kt
│ │ │ └── CrossSell.kt
│ ├── data-conversations
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── graphql
│ │ │ └── QueryCbmNumberOfChatMessages.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── conversations
│ │ │ ├── HasAnyActiveConversationUseCase.kt
│ │ │ └── di
│ │ │ └── DataConversationsModule.kt
│ ├── data-cross-sell-after-claim-closed
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── graphql
│ │ │ └── MutationClaimAcknowledgeClosedStatus.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── cross
│ │ │ └── sell
│ │ │ └── after
│ │ │ └── claim
│ │ │ └── closed
│ │ │ ├── CrossSellAfterClaimClosedRepository.kt
│ │ │ └── di
│ │ │ └── CrossSellAfterClaimModule.kt
│ ├── data-cross-sell-after-flow
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── cross
│ │ │ └── sell
│ │ │ └── after
│ │ │ └── flow
│ │ │ ├── CrossSellAfterFlowRepository.kt
│ │ │ └── di
│ │ │ └── DataCrossSellAfterFlowModule.kt
│ ├── data-display-items
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── display
│ │ │ └── items
│ │ │ └── DisplayItem.kt
│ ├── data-paying-member
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── graphql
│ │ │ └── ActiveInsuranceContractTypes.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── paying
│ │ │ └── member
│ │ │ ├── GetChatRepositoryProvider.kt
│ │ │ ├── GetOnlyHasNonPayingContractsUseCase.kt
│ │ │ ├── GetOnlyHasNonPayingContractsUseCaseDemo.kt
│ │ │ ├── GetOnlyHasNonPayingContractsUseCaseImpl.kt
│ │ │ └── di
│ │ │ └── dataPayingMemberModule.kt
│ ├── data-product-variant
│ │ ├── data-product-variant-android
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── data
│ │ │ │ └── productvariant
│ │ │ │ └── android
│ │ │ │ └── ProductVariantAndroid.kt
│ │ └── data-product-variant-public
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── productvariant
│ │ │ ├── AddonVariant.kt
│ │ │ └── ProductVariant.kt
│ ├── data-settings-datastore
│ │ ├── data-settings-datastore-public
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── data
│ │ │ │ └── settings
│ │ │ │ └── datastore
│ │ │ │ ├── SettingsDataStoreImpl.kt
│ │ │ │ └── di
│ │ │ │ └── DataStoreModule.kt
│ │ └── data-settings-datastore-test
│ │ │ ├── build.gradle.kts
│ │ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── data
│ │ │ └── settings
│ │ │ └── datastore
│ │ │ └── FakeSettingsDataStore.kt
│ └── data-termination
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── graphql
│ │ └── QueryContractsToTerminate.graphql
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── data
│ │ └── termination
│ │ ├── data
│ │ └── GetTerminatableContractsUseCase.kt
│ │ └── di
│ │ └── TerminationDataModule.kt
├── database
│ ├── database-android
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── database
│ │ │ └── di
│ │ │ └── DatabaseAndroidModule.kt
│ ├── database-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── database
│ │ │ ├── AppDatabase.kt
│ │ │ └── di
│ │ │ └── DatabaseModule.kt
│ ├── database-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── database
│ │ │ └── test
│ │ │ └── TestAppDatabaseRule.kt
│ └── schemas
│ │ └── com.hedvig.android.database.AppDatabase
│ │ ├── 1.json
│ │ ├── 2.json
│ │ └── 3.json
├── datadog
│ ├── datadog-android
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── datadog
│ │ │ └── core
│ │ │ ├── DatadogInitializer.kt
│ │ │ ├── DatadogLoggingTree.kt
│ │ │ ├── OkHttpDatadogUtil.kt
│ │ │ ├── attributestracking
│ │ │ ├── DatadogAttributesManager.kt
│ │ │ ├── DeviceIdProvider.kt
│ │ │ └── MemberMemberIdTrackingKey.kt
│ │ │ └── di
│ │ │ └── DatadogModule.kt
│ ├── datadog-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── datadog
│ │ │ └── core
│ │ │ └── attributestracking
│ │ │ ├── DatadogAttributeProvider.kt
│ │ │ └── DatadogMemberIdProvider.kt
│ └── datadog-demo-tracking
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── datadog
│ │ └── demo
│ │ └── tracking
│ │ ├── DatadogDemoModeTracking.kt
│ │ └── di
│ │ └── DatadogDemoTrackingModule.kt
├── design-system
│ ├── design-system-api
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── design
│ │ │ └── system
│ │ │ └── hedvig
│ │ │ └── api
│ │ │ ├── HedvigBottomSheetState.kt
│ │ │ └── HedvigDatePickerState.kt
│ ├── design-system-hedvig
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── design
│ │ │ └── system
│ │ │ └── hedvig
│ │ │ ├── Accordion.kt
│ │ │ ├── AddonBanner.kt
│ │ │ ├── Button.kt
│ │ │ ├── CheckBoxGroup.kt
│ │ │ ├── Checkbox.kt
│ │ │ ├── ClickableList.kt
│ │ │ ├── ColorScheme.kt
│ │ │ ├── ContentColor.kt
│ │ │ ├── Dialog.kt
│ │ │ ├── Divider.kt
│ │ │ ├── Dropdown.kt
│ │ │ ├── DynamicFilesGridBetweenOtherThings.kt
│ │ │ ├── EmptyState.kt
│ │ │ ├── ErrorSnackbar.kt
│ │ │ ├── ExpandablePlusCard.kt
│ │ │ ├── FadeAnimatedContent.kt
│ │ │ ├── FileContainer.kt
│ │ │ ├── FullScreenProgress.kt
│ │ │ ├── HedvigBigCard.kt
│ │ │ ├── HedvigBottomSheet.kt
│ │ │ ├── HedvigCard.kt
│ │ │ ├── HedvigErrorSection.kt
│ │ │ ├── HedvigInformationSection.kt
│ │ │ ├── HedvigPreview.kt
│ │ │ ├── HedvigScaffold.kt
│ │ │ ├── HedvigText.kt
│ │ │ ├── HedvigTextField.kt
│ │ │ ├── HedvigTheme.kt
│ │ │ ├── HighlightLabel.kt
│ │ │ ├── HorizontalItems.kt
│ │ │ ├── Icon.kt
│ │ │ ├── IconButton.kt
│ │ │ ├── IconResource.kt
│ │ │ ├── InteractiveComponentSize.kt
│ │ │ ├── LogCompositions.kt
│ │ │ ├── Modifier.kt
│ │ │ ├── NavigationBar.kt
│ │ │ ├── Notification.kt
│ │ │ ├── Peril.kt
│ │ │ ├── PermissionDialog.kt
│ │ │ ├── ProgressBar.kt
│ │ │ ├── ProvideContentColorTextStyle.kt
│ │ │ ├── RadioGroup.kt
│ │ │ ├── RadioOption.kt
│ │ │ ├── RichText.kt
│ │ │ ├── Ripple.kt
│ │ │ ├── ShapedColorPainter.kt
│ │ │ ├── Shapes.kt
│ │ │ ├── Stepper.kt
│ │ │ ├── Surface.kt
│ │ │ ├── Tab.kt
│ │ │ ├── ThreeDotsLoading.kt
│ │ │ ├── Toggle.kt
│ │ │ ├── Tooltip.kt
│ │ │ ├── TopAppBar.kt
│ │ │ ├── Typography.kt
│ │ │ ├── WindowSize.kt
│ │ │ ├── a11y
│ │ │ ├── FlowHeading.kt
│ │ │ ├── Modifier.kt
│ │ │ └── UiMoney.kt
│ │ │ ├── datepicker
│ │ │ ├── DatePicker.kt
│ │ │ └── HedvigDateTimeFormatter.kt
│ │ │ ├── freetext
│ │ │ ├── FreeTextOverlay.kt
│ │ │ └── FreeTextTriggerDisplay.kt
│ │ │ ├── icon
│ │ │ ├── ArrowDown.kt
│ │ │ ├── ArrowLeft.kt
│ │ │ ├── ArrowNorthEast.kt
│ │ │ ├── ArrowRight.kt
│ │ │ ├── ArrowUp.kt
│ │ │ ├── Attach.kt
│ │ │ ├── AttentionFilled.kt
│ │ │ ├── AttentionOutline.kt
│ │ │ ├── BankId.kt
│ │ │ ├── Camera.kt
│ │ │ ├── Campaign.kt
│ │ │ ├── Card.kt
│ │ │ ├── Cart.kt
│ │ │ ├── CartAdded.kt
│ │ │ ├── Certified.kt
│ │ │ ├── Chat.kt
│ │ │ ├── CheckFilled.kt
│ │ │ ├── CheckOutline.kt
│ │ │ ├── Checkmark.kt
│ │ │ ├── ChevronDown.kt
│ │ │ ├── ChevronDownSmall.kt
│ │ │ ├── ChevronLeft.kt
│ │ │ ├── ChevronLeftSmall.kt
│ │ │ ├── ChevronRight.kt
│ │ │ ├── ChevronRightSmall.kt
│ │ │ ├── ChevronUp.kt
│ │ │ ├── ChevronUpSmall.kt
│ │ │ ├── CircleFilled.kt
│ │ │ ├── CircleOutline.kt
│ │ │ ├── Clock.kt
│ │ │ ├── Close.kt
│ │ │ ├── CollapseContent.kt
│ │ │ ├── Copy.kt
│ │ │ ├── Document.kt
│ │ │ ├── Dots.kt
│ │ │ ├── Download.kt
│ │ │ ├── EQ.kt
│ │ │ ├── Eurobonus.kt
│ │ │ ├── ExpandContent.kt
│ │ │ ├── ForeverFilled.kt
│ │ │ ├── ForeverOutline.kt
│ │ │ ├── HedvigIcons.kt
│ │ │ ├── HedvigLogotype.kt
│ │ │ ├── HelipadFilled.kt
│ │ │ ├── HelipadOutline.kt
│ │ │ ├── ID.kt
│ │ │ ├── Image.kt
│ │ │ ├── InfoFilled.kt
│ │ │ ├── InfoOutline.kt
│ │ │ ├── Link.kt
│ │ │ ├── Lock.kt
│ │ │ ├── Mic.kt
│ │ │ ├── Minus.kt
│ │ │ ├── MultipleDocuments.kt
│ │ │ ├── Notification.kt
│ │ │ ├── Pause.kt
│ │ │ ├── PaymentFilled.kt
│ │ │ ├── PaymentOutline.kt
│ │ │ ├── Play.kt
│ │ │ ├── Plus.kt
│ │ │ ├── ProfileFilled.kt
│ │ │ ├── ProfileOutline.kt
│ │ │ ├── Refresh.kt
│ │ │ ├── Reload.kt
│ │ │ ├── Search.kt
│ │ │ ├── Settings.kt
│ │ │ ├── ShieldFilled.kt
│ │ │ ├── ShieldOutline.kt
│ │ │ ├── Star.kt
│ │ │ ├── Swap.kt
│ │ │ ├── Travel.kt
│ │ │ ├── WarningFilled.kt
│ │ │ ├── WarningOutline.kt
│ │ │ ├── colored
│ │ │ │ ├── ColoredCampaign.kt
│ │ │ │ ├── ColoredCampaignWithDot.kt
│ │ │ │ ├── ColoredChat.kt
│ │ │ │ ├── ColoredChatWithDot.kt
│ │ │ │ ├── ColoredFirstVet.kt
│ │ │ │ └── ColoredFirstVetWithDot.kt
│ │ │ └── flag
│ │ │ │ ├── FlagSweden.kt
│ │ │ │ └── FlagUk.kt
│ │ │ ├── internal
│ │ │ ├── Decoration.kt
│ │ │ ├── DraggableState.kt
│ │ │ ├── HedvigTextFieldImpl.kt
│ │ │ └── MappedInteractionSource.kt
│ │ │ ├── motion
│ │ │ ├── FadeThroughDefaults.kt
│ │ │ ├── MotionDefaults.kt
│ │ │ └── SharedAxisDefaults.kt
│ │ │ ├── pdfrenderer
│ │ │ └── PdfDecoder.kt
│ │ │ ├── placeholder
│ │ │ ├── Placeholder.kt
│ │ │ └── PlaceholderHighlight.kt
│ │ │ ├── tokens
│ │ │ ├── AccordionTokens.kt
│ │ │ ├── AnimationTokens.kt
│ │ │ ├── BottomSheetTokens.kt
│ │ │ ├── ButtonTokens.kt
│ │ │ ├── CheckboxTokens.kt
│ │ │ ├── ClickableListTokens.kt
│ │ │ ├── ColorDarkTokens.kt
│ │ │ ├── ColorLightTokens.kt
│ │ │ ├── ColorSchemeKeyTokens.kt
│ │ │ ├── DialogTokens.kt
│ │ │ ├── DropdownTokens.kt
│ │ │ ├── EmptyStateTokens.kt
│ │ │ ├── FreeTextTokens.kt
│ │ │ ├── HighlightLabelTokens.kt
│ │ │ ├── IconButtonTokens.kt
│ │ │ ├── MotionTokens.kt
│ │ │ ├── NavigationTokens.kt
│ │ │ ├── NotificationsTokens.kt
│ │ │ ├── PaletteTokens.kt
│ │ │ ├── PerilCommonTokens.kt
│ │ │ ├── ProgressIndicatorTokens.kt
│ │ │ ├── RadioOptionTokens.kt
│ │ │ ├── ScaffoldTokens.kt
│ │ │ ├── ScrimTokens.kt
│ │ │ ├── ShapeKeyTokens.kt
│ │ │ ├── StateTokens.kt
│ │ │ ├── StepperTokens.kt
│ │ │ ├── TabTokens.kt
│ │ │ ├── TextFieldTokens.kt
│ │ │ ├── ToggleTokens.kt
│ │ │ ├── TooltipTokens.kt
│ │ │ ├── TopAppBarTokens.kt
│ │ │ ├── TweenAnimationTokens.kt
│ │ │ ├── TypeScaleTokens.kt
│ │ │ ├── TypefaceTokens.kt
│ │ │ ├── TypographyKeyTokens.kt
│ │ │ └── TypographyTokens.kt
│ │ │ └── videoplayer
│ │ │ ├── ControllerState.kt
│ │ │ ├── Media.kt
│ │ │ ├── MediaState.kt
│ │ │ ├── PlayerState.kt
│ │ │ ├── ResizeMode.kt
│ │ │ ├── SimpleVideoController.kt
│ │ │ └── TimeBar.kt
│ └── design-system-internals
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── design
│ │ └── system
│ │ └── internals
│ │ ├── DatePicker.kt
│ │ ├── HedvigBottomSheet.kt
│ │ └── SnackBar.kt
├── feature
│ ├── feature-addon-purchase
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── InsurancesForTravelAddonQuery.graphql
│ │ │ │ ├── UpsellAddonOfferMutation.graphql
│ │ │ │ └── UpsellTravelAddonActivateMutation.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── addon
│ │ │ │ └── purchase
│ │ │ │ ├── data
│ │ │ │ ├── Addon.kt
│ │ │ │ ├── GetInsuranceForTravelAddonUseCase.kt
│ │ │ │ ├── GetTravelAddonOfferUseCase.kt
│ │ │ │ └── SubmitAddonPurchaseUseCase.kt
│ │ │ │ ├── di
│ │ │ │ └── AddonPurchaseModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── AddonPurchaseDestination.kt
│ │ │ │ └── AddonPurchaseNavGraph.kt
│ │ │ │ └── ui
│ │ │ │ ├── customize
│ │ │ │ ├── CustomizeTravelAddonDestination.kt
│ │ │ │ └── CustomizeTravelAddonViewModel.kt
│ │ │ │ ├── selectinsurance
│ │ │ │ ├── SelectInsuranceForAddonDestination.kt
│ │ │ │ └── SelectInsuranceForAddonViewModel.kt
│ │ │ │ ├── success
│ │ │ │ ├── AddonFailureScreen.kt
│ │ │ │ └── AddonSuccessScreen.kt
│ │ │ │ ├── summary
│ │ │ │ ├── AddonSummaryDestination.kt
│ │ │ │ └── AddonSummaryViewModel.kt
│ │ │ │ ├── travelinsuranceplusexplanation
│ │ │ │ └── TravelInsurancePlusExplanationDestination.kt
│ │ │ │ └── triage
│ │ │ │ ├── TravelAddonTriageDestination.kt
│ │ │ │ └── TravelAddonTriageViewModel.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ ├── data
│ │ │ ├── GetInsuranceForTravelAddonUseCaseImplTest.kt
│ │ │ ├── GetTravelAddonOfferUseCaseImplTest.kt
│ │ │ └── SubmitAddonPurchaseUseCaseImplTest.kt
│ │ │ └── ui
│ │ │ ├── AddonSummaryPresenterTest.kt
│ │ │ ├── CustomizeTravelAddonPresenterTest.kt
│ │ │ └── SelectInsuranceForAddonPresenterTest.kt
│ ├── feature-chat
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ ├── FragmentConversationInfo.graphql
│ │ │ ├── MutationConversationSendMessage.graphql
│ │ │ ├── MutationConversationStart.graphql
│ │ │ ├── QueryChatConversations.graphql
│ │ │ ├── QueryConversation.graphql
│ │ │ ├── QueryConversationInfo.graphql
│ │ │ └── QueryConversationStatusMessage.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── chat
│ │ │ ├── CbmChatViewModel.kt
│ │ │ ├── ChatDestination.kt
│ │ │ ├── ChatLoadedScreen.kt
│ │ │ ├── data
│ │ │ ├── BotServiceService.kt
│ │ │ ├── CbmChatRepository.kt
│ │ │ ├── CbmChatRepositoryDemo.kt
│ │ │ ├── GetAllConversationsUseCase.kt
│ │ │ └── GetCbmChatRepositoryProvider.kt
│ │ │ ├── di
│ │ │ └── ChatModule.kt
│ │ │ ├── inbox
│ │ │ ├── InboxDestination.kt
│ │ │ └── InboxViewModel.kt
│ │ │ ├── model
│ │ │ ├── CbmChatMessage.kt
│ │ │ ├── InboxConversation.kt
│ │ │ └── Sender.kt
│ │ │ ├── navigation
│ │ │ ├── CbmChatGraph.kt
│ │ │ └── ChatDestination.kt
│ │ │ ├── paging
│ │ │ └── ChatRemoteMediator.kt
│ │ │ └── ui
│ │ │ ├── AdjustSizeToImageRatio.kt
│ │ │ ├── ChatBanner.kt
│ │ │ ├── ChatInput.kt
│ │ │ ├── ChatMessageExt.kt
│ │ │ ├── PersistentContracts.kt
│ │ │ └── TextWithClickableUrls.kt
│ ├── feature-choose-tier
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── AgreementFragment.graphql
│ │ │ │ ├── CurrentContractQuery.graphql
│ │ │ │ └── GetContractsEligibleForTierChangeQuery.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── change
│ │ │ │ └── tier
│ │ │ │ ├── data
│ │ │ │ ├── GetCurrentContractDataUseCase.kt
│ │ │ │ └── GetCustomizableInsurancesUseCase.kt
│ │ │ │ ├── di
│ │ │ │ └── ChooseTierModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── ChooseTierGraph.kt
│ │ │ │ └── ChooseTierNavDestination.kt
│ │ │ │ └── ui
│ │ │ │ ├── chooseinsurance
│ │ │ │ ├── ChooseInsuranceToChangeTierDestination.kt
│ │ │ │ └── ChooseInsuranceViewModel.kt
│ │ │ │ ├── stepcustomize
│ │ │ │ ├── SelectCoverageViewModel.kt
│ │ │ │ └── SelectTierDestination.kt
│ │ │ │ ├── stepstart
│ │ │ │ ├── StartTierFlowDestination.kt
│ │ │ │ └── StartTierFlowViewModel.kt
│ │ │ │ └── stepsummary
│ │ │ │ ├── SubmitTierFailureScreen.kt
│ │ │ │ ├── SubmitTierSuccessScreen.kt
│ │ │ │ ├── SummaryDestination.kt
│ │ │ │ └── SummaryViewModel.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ ├── CommonTestdata.kt
│ │ │ ├── data
│ │ │ └── GetCustomizableInsurancesUseCase.kt
│ │ │ └── ui
│ │ │ ├── chooseinsurance
│ │ │ └── ChooseInsurancePresenterTest.kt
│ │ │ ├── stepcustomize
│ │ │ └── SelectCoveragePresenterTest.kt
│ │ │ └── stepstart
│ │ │ └── StartTierChangePresenterTest.kt
│ ├── feature-claim-details
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ └── QueryClaims.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── claim
│ │ │ └── details
│ │ │ ├── data
│ │ │ └── GetClaimDetailUiStateUseCase.kt
│ │ │ ├── di
│ │ │ └── FeatureClaimDetailsModule.kt
│ │ │ ├── navigation
│ │ │ ├── ClaimDetailDestinationGraph.kt
│ │ │ └── ClaimDetailDestinations.kt
│ │ │ └── ui
│ │ │ ├── AddFilesDestination.kt
│ │ │ ├── AddFilesViewModel.kt
│ │ │ ├── ClaimDetailsDestination.kt
│ │ │ ├── ClaimDetailsViewModel.kt
│ │ │ └── SubmittedAndClosedColumns.kt
│ ├── feature-claim-triaging
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── claimtriaging
│ │ │ ├── ClaimTriagingGraph.kt
│ │ │ ├── GetEntryPointGroupsUseCase.kt
│ │ │ ├── OptionChipsFlowRow.kt
│ │ │ ├── claimentrypointoptions
│ │ │ ├── ClaimEntryPointOptionsDestination.kt
│ │ │ └── ClaimEntryPointOptionsViewModel.kt
│ │ │ ├── claimentrypoints
│ │ │ ├── ClaimEntryPointsDestination.kt
│ │ │ └── ClaimEntryPointsViewModel.kt
│ │ │ ├── claimgroups
│ │ │ ├── ClaimGroupsDestination.kt
│ │ │ └── ClaimGroupsViewModel.kt
│ │ │ └── di
│ │ │ └── ClaimTriagingModule.kt
│ ├── feature-connect-payment-trustly
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ └── InitiateTrustlyConnectPaymentSession.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── connect
│ │ │ └── payment
│ │ │ └── trustly
│ │ │ ├── StartTrustlySessionUseCase.kt
│ │ │ ├── TrustlyPresenter.kt
│ │ │ ├── TrustlyViewModel.kt
│ │ │ ├── data
│ │ │ └── TrustlyCallback.kt
│ │ │ ├── di
│ │ │ └── ConnectPaymentTrustlyModule.kt
│ │ │ ├── navigation
│ │ │ └── ConnectTrustlyPaymentGraph.kt
│ │ │ ├── ui
│ │ │ └── TrustlyDestination.kt
│ │ │ └── webview
│ │ │ ├── TrustlyJavascriptInterface.kt
│ │ │ └── TrustlyWebChromeClient.kt
│ ├── feature-cross-sell-sheet
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ └── QueryBottomSheetCrossSells.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── cross
│ │ │ └── sell
│ │ │ └── sheet
│ │ │ ├── CrossSellSheet.kt
│ │ │ ├── CrossSellSheetViewModel.kt
│ │ │ └── di
│ │ │ └── FeatureCrossSellSheetModule.kt
│ ├── feature-delete-account
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ ├── MutationMemberDeletionRequest.graphql
│ │ │ └── QueryDeleteAccountState.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── deleteaccount
│ │ │ ├── DeleteAccountDestination.kt
│ │ │ ├── DeleteAccountPresenter.kt
│ │ │ ├── DeleteAccountViewModel.kt
│ │ │ ├── data
│ │ │ ├── DeleteAccountRequestStorage.kt
│ │ │ ├── DeleteAccountStateUseCase.kt
│ │ │ └── RequestAccountDeletionUseCase.kt
│ │ │ ├── di
│ │ │ └── DeleteAccountModule.kt
│ │ │ └── navigation
│ │ │ ├── DeleteAccountDestination.kt
│ │ │ └── DeleteAccountGraph.kt
│ ├── feature-edit-coinsured
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── MutationCommitMidtermChange.graphql
│ │ │ │ ├── MutationCreateMidtermChange.graphql
│ │ │ │ ├── QueryCoInsured.graphql
│ │ │ │ ├── QueryEligibleContractsForEditCoInsured.graphql
│ │ │ │ └── QueryPersonalInformation.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── editcoinsured
│ │ │ │ ├── data
│ │ │ │ ├── CoInsured.kt
│ │ │ │ ├── CommitMidtermChangeUseCase.kt
│ │ │ │ ├── CreateMidtermChangeUseCase.kt
│ │ │ │ ├── FetchCoInsuredPersonalInformationUseCase.kt
│ │ │ │ ├── GetCoInsuredUseCase.kt
│ │ │ │ ├── GetInsurancesForEditCoInsuredUseCase.kt
│ │ │ │ └── Member.kt
│ │ │ │ ├── di
│ │ │ │ └── EditCoInsuredModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── EditCoInsuredDestinations.kt
│ │ │ │ └── EditCoInsuredGraph.kt
│ │ │ │ └── ui
│ │ │ │ ├── AddCoInsuredBottomSheetContent.kt
│ │ │ │ ├── CoInsuredList.kt
│ │ │ │ ├── EditCoInsuredAddMissingInfoDestination.kt
│ │ │ │ ├── EditCoInsuredAddOrRemoveDestination.kt
│ │ │ │ ├── EditCoInsuredPresenter.kt
│ │ │ │ ├── EditCoInsuredViewModel.kt
│ │ │ │ ├── EditCoinsuredSuccessDestination.kt
│ │ │ │ ├── InsuredRow.kt
│ │ │ │ ├── RemoveCoInsuredBottomSheetContent.kt
│ │ │ │ └── triage
│ │ │ │ ├── EditCoInsuredTriageDestination.kt
│ │ │ │ └── EditCoInsuredTriageViewModel.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── editcoinsured
│ │ │ └── ui
│ │ │ ├── EditCoInsuredPresenterTest.kt
│ │ │ └── data
│ │ │ ├── TestCoInsuredUseCase.kt
│ │ │ ├── TestCommitMidtermChangeUseCase.kt
│ │ │ ├── TestCreateMidTermChangeUseCase.kt
│ │ │ ├── TestData.kt
│ │ │ └── TestFetchCoInsuredPersonalInformationUseCase.kt
│ ├── feature-force-upgrade
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── force
│ │ │ └── upgrade
│ │ │ └── ForceUpgradeBlockingScreen.kt
│ ├── feature-forever
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── forever
│ │ │ └── navigation
│ │ │ ├── ForeverDestination.kt
│ │ │ └── ForeverGraph.kt
│ ├── feature-help-center
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── QueryAvailableSelfServiceOnContracts.graphql
│ │ │ │ ├── QueryHelpCenterFAQ.graphql
│ │ │ │ └── QueryMemberActions.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── help
│ │ │ │ └── center
│ │ │ │ ├── HelpCenterGraph.kt
│ │ │ │ ├── HelpCenterPresenter.kt
│ │ │ │ ├── HelpCenterViewModel.kt
│ │ │ │ ├── ShowNavigateToInboxViewModel.kt
│ │ │ │ ├── commonclaim
│ │ │ │ ├── FirstVetDestination.kt
│ │ │ │ └── emergency
│ │ │ │ │ └── EmergencyDestination.kt
│ │ │ │ ├── data
│ │ │ │ ├── GetHelpCenterFAQUseCase.kt
│ │ │ │ ├── GetHelpCenterQuestionUseCase.kt
│ │ │ │ ├── GetHelpCenterTopicUseCase.kt
│ │ │ │ ├── GetInsuranceForEditCoInsuredUseCase.kt
│ │ │ │ ├── GetMemberActionsUseCase.kt
│ │ │ │ └── GetQuickLinksUseCase.kt
│ │ │ │ ├── di
│ │ │ │ └── HelpCenterModule.kt
│ │ │ │ ├── home
│ │ │ │ └── HelpCenterHomeDestination.kt
│ │ │ │ ├── model
│ │ │ │ ├── Question.kt
│ │ │ │ ├── QuickLink.kt
│ │ │ │ └── Topic.kt
│ │ │ │ ├── navigation
│ │ │ │ └── HelpCenterDestination.kt
│ │ │ │ ├── question
│ │ │ │ ├── HelpCenterQuestionDestination.kt
│ │ │ │ └── HelpCenterQuestionViewModel.kt
│ │ │ │ ├── topic
│ │ │ │ ├── HelpCenterTopicDestination.kt
│ │ │ │ └── HelpCenterTopicViewModel.kt
│ │ │ │ └── ui
│ │ │ │ ├── HelpCenterSection.kt
│ │ │ │ ├── HelpCenterSectionWithClickableRows.kt
│ │ │ │ └── StillNeedHelpSection.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ ├── GetMemberActionsUseCaseImpl.kt
│ │ │ └── GetQuickLinksUseCaseTest.kt
│ ├── feature-home
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── QueryHome.graphql
│ │ │ │ └── QueryUnreadMessageCount.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── home
│ │ │ │ ├── di
│ │ │ │ ├── GetHomeDataUseCaseProvider.kt
│ │ │ │ └── HomeModule.kt
│ │ │ │ └── home
│ │ │ │ ├── data
│ │ │ │ ├── GetHomeDataUseCase.kt
│ │ │ │ ├── GetHomeDataUseCaseDemo.kt
│ │ │ │ └── SeenImportantMessagesStorage.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── HomeDestinations.kt
│ │ │ │ └── HomeGraph.kt
│ │ │ │ └── ui
│ │ │ │ ├── FirstVetDestination.kt
│ │ │ │ ├── HomeDestination.kt
│ │ │ │ ├── HomeLayout.kt
│ │ │ │ ├── HomePresenter.kt
│ │ │ │ ├── HomeViewModel.kt
│ │ │ │ └── ToolbarIcons.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── home
│ │ │ └── home
│ │ │ ├── data
│ │ │ └── GetHomeUseCaseTest.kt
│ │ │ └── ui
│ │ │ └── HomePresenterTest.kt
│ ├── feature-image-viewer
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── imageviewer
│ │ │ ├── ImageViewerDestination.kt
│ │ │ └── navigation
│ │ │ ├── ImageViewer.kt
│ │ │ └── ImageViewerGraph.kt
│ ├── feature-impersonation
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── impersonation
│ │ │ └── ImpersonationReceiverActivity.kt
│ ├── feature-insurance-certificate
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── InsuranceEvidenceCreate.graphql
│ │ │ │ └── InsuranceEvidenceInitialData.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── insurance
│ │ │ │ └── certificate
│ │ │ │ ├── data
│ │ │ │ ├── GenerateInsuranceEvidenceUseCase.kt
│ │ │ │ └── GetInsuranceEvidenceInitialEmailUseCase.kt
│ │ │ │ ├── di
│ │ │ │ └── InsuranceEvidenceModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── InsuranceEvidenceDestination.kt
│ │ │ │ └── InsuranceEvidenceGraph.kt
│ │ │ │ └── ui
│ │ │ │ ├── email
│ │ │ │ ├── InsuranceEvidenceEmailInputDestination.kt
│ │ │ │ └── InsuranceEvidenceEmailInputViewModel.kt
│ │ │ │ └── overview
│ │ │ │ ├── InsuranceEvidenceOverviewDestination.kt
│ │ │ │ └── InsuranceEvidenceOverviewViewModel.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ ├── InsuranceEvidenceEmailInputPresenterTest.kt
│ │ │ ├── InsuranceEvidenceOverviewPresenterTest.kt
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── insurance
│ │ │ └── certificate
│ │ │ └── data
│ │ │ ├── GenerateInsuranceEvidenceUseCaseTest.kt
│ │ │ └── GetInsuranceEvidenceInitialEmailUseCaseTest.kt
│ ├── feature-insurances
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── QueryCrossSells.graphql
│ │ │ │ └── QueryInsuranceContracts.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── insurances
│ │ │ │ ├── data
│ │ │ │ ├── CancelInsuranceData.kt
│ │ │ │ ├── GetCrossSellsUseCase.kt
│ │ │ │ ├── GetCrossSellsUseCaseDemo.kt
│ │ │ │ ├── GetCrossSellsUseCaseImpl.kt
│ │ │ │ ├── GetInsuranceContractsUseCase.kt
│ │ │ │ ├── GetInsuranceContractsUseCaseDemo.kt
│ │ │ │ └── InsuranceContract.kt
│ │ │ │ ├── di
│ │ │ │ ├── GetCrossSellsUseCaseProvider.kt
│ │ │ │ ├── GetInsuranceContractsUseCaseProvider.kt
│ │ │ │ └── InsurancesModule.kt
│ │ │ │ ├── insurance
│ │ │ │ ├── InsuranceDestination.kt
│ │ │ │ └── presentation
│ │ │ │ │ ├── InsurancePresenter.kt
│ │ │ │ │ └── InsuranceViewModel.kt
│ │ │ │ ├── insurancedetail
│ │ │ │ ├── ContractDetailDestination.kt
│ │ │ │ ├── ContractDetailViewModel.kt
│ │ │ │ ├── GetContractForContractIdUseCase.kt
│ │ │ │ ├── coverage
│ │ │ │ │ └── CoverageTab.kt
│ │ │ │ ├── documents
│ │ │ │ │ └── DocumentsTab.kt
│ │ │ │ └── yourinfo
│ │ │ │ │ ├── EditInsuranceBottomSheetContent.kt
│ │ │ │ │ ├── UpcomingChangesBottomSheetContent.kt
│ │ │ │ │ └── YourInfoTab.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── InsuranceGraph.kt
│ │ │ │ └── InsurancesNavigation.kt
│ │ │ │ ├── terminatedcontracts
│ │ │ │ ├── TerminatedContractsDestination.kt
│ │ │ │ └── TerminatedContractsViewModel.kt
│ │ │ │ └── ui
│ │ │ │ └── InsuranceContractExt.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── insurances
│ │ │ ├── data
│ │ │ └── GetInsuranceContractsUseCaseImplTest.kt
│ │ │ ├── insurance
│ │ │ └── presentation
│ │ │ │ └── InsurancePresenterTest.kt
│ │ │ ├── insurancedetail
│ │ │ └── ContractDetailPresenterTest.kt
│ │ │ └── terminatedcontracts
│ │ │ └── TerminatedContractsPresenterTest.kt
│ ├── feature-login
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── hedvig
│ │ │ │ │ └── android
│ │ │ │ │ └── feature
│ │ │ │ │ └── login
│ │ │ │ │ ├── di
│ │ │ │ │ └── LoginModule.kt
│ │ │ │ │ ├── genericauth
│ │ │ │ │ ├── EmailAddressWithTrimmedWhitespaces.kt
│ │ │ │ │ ├── EmailInputScreen.kt
│ │ │ │ │ ├── GenericAuthDestination.kt
│ │ │ │ │ └── GenericAuthViewModel.kt
│ │ │ │ │ ├── marketing
│ │ │ │ │ ├── MarketingDestination.kt
│ │ │ │ │ ├── MarketingPresenter.kt
│ │ │ │ │ ├── MarketingViewModel.kt
│ │ │ │ │ └── ui
│ │ │ │ │ │ └── LoginBackgroundImage.kt
│ │ │ │ │ ├── navigation
│ │ │ │ │ ├── LoginDestination.kt
│ │ │ │ │ └── LoginGraph.kt
│ │ │ │ │ ├── otpinput
│ │ │ │ │ ├── OtpInputDestination.kt
│ │ │ │ │ └── OtpInputViewModel.kt
│ │ │ │ │ └── swedishlogin
│ │ │ │ │ ├── BankIdState.kt
│ │ │ │ │ ├── SwedishLoginDestination.kt
│ │ │ │ │ ├── SwedishLoginPresenter.kt
│ │ │ │ │ └── SwedishLoginViewModel.kt
│ │ │ └── res
│ │ │ │ └── drawable-nodpi
│ │ │ │ └── login_still_9x16.webp
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── login
│ │ │ ├── genericauth
│ │ │ ├── GenericAuthViewModelTest.kt
│ │ │ └── OtpInformationViewModelTest.kt
│ │ │ └── swedishlogin
│ │ │ └── SwedishLoginPresenterTest.kt
│ ├── feature-movingflow
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ ├── FragmentMoveIntent.graphql
│ │ │ ├── MutationMoveIntentCommit.graphql
│ │ │ ├── MutationMoveIntentCreate.graphql
│ │ │ └── MutationMoveIntentRequest.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── movingflow
│ │ │ ├── MovingFlowGraph.kt
│ │ │ ├── compose
│ │ │ ├── BooleanInput.kt
│ │ │ ├── ConstrainedNumberInput.kt
│ │ │ ├── ListInput.kt
│ │ │ └── ValidatedInput.kt
│ │ │ ├── data
│ │ │ ├── ClosedRangeSerializer.kt
│ │ │ ├── HousingType.kt
│ │ │ ├── MovingFlowQuotes.kt
│ │ │ └── MovingFlowState.kt
│ │ │ ├── di
│ │ │ └── movingFlowModule.kt
│ │ │ ├── storage
│ │ │ ├── MovingFlowRepository.kt
│ │ │ └── MovingFlowStorage.kt
│ │ │ └── ui
│ │ │ ├── MovingFlowTopAppBar.kt
│ │ │ ├── addhouseinformation
│ │ │ ├── AddHouseInformationDestination.kt
│ │ │ └── AddHouseInformationViewModel.kt
│ │ │ ├── chosecoveragelevelanddeductible
│ │ │ ├── ChoseCoverageLevelAndDeductibleDestination.kt
│ │ │ └── ChoseCoverageLevelAndDeductibleViewModel.kt
│ │ │ ├── enternewaddress
│ │ │ ├── EnterNewAddressDestination.kt
│ │ │ └── EnterNewAddressViewModel.kt
│ │ │ ├── selectcontract
│ │ │ ├── SelectContractDestination.kt
│ │ │ └── SelectContractViewModel.kt
│ │ │ ├── start
│ │ │ ├── HousingTypeDestination.kt
│ │ │ └── HousingTypeViewModel.kt
│ │ │ ├── successfulmove
│ │ │ └── SuccessfulMoveDestination.kt
│ │ │ └── summary
│ │ │ ├── SummaryDestination.kt
│ │ │ └── SummaryViewModel.kt
│ ├── feature-odyssey
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ └── AllContractsQuery.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── odyssey
│ │ │ │ ├── di
│ │ │ │ └── OdysseyModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── ClaimFlowGraph.kt
│ │ │ │ └── ClaimsFlowDestination.kt
│ │ │ │ ├── step
│ │ │ │ ├── audiorecording
│ │ │ │ │ ├── AudioRecordingDestination.kt
│ │ │ │ │ ├── AudioRecordingViewModel.kt
│ │ │ │ │ └── ui
│ │ │ │ │ │ ├── AudioRecorder.kt
│ │ │ │ │ │ ├── RecordingAmplitudeIndicator.kt
│ │ │ │ │ │ └── ScreenOnFlag.kt
│ │ │ │ ├── dateofoccurrence
│ │ │ │ │ ├── DateOfOccurrenceDestination.kt
│ │ │ │ │ └── DateOfOccurrenceViewModel.kt
│ │ │ │ ├── dateofoccurrencepluslocation
│ │ │ │ │ ├── DateOfOccurrencePlusLocationDestination.kt
│ │ │ │ │ └── DateOfOccurrencePlusLocationViewModel.kt
│ │ │ │ ├── fileupload
│ │ │ │ │ ├── AddFilesScreen.kt
│ │ │ │ │ ├── FileUploadDestination.kt
│ │ │ │ │ ├── FileUploadScreen.kt
│ │ │ │ │ └── FileUploadViewModel.kt
│ │ │ │ ├── honestypledge
│ │ │ │ │ ├── HonestyPledgeDestination.kt
│ │ │ │ │ └── PledgeAcceptingSlider.kt
│ │ │ │ ├── informdeflect
│ │ │ │ │ ├── ConfirmEmergencyDestination.kt
│ │ │ │ │ ├── ConfirmEmergencyViewModel.kt
│ │ │ │ │ ├── DeflectCarOtherDamageDestination.kt
│ │ │ │ │ ├── DeflectEmergencyDestination.kt
│ │ │ │ │ ├── DeflectGlassDamageDestination.kt
│ │ │ │ │ ├── DeflectPestsDestination.kt
│ │ │ │ │ ├── DeflectTowingDestination.kt
│ │ │ │ │ ├── IdProtectionDestination.kt
│ │ │ │ │ └── PartnerImage.kt
│ │ │ │ ├── location
│ │ │ │ │ ├── LocationDestination.kt
│ │ │ │ │ └── LocationViewModel.kt
│ │ │ │ ├── notificationpermission
│ │ │ │ │ └── NotificationPermissionDestination.kt
│ │ │ │ ├── phonenumber
│ │ │ │ │ ├── PhoneNumberDestination.kt
│ │ │ │ │ └── PhoneNumberViewModel.kt
│ │ │ │ ├── selectcontract
│ │ │ │ │ ├── SelectContractDestination.kt
│ │ │ │ │ └── SelectContractViewModel.kt
│ │ │ │ ├── singleitem
│ │ │ │ │ ├── SingleItemDestination.kt
│ │ │ │ │ └── SingleItemViewModel.kt
│ │ │ │ ├── singleitemcheckout
│ │ │ │ │ ├── SingleItemCheckoutDestination.kt
│ │ │ │ │ └── SingleItemCheckoutViewModel.kt
│ │ │ │ ├── singleitempayout
│ │ │ │ │ ├── SingleItemPayoutDestination.kt
│ │ │ │ │ └── SingleItemPayoutViewModel.kt
│ │ │ │ ├── success
│ │ │ │ │ └── ClaimSuccessDestination.kt
│ │ │ │ ├── summary
│ │ │ │ │ ├── ClaimSummaryDestination.kt
│ │ │ │ │ └── ClaimSummaryViewModel.kt
│ │ │ │ ├── unknownerror
│ │ │ │ │ └── UnknownErrorDestination.kt
│ │ │ │ └── unknownscreen
│ │ │ │ │ └── UnknownScreenDestination.kt
│ │ │ │ └── ui
│ │ │ │ ├── DatePickerWithDialog.kt
│ │ │ │ ├── LocationWithDialog.kt
│ │ │ │ ├── MonetaryAmountInput.kt
│ │ │ │ └── MonetaryAmountOffsetMapping.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── odyssey
│ │ │ ├── data
│ │ │ └── TestClaimFlowRepository.kt
│ │ │ ├── step
│ │ │ ├── singleitem
│ │ │ │ └── SingleItemViewModelTest.kt
│ │ │ ├── singleitemcheckout
│ │ │ │ └── SingleItemCheckoutViewModelTest.kt
│ │ │ └── singleitempayout
│ │ │ │ └── SingleItemPayoutViewModelTest.kt
│ │ │ └── ui
│ │ │ └── MonetaryAmountOffsetMappingTest.kt
│ ├── feature-payments
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ ├── QueryDiscounts.graphql
│ │ │ ├── QueryPaymentsHistory.graphql
│ │ │ ├── QueryReferrals.graphql
│ │ │ ├── QueryShortPaymentsHistory.graphql
│ │ │ └── QueryUpcomingPayment.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── payments
│ │ │ ├── PreviewData.kt
│ │ │ ├── data
│ │ │ ├── Discount.kt
│ │ │ ├── GetChargeDetailsUseCase.kt
│ │ │ ├── GetDiscountsOverviewUseCase.kt
│ │ │ ├── GetDiscountsUseCase.kt
│ │ │ ├── GetPaymentsHistoryUseCase.kt
│ │ │ ├── MemberCharge.kt
│ │ │ ├── PaymentConnection.kt
│ │ │ └── PaymentOverview.kt
│ │ │ ├── di
│ │ │ └── PaymentsModule.kt
│ │ │ ├── navigation
│ │ │ ├── PaymentsDestination.kt
│ │ │ └── PaymentsGraph.kt
│ │ │ ├── overview
│ │ │ └── data
│ │ │ │ ├── GetForeverInformationUseCase.kt
│ │ │ │ ├── GetUpcomingPaymentUseCase.kt
│ │ │ │ └── GetUpcomingPaymentUseCaseProvider.kt
│ │ │ └── ui
│ │ │ ├── details
│ │ │ ├── PaymentDetailExpandableCard.kt
│ │ │ ├── PaymentDetailsDestination.kt
│ │ │ └── PaymentDetailsViewModel.kt
│ │ │ ├── discounts
│ │ │ ├── AddDiscountBottomSheetContent.kt
│ │ │ ├── DiscountRow.kt
│ │ │ ├── DiscountsDestination.kt
│ │ │ ├── DiscountsPresenter.kt
│ │ │ └── DiscountsViewModel.kt
│ │ │ ├── history
│ │ │ ├── PaymentHistoryDestination.kt
│ │ │ └── PaymentHistoryViewModel.kt
│ │ │ └── payments
│ │ │ ├── PaymentsDestination.kt
│ │ │ ├── PaymentsPresenter.kt
│ │ │ └── PaymentsViewModel.kt
│ ├── feature-profile
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── eurobonus
│ │ │ │ │ ├── FragmentPartnerDataFragment.graphql
│ │ │ │ │ ├── MutationUpdateEurobonusNumber.graphql
│ │ │ │ │ └── QueryEurobonusData.graphql
│ │ │ │ └── member
│ │ │ │ │ ├── MutationMemberUpdateContactInfo.graphql
│ │ │ │ │ ├── MutationUpdateSubscriptionPreference.graphql
│ │ │ │ │ ├── QueryContactInformation.graphql
│ │ │ │ │ ├── QueryInsuranceEvidenceAvailability.graphql
│ │ │ │ │ ├── QueryMemberId.graphql
│ │ │ │ │ └── QueryTravelCertificateAvailability.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── profile
│ │ │ │ ├── aboutapp
│ │ │ │ ├── AboutAppDestination.kt
│ │ │ │ ├── AboutAppViewModel.kt
│ │ │ │ └── LicensesDestination.kt
│ │ │ │ ├── certificates
│ │ │ │ ├── CertificatesDestination.kt
│ │ │ │ └── CertificatesViewModel.kt
│ │ │ │ ├── contactinfo
│ │ │ │ ├── ContactInfoDestination.kt
│ │ │ │ └── ContactInfoViewModel.kt
│ │ │ │ ├── data
│ │ │ │ ├── ChangeEmailSubscriptionPreferencesUseCase.kt
│ │ │ │ ├── CheckCertificatesAvailabilityUseCase.kt
│ │ │ │ ├── CheckInsuranceEvidenceAvailabilityUseCase.kt
│ │ │ │ ├── CheckTravelCertificateDestinationAvailabilityUseCase.kt
│ │ │ │ ├── ContactInfoRepository.kt
│ │ │ │ ├── ContactInfoRepositoryDemo.kt
│ │ │ │ ├── ContactInfoRepositoryImpl.kt
│ │ │ │ ├── GetEurobonusDataUseCase.kt
│ │ │ │ ├── ProfileData.kt
│ │ │ │ └── UpdateEurobonusNumberUseCase.kt
│ │ │ │ ├── di
│ │ │ │ ├── ProfileModule.kt
│ │ │ │ └── ProfileRepositoryProvider.kt
│ │ │ │ ├── eurobonus
│ │ │ │ ├── EurobonusDestination.kt
│ │ │ │ └── EurobonusViewModel.kt
│ │ │ │ ├── navigation
│ │ │ │ └── ProfileDestinations.kt
│ │ │ │ ├── settings
│ │ │ │ ├── SettingsDestination.kt
│ │ │ │ ├── SettingsPresenter.kt
│ │ │ │ └── SettingsViewModel.kt
│ │ │ │ └── tab
│ │ │ │ ├── GetEurobonusStatusUseCase.kt
│ │ │ │ ├── ProfileDestination.kt
│ │ │ │ ├── ProfileGraph.kt
│ │ │ │ └── ProfileViewModel.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ ├── NoopNetworkCacheManager.kt
│ │ │ └── profile
│ │ │ ├── contactinfo
│ │ │ └── ContactInfoPresenterTest.kt
│ │ │ ├── eurobonus
│ │ │ └── EurobonusPresenterTest.kt
│ │ │ ├── settings
│ │ │ └── SettingsPresenterTest.kt
│ │ │ └── tab
│ │ │ └── ProfilePresenterTest.kt
│ ├── feature-terminate-insurance
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ │ ├── FragmentTerminationFlowStepFragment.graphql
│ │ │ │ ├── MutationFlowTerminationDateNext.graphql
│ │ │ │ ├── MutationFlowTerminationDeletionNext.graphql
│ │ │ │ ├── MutationFlowTerminationStart.graphql
│ │ │ │ └── MutationFlowTerminationSurveyNext.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── feature
│ │ │ │ └── terminateinsurance
│ │ │ │ ├── InsuranceId.kt
│ │ │ │ ├── data
│ │ │ │ ├── TerminateInsuranceRepository.kt
│ │ │ │ ├── TerminateInsuranceStep.kt
│ │ │ │ ├── TerminationFlowContextStorage.kt
│ │ │ │ └── TerminationSurveyOption.kt
│ │ │ │ ├── di
│ │ │ │ └── TerminateInsuranceModule.kt
│ │ │ │ ├── navigation
│ │ │ │ ├── TerminateInsuranceDestination.kt
│ │ │ │ └── TerminateInsuranceGraph.kt
│ │ │ │ ├── step
│ │ │ │ ├── choose
│ │ │ │ │ ├── ChooseInsuranceToTerminateDestination.kt
│ │ │ │ │ └── ChooseInsuranceToTerminateViewModel.kt
│ │ │ │ ├── deletion
│ │ │ │ │ └── InsuranceDeletionDestination.kt
│ │ │ │ ├── survey
│ │ │ │ │ ├── TerminationSurveyDestination.kt
│ │ │ │ │ └── TerminationSurveyViewModel.kt
│ │ │ │ ├── terminationdate
│ │ │ │ │ ├── TerminationDateDestination.kt
│ │ │ │ │ └── TerminationDateViewModel.kt
│ │ │ │ ├── terminationfailure
│ │ │ │ │ └── TerminationFailureDestination.kt
│ │ │ │ ├── terminationreview
│ │ │ │ │ ├── TerminationConfirmationDestination.kt
│ │ │ │ │ └── TerminationConfirmationViewModel.kt
│ │ │ │ ├── terminationsuccess
│ │ │ │ │ └── TerminationSuccessDestination.kt
│ │ │ │ └── unknown
│ │ │ │ │ └── UnknownScreenDestination.kt
│ │ │ │ └── ui
│ │ │ │ ├── TerminationInfo.kt
│ │ │ │ ├── TerminationInfoCard.kt
│ │ │ │ └── TerminationScaffold.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── terminateinsurance
│ │ │ ├── data
│ │ │ └── TerminateInsuranceRepositoryImplTest.kt
│ │ │ └── step
│ │ │ └── survey
│ │ │ └── TerminationSurveyPresenterTest.kt
│ └── feature-travel-certificate
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── graphql
│ │ │ ├── MutationTravelCertificateCreate.graphql
│ │ │ ├── QueryCoInsuredForContract.graphql
│ │ │ ├── QueryCurrentContracts.graphql
│ │ │ ├── QueryEligibleContractsWithAddress.graphql
│ │ │ ├── QueryTravelCertificateHistory.graphql
│ │ │ └── QueryTravelCertificateSpecifications.graphql
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── feature
│ │ │ └── travelcertificate
│ │ │ ├── data
│ │ │ ├── CheckTravelCertificateAvailabilityForCurrentContractsUseCase.kt
│ │ │ ├── CreateTravelCertificateUseCase.kt
│ │ │ ├── GetCoInsuredForContractUseCase.kt
│ │ │ ├── GetEligibleContractsWithAddressUseCase.kt
│ │ │ ├── GetTravelCertificateSpecificationsUseCase.kt
│ │ │ └── GetTravelCertificatesHistoryUseCase.kt
│ │ │ ├── di
│ │ │ └── TravelCertificateModule.kt
│ │ │ ├── navigation
│ │ │ ├── TravelCertificateDestination.kt
│ │ │ └── TravelCertificateGraph.kt
│ │ │ └── ui
│ │ │ ├── TravelCertificateInfoBottomSheet.kt
│ │ │ ├── choose
│ │ │ ├── ChooseContractForCertificate.kt
│ │ │ └── ChooseContractForCertificateViewModel.kt
│ │ │ ├── generatewhen
│ │ │ ├── TravelCertificateDateInput.kt
│ │ │ └── TravelCertificateDateInputViewModel.kt
│ │ │ ├── generatewho
│ │ │ ├── TravelCertificateTravellersInput.kt
│ │ │ └── TravelCertificateTravellersInputViewModel.kt
│ │ │ ├── history
│ │ │ ├── CertificateHistoryViewModel.kt
│ │ │ └── TravelCertificateHistory.kt
│ │ │ └── overview
│ │ │ ├── TravelCertificateOverview.kt
│ │ │ └── TravelCertificateOverviewViewModel.kt
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── feature
│ │ └── travelcertificate
│ │ └── GetTravelCertificateSpecificationsUseCaseTest.kt
├── featureflags
│ ├── feature-flags-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── featureflags
│ │ │ ├── FeatureManager.kt
│ │ │ ├── HedvigUnleashClient.kt
│ │ │ ├── di
│ │ │ └── featureManagerModule.kt
│ │ │ └── flags
│ │ │ ├── Feature.kt
│ │ │ └── UnleashFeatureFlagProvider.kt
│ └── feature-flags-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── featureflags
│ │ └── test
│ │ └── FakeFeatureManager.kt
├── initializable
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── initializable
│ │ └── Initializable.kt
├── language
│ ├── language-android
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── language
│ │ │ ├── AndroidLanguageService.kt
│ │ │ ├── Language.kt
│ │ │ └── di
│ │ │ └── LanguageModule.kt
│ ├── language-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── language
│ │ │ ├── Language.kt
│ │ │ └── LanguageService.kt
│ ├── language-data
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── graphql
│ │ │ └── MutationMemberUpdateLanguage.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── apollo
│ │ │ └── auth
│ │ │ └── listeners
│ │ │ ├── UploadLanguagePreferenceToBackendAuthListener.kt
│ │ │ ├── UploadLanguagePreferenceToBackendUseCase.kt
│ │ │ └── di
│ │ │ └── LanguageAuthListenersModule.kt
│ ├── language-migration
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── language
│ │ │ ├── LanguageLaunchCheckUseCase.kt
│ │ │ └── di
│ │ │ └── LanguageMigrationModule.kt
│ └── language-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── language
│ │ └── test
│ │ └── FakeLanguageService.kt
├── logging
│ ├── logging-android
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── logger
│ │ │ └── AndroidLogcatLogger.kt
│ ├── logging-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── logger
│ │ │ ├── LogPriority.kt
│ │ │ ├── Logcat.kt
│ │ │ └── LogcatLogger.kt
│ └── logging-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── logger
│ │ ├── TestLogcatLogger.kt
│ │ ├── TestLogcatLoggingRule.kt
│ │ └── TestRumLogger.kt
├── member-reminders
│ ├── member-reminders-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── main
│ │ │ ├── graphql
│ │ │ │ ├── QueryGetPayinMethodStatus.graphql
│ │ │ │ ├── QueryGetUpcomingRenewalReminder.graphql
│ │ │ │ ├── QueryNeedsCoInsuredInfoReminder.graphql
│ │ │ │ └── QueryNeedsContactInfoUpdateReminder.graphql
│ │ │ └── kotlin
│ │ │ │ └── com
│ │ │ │ └── hedvig
│ │ │ │ └── android
│ │ │ │ └── memberreminders
│ │ │ │ ├── EnableNotificationsReminderSnoozeManager.kt
│ │ │ │ ├── GetConnectPaymentReminderUseCase.kt
│ │ │ │ ├── GetContactInfoUpdateIsNeededUseCase.kt
│ │ │ │ ├── GetMemberRemindersUseCase.kt
│ │ │ │ ├── GetNeedsCoInsuredInfoRemindersUseCase.kt
│ │ │ │ ├── GetUpcomingRenewalRemindersUseCase.kt
│ │ │ │ └── di
│ │ │ │ └── MemberRemindersModule.kt
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── memberreminders
│ │ │ ├── EnableNotificationsReminderManagerTest.kt
│ │ │ ├── GetConnectPaymentReminderUseCaseTest.kt
│ │ │ ├── GetMemberRemindersUseCaseTest.kt
│ │ │ └── GetUpcomingRenewalRemindersUseCaseTest.kt
│ ├── member-reminders-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── memberreminders
│ │ │ └── test
│ │ │ ├── TestEnableNotificationsReminderSnoozeManager.kt
│ │ │ └── TestGetMemberRemindersUseCase.kt
│ └── member-reminders-ui
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── memberreminders
│ │ └── ui
│ │ └── MemberReminderCards.kt
├── molecule
│ ├── molecule-android
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── molecule
│ │ │ └── android
│ │ │ └── MoleculeViewModel.kt
│ ├── molecule-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── molecule
│ │ │ └── public
│ │ │ └── MoleculePresenter.kt
│ └── molecule-test
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── molecule
│ │ └── test
│ │ └── MoleculeTest.kt
├── navigation
│ ├── navigation-activity
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── navigation
│ │ │ └── activity
│ │ │ └── ExternalNavigator.kt
│ ├── navigation-common
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── navigation
│ │ │ └── common
│ │ │ └── Destination.kt
│ ├── navigation-compose-typed
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── navigation
│ │ │ └── compose
│ │ │ └── typed
│ │ │ ├── DestinationScopedViewModel.kt
│ │ │ └── getRouteFromBackStack.kt
│ ├── navigation-compose
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── navigation
│ │ │ └── compose
│ │ │ ├── JsonSerializableNavType.kt
│ │ │ ├── LocalNavAnimatedVisibilityScope.kt
│ │ │ ├── NavGraphBuilderExt.kt
│ │ │ └── TypedAlternatives.kt
│ └── navigation-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── navigation
│ │ └── core
│ │ ├── HedvigDeepLinkContainer.kt
│ │ ├── Navigator.kt
│ │ ├── TopLevelGraph.kt
│ │ └── di
│ │ └── DeepLinkModule.kt
├── notification-badge-data
│ ├── notification-badge-data-fake
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── notification
│ │ │ └── badge
│ │ │ └── data
│ │ │ └── crosssell
│ │ │ └── card
│ │ │ └── CrossSellCardNotificationBadgeService.kt
│ └── notification-badge-data-public
│ │ ├── build.gradle.kts
│ │ └── src
│ │ ├── main
│ │ ├── graphql
│ │ │ └── QueryCrossSellTypes.graphql
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── notification
│ │ │ └── badge
│ │ │ └── data
│ │ │ ├── crosssell
│ │ │ ├── CrossSellBadgeType.kt
│ │ │ ├── CrossSellCardNotificationBadgeServiceProvider.kt
│ │ │ ├── CrossSellNotificationBadgeService.kt
│ │ │ ├── GetCrossSellIdentifiersUseCase.kt
│ │ │ ├── bottomnav
│ │ │ │ └── CrossSellBottomNavNotificationBadgeService.kt
│ │ │ └── card
│ │ │ │ ├── CrossSellCardNotificationBadgeDemoService.kt
│ │ │ │ └── CrossSellCardNotificationBadgeService.kt
│ │ │ ├── di
│ │ │ └── NotificationBadgeModule.kt
│ │ │ ├── referrals
│ │ │ └── ReferralsNotificationBadgeService.kt
│ │ │ ├── storage
│ │ │ ├── DatastoreNotificationBadgeStorage.kt
│ │ │ ├── NotificationBadge.kt
│ │ │ └── NotificationBadgeStorage.kt
│ │ │ └── tab
│ │ │ ├── BottomNavTab.kt
│ │ │ └── TabNotificationBadgeService.kt
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── notification
│ │ └── badge
│ │ └── data
│ │ └── crosssell
│ │ ├── FakeNotificationBadgeStorage.kt
│ │ ├── bottomnav
│ │ └── TabNotificationBadgeServiceTest.kt
│ │ └── card
│ │ ├── CrossSellCardNotificationBadgeServiceTest.kt
│ │ └── FakeGetCrossSellIdentifiersUseCase.kt
├── notification-permission
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── notification
│ │ └── permission
│ │ └── NotificationPermission.kt
├── notification
│ ├── notification-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── notification
│ │ │ └── core
│ │ │ ├── NotificationChannel.kt
│ │ │ ├── NotificationExt.kt
│ │ │ └── NotificationSender.kt
│ └── notification-firebase
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── graphql
│ │ └── MutationMemberDeviceRegister.graphql
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── notification
│ │ └── firebase
│ │ ├── FCMTokenAuthEventListener.kt
│ │ ├── FCMTokenManager.kt
│ │ ├── FCMTokenStorage.kt
│ │ ├── FCMTokenUploadWorker.kt
│ │ ├── PushNotificationService.kt
│ │ └── di
│ │ └── FirebaseNotificationModule.kt
├── shared
│ ├── forever-ui
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── graphql
│ │ │ ├── MutationMemberReferralInformationCodeUpdate.graphql
│ │ │ └── QueryFullReferrals.graphql
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── shared
│ │ │ └── foreverui
│ │ │ └── ui
│ │ │ ├── data
│ │ │ ├── ForeverData.kt
│ │ │ ├── ForeverRepository.kt
│ │ │ ├── ForeverRepositoryDemo.kt
│ │ │ ├── ForeverRepositoryImpl.kt
│ │ │ └── ForeverRepositoryProvider.kt
│ │ │ ├── di
│ │ │ └── ForeverModule.kt
│ │ │ └── ui
│ │ │ ├── ContextExt.kt
│ │ │ ├── DiscountPieChart.kt
│ │ │ ├── EditCodeBottomSheet.kt
│ │ │ ├── ForeverDestination.kt
│ │ │ ├── ForeverExplanationBottomSheet.kt
│ │ │ ├── ForeverViewModel.kt
│ │ │ └── ReferralList.kt
│ └── tier-comparison
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── graphql
│ │ └── CompareCoverageQuery.graphql
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── shared
│ │ └── tier
│ │ └── comparison
│ │ ├── data
│ │ └── GetCoverageComparisonUseCase.kt
│ │ ├── di
│ │ └── ComparisonModule.kt
│ │ ├── navigation
│ │ └── ComparisonParameters.kt
│ │ └── ui
│ │ ├── ComparisonDestination.kt
│ │ ├── ComparisonViewModel.kt
│ │ └── OverlaidIndicationState.kt
├── test
│ └── test-clock
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── test
│ │ └── clock
│ │ └── TestClock.kt
├── theme
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── theme
│ │ └── Theme.kt
├── tracking
│ ├── tracking-core
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ └── main
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── hedvig
│ │ │ └── android
│ │ │ └── core
│ │ │ └── tracking
│ │ │ ├── LogAction.kt
│ │ │ └── RumLogger.kt
│ └── tracking-datadog
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── tracking
│ │ └── datadog
│ │ ├── ActionLoggerInitializer.kt
│ │ ├── DatadogRumLogger.kt
│ │ └── di
│ │ └── trackingDatadogModule.kt
└── ui
│ ├── claim-status
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── ui
│ │ └── claimstatus
│ │ ├── ClaimStatusCard.kt
│ │ ├── ClaimStatusCards.kt
│ │ ├── internal
│ │ ├── ClaimPillsRow.kt
│ │ └── ClaimProgressRow.kt
│ │ └── model
│ │ ├── ClaimPillType.kt
│ │ ├── ClaimProgressSegment.kt
│ │ └── ClaimStatusCardUiState.kt
│ ├── compose-webview
│ ├── README.md
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── composewebview
│ │ └── WebView.kt
│ ├── cross-sells
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── crosssells
│ │ └── CrossSells.kt
│ ├── placeholder
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── placeholder
│ │ ├── Placeholder.kt
│ │ └── PlaceholderHighlight.kt
│ ├── pullrefresh
│ ├── README.md
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── pullrefresh
│ │ ├── PullRefresh.kt
│ │ ├── PullRefreshIndicator.kt
│ │ ├── PullRefreshIndicatorTransform.kt
│ │ └── PullRefreshState.kt
│ ├── ui-claim-flow
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── ui
│ │ └── claimflow
│ │ ├── ClaimFlowScaffold.kt
│ │ ├── HedvigChip.kt
│ │ └── WarningTextWithIcon.kt
│ ├── ui-emergency
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── ui
│ │ └── emergency
│ │ ├── EmergencyScreen.kt
│ │ └── FirstVetScreen.kt
│ └── ui-tiers-and-addons
│ ├── build.gradle.kts
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── com
│ └── hedvig
│ └── android
│ └── tiersandaddons
│ └── QuoteCard.kt
├── build-logic
├── README.md
├── convention
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ ├── ApplicationConventionPlugin.kt
│ │ ├── HedvigGradlePlugin.kt
│ │ ├── HedvigLintConventionPlugin.kt
│ │ ├── KotlinLibraryConventionPlugin.kt
│ │ ├── LibraryConventionPlugin.kt
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ ├── AndroidCommonExtension.kt
│ │ ├── ConfigureCompose.kt
│ │ ├── ConfigureKotlin.kt
│ │ ├── ConfigureKotlinAndroid.kt
│ │ ├── ConfigureKotlinCommonCompilerOptions.kt
│ │ └── HedvigGradlePluginExtension.kt
├── gradle.properties
└── settings.gradle.kts
├── build.gradle.kts
├── debug.keystore
├── gradle.properties
├── gradle
├── libs.versions.toml
├── projectDependencyGraph.gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── hedvig-lint
├── .gitignore
├── build.gradle.kts
├── lint-baseline
│ ├── lint-baseline-apollo-auth-listeners.xml
│ ├── lint-baseline-apollo-core.xml
│ ├── lint-baseline-apollo-network-cache-manager.xml
│ ├── lint-baseline-apollo-octopus-public.xml
│ ├── lint-baseline-apollo-octopus-test.xml
│ ├── lint-baseline-apollo-test.xml
│ ├── lint-baseline-app.xml
│ ├── lint-baseline-audio-player-data.xml
│ ├── lint-baseline-audio-player-ui.xml
│ ├── lint-baseline-auth-core-public.xml
│ ├── lint-baseline-auth-core-test.xml
│ ├── lint-baseline-auth-event-core.xml
│ ├── lint-baseline-auth-event-fake.xml
│ ├── lint-baseline-claim-status.xml
│ ├── lint-baseline-compose-pager-indicator.xml
│ ├── lint-baseline-compose-photo-capture-state.xml
│ ├── lint-baseline-compose-ui.xml
│ ├── lint-baseline-compose-webview.xml
│ ├── lint-baseline-core-app-review.xml
│ ├── lint-baseline-core-build-constants.xml
│ ├── lint-baseline-core-common-android-public.xml
│ ├── lint-baseline-core-common-public.xml
│ ├── lint-baseline-core-common-test.xml
│ ├── lint-baseline-core-datastore-public.xml
│ ├── lint-baseline-core-datastore-test.xml
│ ├── lint-baseline-core-demo-mode.xml
│ ├── lint-baseline-core-design-system.xml
│ ├── lint-baseline-core-file-upload.xml
│ ├── lint-baseline-core-icons.xml
│ ├── lint-baseline-core-markdown.xml
│ ├── lint-baseline-core-resources.xml
│ ├── lint-baseline-core-retrofit.xml
│ ├── lint-baseline-core-ui-data.xml
│ ├── lint-baseline-core-ui.xml
│ ├── lint-baseline-cross-sells.xml
│ ├── lint-baseline-data-addons.xml
│ ├── lint-baseline-data-changetier.xml
│ ├── lint-baseline-data-chat.xml
│ ├── lint-baseline-data-claim-flow.xml
│ ├── lint-baseline-data-claim-triaging.xml
│ ├── lint-baseline-data-contract-android.xml
│ ├── lint-baseline-data-contract-public.xml
│ ├── lint-baseline-data-conversations.xml
│ ├── lint-baseline-data-cross-sell-after-claim-closed.xml
│ ├── lint-baseline-data-cross-sell-after-flow.xml
│ ├── lint-baseline-data-display-items.xml
│ ├── lint-baseline-data-paying-member.xml
│ ├── lint-baseline-data-product-variant-android.xml
│ ├── lint-baseline-data-product-variant-public.xml
│ ├── lint-baseline-data-settings-datastore-public.xml
│ ├── lint-baseline-data-settings-datastore-test.xml
│ ├── lint-baseline-data-termination.xml
│ ├── lint-baseline-database-android.xml
│ ├── lint-baseline-database-core.xml
│ ├── lint-baseline-database-test.xml
│ ├── lint-baseline-datadog-android.xml
│ ├── lint-baseline-datadog-core.xml
│ ├── lint-baseline-datadog-demo-tracking.xml
│ ├── lint-baseline-design-showcase.xml
│ ├── lint-baseline-design-system-api.xml
│ ├── lint-baseline-design-system-hedvig.xml
│ ├── lint-baseline-design-system-internals.xml
│ ├── lint-baseline-feature-addon-purchase.xml
│ ├── lint-baseline-feature-changeaddress.xml
│ ├── lint-baseline-feature-chat.xml
│ ├── lint-baseline-feature-choose-tier.xml
│ ├── lint-baseline-feature-claim-details.xml
│ ├── lint-baseline-feature-claim-triaging.xml
│ ├── lint-baseline-feature-connect-payment-trustly.xml
│ ├── lint-baseline-feature-cross-sell-after-flow.xml
│ ├── lint-baseline-feature-cross-sell-sheet.xml
│ ├── lint-baseline-feature-delete-account.xml
│ ├── lint-baseline-feature-edit-coinsured.xml
│ ├── lint-baseline-feature-flags-public.xml
│ ├── lint-baseline-feature-flags-test.xml
│ ├── lint-baseline-feature-force-upgrade.xml
│ ├── lint-baseline-feature-forever.xml
│ ├── lint-baseline-feature-help-center.xml
│ ├── lint-baseline-feature-home.xml
│ ├── lint-baseline-feature-image-viewer.xml
│ ├── lint-baseline-feature-impersonation.xml
│ ├── lint-baseline-feature-insurance-certificate.xml
│ ├── lint-baseline-feature-insurances.xml
│ ├── lint-baseline-feature-login.xml
│ ├── lint-baseline-feature-movingflow.xml
│ ├── lint-baseline-feature-odyssey.xml
│ ├── lint-baseline-feature-payments.xml
│ ├── lint-baseline-feature-profile.xml
│ ├── lint-baseline-feature-terminate-insurance.xml
│ ├── lint-baseline-feature-travel-certificate.xml
│ ├── lint-baseline-forever-ui.xml
│ ├── lint-baseline-initializable.xml
│ ├── lint-baseline-language-android.xml
│ ├── lint-baseline-language-core.xml
│ ├── lint-baseline-language-data.xml
│ ├── lint-baseline-language-migration.xml
│ ├── lint-baseline-language-test.xml
│ ├── lint-baseline-logging-android.xml
│ ├── lint-baseline-logging-public.xml
│ ├── lint-baseline-logging-test.xml
│ ├── lint-baseline-member-reminders-public.xml
│ ├── lint-baseline-member-reminders-test.xml
│ ├── lint-baseline-member-reminders-ui.xml
│ ├── lint-baseline-molecule-android.xml
│ ├── lint-baseline-molecule-public.xml
│ ├── lint-baseline-molecule-test.xml
│ ├── lint-baseline-navigation-activity.xml
│ ├── lint-baseline-navigation-common.xml
│ ├── lint-baseline-navigation-compose-typed.xml
│ ├── lint-baseline-navigation-compose.xml
│ ├── lint-baseline-navigation-core.xml
│ ├── lint-baseline-notification-badge-data-fake.xml
│ ├── lint-baseline-notification-badge-data-public.xml
│ ├── lint-baseline-notification-core.xml
│ ├── lint-baseline-notification-firebase.xml
│ ├── lint-baseline-notification-permission.xml
│ ├── lint-baseline-placeholder.xml
│ ├── lint-baseline-pullrefresh.xml
│ ├── lint-baseline-test-clock.xml
│ ├── lint-baseline-theme.xml
│ ├── lint-baseline-tier-comparison.xml
│ ├── lint-baseline-tracking-core.xml
│ ├── lint-baseline-tracking-datadog.xml
│ ├── lint-baseline-ui-claim-flow.xml
│ ├── lint-baseline-ui-claimflow.xml
│ ├── lint-baseline-ui-emergency.xml
│ └── lint-baseline-ui-tiers-and-addons.xml
├── lint.xml
└── src
│ └── main
│ ├── kotlin
│ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── lint
│ │ ├── HedvigLintRegistry.kt
│ │ ├── Material2Detector.kt
│ │ ├── config
│ │ └── Priorities.kt
│ │ └── util
│ │ ├── LintOption.kt
│ │ ├── LintUtils.kt
│ │ ├── OptionLoadingDetector.kt
│ │ └── StringSetLintOption.kt
│ └── resources
│ └── META-INF
│ └── services
│ └── com.android.tools.lint.client.api.IssueRegistry
├── lokalise-gradle-plugin
├── README.md
├── gradle.properties
├── lokalise
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── lokalise
│ │ ├── HedvigLokalisePlugin.kt
│ │ ├── config
│ │ ├── DownloadConfig.kt
│ │ ├── EmptyTranslationStrategy.kt
│ │ └── StringsOrder.kt
│ │ ├── extension
│ │ └── LokalisePluginExtension.kt
│ │ └── task
│ │ └── DownloadStringsTask.kt
└── settings.gradle.kts
├── maestro
├── demo-mode.yaml
└── maestro.main.kts
├── micro-apps
├── README.md
└── design-showcase
│ ├── README.md
│ ├── build.gradle.kts
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── com
│ │ └── hedvig
│ │ └── android
│ │ └── sample
│ │ └── design
│ │ └── showcase
│ │ ├── DesignShowcase.kt
│ │ ├── DesignShowcaseActivity.kt
│ │ ├── accordion
│ │ └── Accordion.kt
│ │ ├── bigcard
│ │ └── BigCard.kt
│ │ ├── bottomSheet
│ │ └── BottomSheetShowcase.kt
│ │ ├── button
│ │ └── ShowcaseButton.kt
│ │ ├── datepicker
│ │ └── DatePickerShowcase.kt
│ │ ├── dialog
│ │ └── ShowcaseDialog.kt
│ │ ├── dropdown
│ │ └── Dropdown.kt
│ │ ├── freetext
│ │ └── FreeTextShowcase.kt
│ │ ├── highlight
│ │ └── HighlightShowcase.kt
│ │ ├── icons
│ │ └── ShowcaseIcons.kt
│ │ ├── list
│ │ └── CLickableList.kt
│ │ ├── materialBottomSheet
│ │ └── MaterialExperiment.kt
│ │ ├── notifications
│ │ └── NotificationsShowcase.kt
│ │ ├── peril
│ │ └── Perils.kt
│ │ ├── progress
│ │ └── ProgressBarShowcase.kt
│ │ ├── radio
│ │ └── RadioGroups.kt
│ │ ├── stepper
│ │ └── StepperShowcase.kt
│ │ ├── tabs
│ │ └── Tabs.kt
│ │ ├── textfield
│ │ └── ShowcaseTextField.kt
│ │ ├── toggle
│ │ └── ToggleShowCase.kt
│ │ ├── topbar
│ │ └── TopAppBar.kt
│ │ └── util
│ │ ├── DashedBorder.kt
│ │ ├── FreeScroll.kt
│ │ └── ShowcaseLayout.kt
│ └── res
│ ├── drawable-nodpi
│ ├── ic_pillow_cat.webp
│ ├── ic_pillow_dog.webp
│ ├── ic_pillow_home.webp
│ └── ic_pillow_homeowner.webp
│ └── values
│ ├── strings.xml
│ └── themes.xml
├── misc
├── WORKING_WITH_MAVEN_LOCAL.md
└── images
│ ├── m2_and_m3_color_schemes.png
│ ├── m3_showcase.png
│ └── modularization-graph.png
├── renovate.json
├── sample-module
├── README.md
├── build.gradle.kts
└── src
│ └── main
│ └── AndroidManifest.xml
├── scripts
└── ci-prebuild.sh
└── settings.gradle.kts
/.aiexclude:
--------------------------------------------------------------------------------
1 | .properties
2 | .DS_Store
3 | .gradle
4 | .settings
5 | .iml
6 | .li
7 | .classpath
8 | .project
9 | build/
10 | mapping.txt
11 | .json
12 | .graphqls
13 | Jks
14 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @HedvigInsurance/android
2 |
--------------------------------------------------------------------------------
/.github/ci-gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.daemon=false
2 | org.gradle.parallel=true
3 | org.gradle.workers.max=2
4 | org.gradle.configuration-cache.parallel=true
5 |
6 | kotlin.incremental=false
7 | kotlin.compiler.execution.strategy=in-process
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | .DS_Store
3 | .gradle
4 | build/
5 | .settings
6 | maven/
7 | local.properties
8 | sentry.properties
9 | .sts4-cache
10 | *.iml
11 | *.li
12 | .classpath
13 | .project
14 | .kotlin
15 | mapping.txt
16 |
17 | # graphql
18 | schema.json
19 | schema.graphqls
20 |
21 | open_source_licenses.html
22 |
23 | # lokalise credentials
24 | lokalise.properties
25 | app/src/main/res/**/strings.xml
26 |
27 | # Local jks store
28 | Jks
29 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # GitHub Copilot files
5 | /copilot/*
6 | # Ignore everything inside .idea
7 | /*
8 | # Except for shared run configurations
9 | !/runConfigurations/
10 | !codeInsightSettings.xml
11 | !.gitignore
12 | !/codeStyles/
13 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/apollo/README.md:
--------------------------------------------------------------------------------
1 | To download the schema:
2 | `./gradlew downloadOctopusApolloSchemaFromIntrospection`
3 |
4 | To manually generate all the models to have the IDE not show errors all over the place:
5 | `./gradlew generateApolloSources`
6 |
--------------------------------------------------------------------------------
/app/apollo/apollo-auth-listeners/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.apollo.normalizedCache)
8 | implementation(libs.apollo.runtime)
9 | implementation(libs.koin.core)
10 | implementation(projects.apolloOctopusPublic)
11 | implementation(projects.authEventCore)
12 | }
13 |
--------------------------------------------------------------------------------
/app/apollo/apollo-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.apollo.api)
8 | api(libs.apollo.runtime)
9 | api(libs.arrow.core)
10 | api(libs.coroutines.core)
11 | api(projects.coreCommonPublic)
12 |
13 | implementation(libs.apollo.normalizedCache)
14 | }
15 |
--------------------------------------------------------------------------------
/app/apollo/apollo-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/apollo/apollo-network-cache-manager/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.apollo.normalizedCache)
8 | implementation(libs.apollo.runtime)
9 | implementation(libs.koin.core)
10 | }
11 |
--------------------------------------------------------------------------------
/app/apollo/apollo-network-cache-manager/src/main/kotlin/com/hedvig/android/apollo/di/NetworkCacheManagerModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.apollo.di
2 |
3 | import com.apollographql.apollo.ApolloClient
4 | import com.hedvig.android.apollo.ApolloNetworkCacheManager
5 | import com.hedvig.android.apollo.NetworkCacheManager
6 | import org.koin.dsl.module
7 |
8 | val networkCacheManagerModule = module {
9 | single { ApolloNetworkCacheManager(get()) }
10 | }
11 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-public/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-public/src/main/graphql/com/hedvig/android/apollo/octopus/extra.graphqls:
--------------------------------------------------------------------------------
1 | extend schema
2 | @link(
3 | url: "https://specs.apollo.dev/kotlin_labs/v0.3",
4 | import: ["@typePolicy"]
5 | )
6 |
7 | extend type Member @typePolicy(keyFields: "id")
8 |
9 | extend interface ChatMessage @typePolicy(keyFields: "id")
10 | extend type Contract @typePolicy(keyFields: "id")
11 | extend type Claim @typePolicy(keyFields: "id")
12 | extend type Conversation @typePolicy(keyFields: "id")
13 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-public/src/main/graphql/com/hedvig/android/apollo/octopus/graphql/AddonVariantFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment AddonVariantFragment on AddonVariant {
2 | termsVersion
3 | displayName
4 | product
5 | addonPerils {
6 | coverageText
7 | description
8 | title
9 | colorCode
10 | }
11 | documents {
12 | displayName
13 | url
14 | type
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-public/src/main/graphql/com/hedvig/android/apollo/octopus/graphql/FragmentMoneyFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment MoneyFragment on Money {
2 | amount
3 | currencyCode
4 | }
5 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-public/src/main/graphql/com/hedvig/android/apollo/octopus/graphql/FragmentProductVariantFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment ProductVariantFragment on ProductVariant {
2 | displayName
3 | displayNameTier
4 | tierDescription
5 | typeOfContract
6 | partner
7 | termsVersion
8 | perils {
9 | id
10 | title
11 | description
12 | covered
13 | colorCode
14 | }
15 | insurableLimits {
16 | label
17 | limit
18 | description
19 | }
20 | documents {
21 | displayName
22 | url
23 | type
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/apollo/apollo-octopus-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.apollo.api)
8 | api(libs.kotlinx.datetime)
9 |
10 | implementation(projects.apolloOctopusPublic)
11 | implementation(projects.coreMarkdown)
12 | }
13 |
--------------------------------------------------------------------------------
/app/apollo/apollo-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.junit)
8 |
9 | implementation(libs.apollo.testingSupport)
10 | implementation(libs.atomicfu)
11 | implementation(libs.turbine)
12 | }
13 |
--------------------------------------------------------------------------------
/app/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/AppInitializers.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app
2 |
3 | import com.hedvig.android.initializable.Initializable
4 |
5 | class AppInitializers(
6 | private val initializables: Set,
7 | ) {
8 | fun initialize() {
9 | for (initializable in initializables) {
10 | initializable.initialize()
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/HedvigApplication.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app
2 |
3 | import android.app.Application
4 | import androidx.appcompat.app.AppCompatDelegate
5 | import org.koin.android.ext.android.inject
6 |
7 | open class HedvigApplication : Application() {
8 | private val appInitializers: AppInitializers by inject()
9 |
10 | override fun onCreate() {
11 | super.onCreate()
12 | AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
13 | appInitializers.initialize()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/di/AppModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app.di
2 |
3 | import com.hedvig.android.app.AppInitializers
4 | import com.hedvig.android.initializable.Initializable
5 | import org.koin.dsl.module
6 |
7 | val appModule = module {
8 | single {
9 | AppInitializers(getAll().toSet())
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/navigation/RootGraph.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app.navigation
2 |
3 | import com.hedvig.android.navigation.common.Destination
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | @SerialName("root")
9 | object RootGraph : Destination {
10 | val route = "root"
11 |
12 | override fun toString(): String {
13 | return route
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/notification/senders/NotificationSendersExt.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app.notification.senders
2 |
3 | import com.google.firebase.messaging.RemoteMessage
4 |
5 | // region From customerIO https://www.customer.io/docs/send-push/#standard-payload
6 | internal fun RemoteMessage?.titleFromCustomerIoData(): String? {
7 | return this?.data?.get("title")
8 | }
9 |
10 | internal fun RemoteMessage.bodyFromCustomerIoData(): String? {
11 | return this?.data?.get("body")
12 | }
13 | // endregion
14 |
--------------------------------------------------------------------------------
/app/app/src/main/kotlin/com/hedvig/android/app/startup/DatadogInitializerImpl.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.app.startup
2 |
3 | import androidx.startup.Initializer
4 | import com.hedvig.android.app.di.KoinInitializer
5 | import com.hedvig.android.datadog.core.DatadogInitializer
6 |
7 | @Suppress("unused") // Used in /app/src/main/AndroidManifest.xml
8 | class DatadogInitializerImpl : DatadogInitializer() {
9 | override fun dependencies(): List>> {
10 | return listOf(TimberInitializer::class.java, KoinInitializer::class.java)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | - @color/hedvig_black
4 | - @color/hedvig_white
5 |
--------------------------------------------------------------------------------
/app/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
--------------------------------------------------------------------------------
/app/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #121212
4 | #ffffff
5 |
6 | @color/hedvig_black
7 | @color/hedvig_white
8 |
9 | - @color/hedvig_white
10 | - @color/hedvig_black
11 |
12 |
--------------------------------------------------------------------------------
/app/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | /deeplink
4 |
--------------------------------------------------------------------------------
/app/app/src/release/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/app/src/staging/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/audio-player-data/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.annotation)
12 | implementation(libs.coroutines.core)
13 | implementation(libs.kotlinx.serialization.core)
14 | implementation(projects.coreCommonPublic)
15 |
16 | testImplementation(libs.assertK)
17 | testImplementation(libs.junit)
18 | }
19 |
--------------------------------------------------------------------------------
/app/audio-player-ui/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/audio-player-ui/src/main/kotlin/com/hedvig/android/audio/player/internal/WaveInteraction.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.audio.player.internal
2 |
3 | import com.hedvig.audio.player.data.ProgressPercentage
4 |
5 | internal fun interface WaveInteraction {
6 | /**
7 | * [horizontalProgressPercentage] is a value that shows where in the horizontal spectrum the wave was interacted
8 | * with.
9 | * Ranges from 0.0f when interacted on the far left to 1.0f on the far right.
10 | */
11 | fun onInteraction(horizontalProgressPercentage: ProgressPercentage)
12 | }
13 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/AccessTokenProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth
2 |
3 | /**
4 | * To be used in both Okhttp and ktor interceptors to append the access token to the header, and refresh it if there's
5 | * such a need.
6 | */
7 | fun interface AccessTokenProvider {
8 | suspend fun provide(): String?
9 | }
10 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/AuthStatus.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth
2 |
3 | import com.hedvig.android.auth.token.LocalAccessToken
4 | import com.hedvig.android.auth.token.LocalRefreshToken
5 |
6 | sealed interface AuthStatus {
7 | data class LoggedIn(
8 | val accessToken: LocalAccessToken,
9 | val refreshToken: LocalRefreshToken,
10 | ) : AuthStatus
11 |
12 | data object LoggedOut : AuthStatus
13 | }
14 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/event/AuthEvent.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.event
2 |
3 | sealed interface AuthEvent {
4 | data class LoggedIn(
5 | val accessToken: String,
6 | val refreshToken: String,
7 | ) : AuthEvent
8 |
9 | data object LoggedOut : AuthEvent
10 | }
11 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/event/AuthEventStorage.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.event
2 |
3 | import kotlinx.coroutines.channels.Channel
4 |
5 | class AuthEventStorage() {
6 | val authEvents = Channel(Channel.UNLIMITED)
7 |
8 | fun loggedIn(accessToken: String, refreshToken: String) {
9 | authEvents.trySend(AuthEvent.LoggedIn(accessToken, refreshToken))
10 | }
11 |
12 | fun loggedOut() {
13 | authEvents.trySend(AuthEvent.LoggedOut)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/token/AuthTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.token
2 |
3 | data class AuthTokens(
4 | val accessToken: LocalAccessToken,
5 | val refreshToken: LocalRefreshToken,
6 | )
7 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/token/LocalAccessToken.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.token
2 |
3 | import kotlinx.datetime.Instant
4 |
5 | data class LocalAccessToken(
6 | val token: String,
7 | val expiryDate: Instant,
8 | )
9 |
--------------------------------------------------------------------------------
/app/auth/auth-core-public/src/main/kotlin/com/hedvig/android/auth/token/LocalRefreshToken.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.token
2 |
3 | import kotlinx.datetime.Instant
4 |
5 | data class LocalRefreshToken(
6 | val token: String,
7 | val expiryDate: Instant,
8 | )
9 |
--------------------------------------------------------------------------------
/app/auth/auth-core-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.coroutines.core)
8 | implementation(libs.hedvig.authlib)
9 | implementation(libs.turbine)
10 | implementation(projects.authCorePublic)
11 | }
12 |
--------------------------------------------------------------------------------
/app/auth/auth-event-core/README.md:
--------------------------------------------------------------------------------
1 | ## Auth-event
2 |
3 | A simple module to host the AuthenticationListener for all other modules who are interested in this
4 | event to depend on
5 |
--------------------------------------------------------------------------------
/app/auth/auth-event-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/auth/auth-event-fake/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(projects.authEventCore)
8 |
9 | implementation(libs.turbine)
10 | }
11 |
--------------------------------------------------------------------------------
/app/auth/auth-event-fake/src/main/kotlin/com/hedvig/android/auth/event/AuthEventListener.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.auth.event
2 |
3 | import app.cash.turbine.Turbine
4 |
5 | class FakeAuthEventListener : AuthEventListener {
6 | val loggedInEvent = Turbine()
7 | val loggedOutEvent = Turbine()
8 |
9 | override suspend fun loggedIn(accessToken: String) {
10 | loggedInEvent.add(accessToken)
11 | }
12 |
13 | override suspend fun loggedOut() {
14 | loggedOutEvent.add(Unit)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/compose/compose-pager-indicator/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.foundation)
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(libs.androidx.compose.uiCore)
14 | implementation(projects.designSystemHedvig)
15 | }
16 |
--------------------------------------------------------------------------------
/app/compose/compose-pager-indicator/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/compose/compose-photo-capture-state/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.activity.compose)
12 | implementation(libs.androidx.activity.core)
13 | }
14 |
--------------------------------------------------------------------------------
/app/compose/compose-photo-capture-state/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/compose/compose-ui/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.foundation)
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(libs.androidx.compose.uiCore)
14 | }
15 |
--------------------------------------------------------------------------------
/app/compose/compose-ui/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/compose/compose-ui/src/main/kotlin/com/hedvig/android/compose/ui/EmptyContentDescription.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.compose.ui
2 |
3 | /**
4 | * Used when the content description is purposefully left as null as we either want to ignore this item from a11y, or
5 | * we have some other mechanism in order to read this component properly.
6 | * This helps us differentiate these instances from
7 | */
8 | val EmptyContentDescription: String? = null
9 |
--------------------------------------------------------------------------------
/app/core/core-app-review/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 | dependencies {
6 | implementation(libs.androidx.datastore.core)
7 | implementation(libs.androidx.datastore.preferencesCore)
8 | implementation(libs.coroutines.core)
9 | implementation(libs.koin.core)
10 | implementation(projects.authEventCore)
11 | }
12 |
--------------------------------------------------------------------------------
/app/core/core-app-review/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/core/core-app-review/src/main/kotlin/com/hedvig/android/core/appreview/SelfServiceCompletedAuthEventListener.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.appreview
2 |
3 | import com.hedvig.android.auth.event.AuthEventListener
4 |
5 | internal class SelfServiceCompletedAuthEventListener(
6 | private val selfServiceCompletedEventManager: SelfServiceCompletedEventManager,
7 | ) : AuthEventListener {
8 | override suspend fun loggedOut() {
9 | selfServiceCompletedEventManager.resetSelfServiceCompletions()
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/core/core-build-constants/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/core/core-common-android-public/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/core/core-common-android-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | compose()
9 | }
10 |
11 | dependencies {
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(libs.androidx.other.core)
14 | implementation(projects.apolloOctopusPublic)
15 | implementation(projects.coreResources)
16 | }
17 |
--------------------------------------------------------------------------------
/app/core/core-common-android-public/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/core/core-common-android-public/src/main/kotlin/com/hedvig/android/core/common/android/validation/ValidationResult.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.common.android.validation
2 |
3 | import androidx.annotation.StringRes
4 |
5 | data class ValidationResult(
6 | val isSuccessful: Boolean,
7 | @StringRes val errorTextKey: Int?,
8 | )
9 |
--------------------------------------------------------------------------------
/app/core/core-common-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.okhttp.core)
8 |
9 | implementation(libs.coroutines.core)
10 | implementation(libs.koin.core)
11 | implementation(libs.kotlinx.datetime)
12 | }
13 |
--------------------------------------------------------------------------------
/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/Cast.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.common
2 |
3 | inline fun Any?.cast(): T = this as T
4 |
5 | inline fun Any?.safeCast(): T? = this as? T
6 |
--------------------------------------------------------------------------------
/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/ErrorMessage.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.common
2 |
3 | interface ErrorMessage {
4 | val message: String?
5 | val throwable: Throwable?
6 | }
7 |
8 | fun ErrorMessage(message: String? = null, throwable: Throwable? = null): ErrorMessage = object : ErrorMessage {
9 | override val message = message
10 | override val throwable = throwable
11 |
12 | override fun toString(): String {
13 | return "ErrorMessage(message=$message, throwable=$throwable)"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/di/CoreCommonModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.common.di
2 |
3 | import com.hedvig.android.core.common.ApplicationScope
4 | import kotlin.coroutines.CoroutineContext
5 | import kotlinx.coroutines.Dispatchers
6 | import org.koin.dsl.module
7 |
8 | val coreCommonModule = module {
9 | single { ApplicationScope() }
10 | single(ioDispatcherQualifier) { Dispatchers.IO }
11 | }
12 |
--------------------------------------------------------------------------------
/app/core/core-common-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.assertK)
8 | api(libs.junit)
9 |
10 | implementation(libs.arrow.core)
11 | implementation(libs.coroutines.test)
12 | }
13 |
--------------------------------------------------------------------------------
/app/core/core-datastore-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.androidx.datastore.core)
8 | api(libs.androidx.datastore.preferencesCore)
9 |
10 | implementation(libs.coroutines.core)
11 | implementation(libs.koin.core)
12 | implementation(projects.coreCommonPublic)
13 | }
14 |
--------------------------------------------------------------------------------
/app/core/core-datastore-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.datastore.core)
8 | implementation(libs.androidx.datastore.preferencesCore)
9 | implementation(libs.coroutines.core)
10 | implementation(libs.coroutines.test)
11 | implementation(projects.coreDatastorePublic)
12 | }
13 |
--------------------------------------------------------------------------------
/app/core/core-demo-mode/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.datastore.core)
8 | implementation(libs.androidx.datastore.preferencesCore)
9 | implementation(libs.coroutines.core)
10 | implementation(libs.koin.core)
11 | implementation(projects.authEventCore)
12 | }
13 |
--------------------------------------------------------------------------------
/app/core/core-demo-mode/src/main/kotlin/com/hedvig/android/core/demomode/DemoAuthEventListener.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.demomode
2 |
3 | import com.hedvig.android.auth.event.AuthEventListener
4 |
5 | internal class DemoAuthEventListener(
6 | private val demoManager: DemoManager,
7 | ) : AuthEventListener {
8 | override suspend fun loggedOut() {
9 | demoManager.setDemoMode(false)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/core/core-demo-mode/src/main/kotlin/com/hedvig/android/core/demomode/ProdOrDemoProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.demomode
2 |
3 | import kotlinx.coroutines.flow.first
4 |
5 | interface ProdOrDemoProvider : Provider {
6 | val demoManager: DemoManager
7 | val demoImpl: T
8 | val prodImpl: T
9 |
10 | override suspend fun provide(): T {
11 | return if (demoManager.isDemoMode().first()) {
12 | demoImpl
13 | } else {
14 | prodImpl
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/core/core-demo-mode/src/main/kotlin/com/hedvig/android/core/demomode/Provider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.demomode
2 |
3 | fun interface Provider {
4 | suspend fun provide(): T
5 | }
6 |
--------------------------------------------------------------------------------
/app/core/core-file-upload/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/core/core-icons/README.md:
--------------------------------------------------------------------------------
1 | ## core-icons
2 |
3 | All the icons from the new design system, usable as composable ImageVectors.
4 | Just like `androidx.compose.material:material-icons-extended` does
--------------------------------------------------------------------------------
/app/core/core-icons/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.materialIconsCore)
12 | implementation(libs.androidx.compose.uiCore)
13 | }
14 |
--------------------------------------------------------------------------------
/app/core/core-icons/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/core/core-icons/src/main/kotlin/com/hedvig/android/core/icons/HedvigIcons.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.icons
2 |
3 | import androidx.compose.material.icons.Icons
4 |
5 | @Suppress("UnusedReceiverParameter")
6 | val Icons.Hedvig: HedvigIcons
7 | get() = HedvigIcons
8 |
9 | object HedvigIcons
10 |
--------------------------------------------------------------------------------
/app/core/core-markdown/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/core/core-markdown/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/core/core-markdown/src/main/kotlin/com/hedvig/android/core/markdown/MarkdownString.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.markdown
2 |
3 | @JvmInline
4 | value class MarkdownString(val string: String)
5 |
--------------------------------------------------------------------------------
/app/core/core-resources/.gitignore:
--------------------------------------------------------------------------------
1 | #Generated from `./gradlew downloadStrings` therefore ignored
2 | src/main/res/**/strings.xml
--------------------------------------------------------------------------------
/app/core/core-resources/README.md:
--------------------------------------------------------------------------------
1 | ## core-resources
2 |
3 | Module to contain the strings generated from `./gradlew downloadStrings`
4 |
5 | Exists since we're automatically getting the strings from lokalise, and they need to be shared across all modules
6 | which may want to access them. This should depend on no other modules and have all modules which need access to string
7 | resources depend on it.
8 |
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/drawable-mdpi/pillow_hedvig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/core/core-resources/src/main/res/drawable-mdpi/pillow_hedvig.png
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/drawable-night-mdpi/pillow_hedvig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/core/core-resources/src/main/res/drawable-night-mdpi/pillow_hedvig.png
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/font/hedvig_letters_small.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/core/core-resources/src/main/res/font/hedvig_letters_small.otf
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/font/hedvig_letters_standard.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/core/core-resources/src/main/res/font/hedvig_letters_standard.otf
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #fafafa
4 |
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #121212
4 |
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/core/core-resources/src/main/res/values/static_strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Svenska
3 | English
4 |
5 |
--------------------------------------------------------------------------------
/app/core/core-retrofit/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.retrofitArrow)
8 | api(projects.coreCommonPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/core/core-ui-data/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | compose()
9 | }
10 |
11 | dependencies {
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(libs.kotlinx.serialization.core)
14 | implementation(projects.apolloOctopusPublic)
15 | }
16 |
--------------------------------------------------------------------------------
/app/core/core-ui-data/src/main/kotlin/com/hedvig/android/core/uidata/UiFile.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.core.uidata
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | @Serializable
6 | data class UiFile(
7 | val name: String,
8 | val localPath: String?,
9 | val url: String?,
10 | val mimeType: String,
11 | val id: String,
12 | )
13 |
--------------------------------------------------------------------------------
/app/data/data-addons/src/main/graphql/TravelAddonBannerQuery.graphql:
--------------------------------------------------------------------------------
1 | query TravelAddonBanner($flow: UpsellTravelAddonFlow!) {
2 | currentMember {
3 | upsellTravelAddonBanner (flow: $flow) {
4 | badges
5 | contractIds
6 | descriptionDisplayName
7 | titleDisplayName
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/data/data-addons/src/main/kotlin/com/hedvig/android/data/addons/data/GetTravelAddonBannerInfoUseCaseProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.addons.data
2 |
3 | import com.hedvig.android.core.demomode.DemoManager
4 | import com.hedvig.android.core.demomode.ProdOrDemoProvider
5 |
6 | class GetTravelAddonBannerInfoUseCaseProvider(
7 | override val demoManager: DemoManager,
8 | override val demoImpl: GetTravelAddonBannerInfoUseCase,
9 | override val prodImpl: GetTravelAddonBannerInfoUseCase,
10 | ) : ProdOrDemoProvider
11 |
--------------------------------------------------------------------------------
/app/data/data-changetier/src/main/graphql/DeductibleFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment DeductibleFragment on Deductible {
2 | amount {
3 | ...MoneyFragment
4 | }
5 | displayText
6 | percentage
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-changetier/src/main/graphql/MutationCommitChangeTierDeductible.graphql:
--------------------------------------------------------------------------------
1 | mutation ChangeTierDeductibleCommitIntent($quoteId: ID!) {
2 | changeTierDeductibleCommitIntent(input: {quoteId: $quoteId}) {
3 | userError {
4 | message
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-changetier/src/main/kotlin/com/hedvig/android/data/changetier/data/TierConstants.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.changetier.data
2 |
3 | internal object TierConstants {
4 | val CURRENT_ID = "Agreement_to_change_ID"
5 | }
6 |
--------------------------------------------------------------------------------
/app/data/data-chat/src/main/kotlin/com/hedvig/android/data/chat/database/RemoteKeyEntity.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.chat.database
2 |
3 | import androidx.room.Entity
4 | import androidx.room.PrimaryKey
5 | import com.benasher44.uuid.Uuid
6 |
7 | @Entity(tableName = "remote_keys")
8 | data class RemoteKeyEntity(
9 | @PrimaryKey
10 | val conversationId: Uuid,
11 | val olderToken: String?,
12 | val newerToken: String?,
13 | )
14 |
--------------------------------------------------------------------------------
/app/data/data-chat/src/main/kotlin/com/hedvig/android/data/chat/database/converter/InstantConverter.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.chat.database.converter
2 |
3 | import androidx.room.TypeConverter
4 | import kotlinx.datetime.Instant
5 |
6 | class InstantConverter {
7 | @TypeConverter
8 | fun parse(value: String): Instant {
9 | return Instant.parse(value)
10 | }
11 |
12 | @TypeConverter
13 | fun toString(value: Instant): String {
14 | return value.toString()
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/data/data-chat/src/main/kotlin/com/hedvig/android/data/chat/database/converter/UuidConverter.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.chat.database.converter
2 |
3 | import androidx.room.TypeConverter
4 | import com.benasher44.uuid.Uuid
5 |
6 | class UuidConverter {
7 | @TypeConverter
8 | fun parse(value: String): Uuid {
9 | return Uuid.fromString(value)
10 | }
11 |
12 | @TypeConverter
13 | fun toString(value: Uuid): String {
14 | return value.toString()
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/FragmentAudioContentFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment AudioContentFragment on FlowClaimAudioContent {
2 | audioUrl
3 | signedUrl
4 | }
5 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/FragmentCheckoutMethodFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment CheckoutMethodFragment on FlowClaimCheckoutMethod {
2 | id
3 | ...AutomaticAutogiroPayoutFragment
4 | }
5 |
6 | fragment AutomaticAutogiroPayoutFragment on FlowClaimAutomaticAutogiroPayout {
7 | id
8 | displayName
9 | amount {
10 | ...MoneyFragment
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimAudioRecordingNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimAudioRecordingNext($audioUrl: Url, $freeText: String, $context: FlowContext!) {
2 | flowClaimAudioRecordingNext(input: { audioUrl: $audioUrl, freeText: $freeText }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimConfirmEmergency.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimConfirmEmergency($isUrgentEmergency: Boolean!, $context: FlowContext!) {
2 | flowClaimConfirmEmergencyNext(input: { confirmEmergency: $isUrgentEmergency }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimContractNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimContractNext($contractId: UUID, $context: FlowContext!) {
2 | flowClaimContractSelectNext(input: { contractId: $contractId }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimDateOfOccurrenceNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimDateOfOccurrenceNext($dateOfOccurrence: Date, $context: FlowContext!) {
2 | flowClaimDateOfOccurrenceNext(input: { dateOfOccurrence: $dateOfOccurrence }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimDateOfOccurrencePlusLocationNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimDateOfOccurrencePlusLocationNext(
2 | $dateOfOccurrence: Date,
3 | $location: ID,
4 | $context: FlowContext!
5 | ) {
6 | flowClaimDateOfOccurrencePlusLocationNext(
7 | input: {
8 | dateOfOccurrence: $dateOfOccurrence,
9 | location: $location
10 | },
11 | context: $context
12 | ) {
13 | id
14 | context
15 | ...ClaimFlowStepFragment
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimFileUploadNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimFileUploadNext($input: FlowClaimFileUploadInput!, $context: FlowContext!) {
2 | flowClaimFileUploadNext(input: $input, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimLocationNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimLocationNext($location: ID, $context: FlowContext!) {
2 | flowClaimLocationNext(input: { location: $location }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimPhoneNumberNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimPhoneNumberNext($phoneNumber: String!, $context: FlowContext!) {
2 | flowClaimPhoneNumberNext(input: { phoneNumber: $phoneNumber }, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimSingleItemCheckoutNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimSingleItemCheckoutNext($amount: Float!, $context: FlowContext!) {
2 | flowClaimSingleItemCheckoutNext(input: { automaticAutogiro: { amount: $amount } }, context: $context) {
3 | id
4 | context
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimSingleItemNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimSingleItemNext(
2 | $input: FlowClaimSingleItemInput!,
3 | $context: FlowContext!
4 | ) {
5 | flowClaimSingleItemNext(input: $input, context: $context) {
6 | id
7 | context
8 | ...ClaimFlowStepFragment
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimStart.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimStart($entrypointId: ID, $entryPointOptionId: ID, $supportedSteps: [ID!]) {
2 | flowClaimStart(input: { entrypointId: $entrypointId, entrypointOptionId: $entryPointOptionId, supportedSteps: $supportedSteps }, context: null) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/MutationFlowClaimSummaryNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowClaimSummaryNext($input: FlowClaimSummaryInput!, $context: FlowContext!) {
2 | flowClaimSummaryNext(input: $input, context: $context) {
3 | id
4 | context
5 | ...ClaimFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/triaging/FragmentEntryPointFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment EntryPoint on Entrypoint {
2 | id
3 | displayName
4 | options {
5 | id
6 | displayName
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/graphql/triaging/QueryEntrypointGroups.graphql:
--------------------------------------------------------------------------------
1 | query EntryPointGroups {
2 | entrypointGroups(type: CLAIM) {
3 | id
4 | displayName
5 | entrypoints {
6 | ...EntryPoint
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/kotlin/com/hedvig/android/data/claimflow/model/AudioUrl.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.claimflow.model
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | @Serializable
6 | @JvmInline
7 | value class AudioUrl(val value: String)
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-flow/src/main/kotlin/com/hedvig/android/data/claimflow/model/FlowId.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.claimflow.model
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | @Serializable
6 | @JvmInline
7 | value class FlowId(val value: String)
8 |
--------------------------------------------------------------------------------
/app/data/data-claim-triaging/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.kotlinx.serialization.core)
12 | implementation(projects.apolloOctopusPublic)
13 | }
14 |
--------------------------------------------------------------------------------
/app/data/data-claim-triaging/src/main/kotlin/com/hedvig/android/data/claimtriaging/ClaimGroup.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.claimtriaging
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | data class ClaimGroup(
6 | val id: ClaimGroupId,
7 | val displayName: String,
8 | val entryPoints: List,
9 | )
10 |
11 | @Serializable
12 | @JvmInline
13 | value class ClaimGroupId(val id: String)
14 |
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | androidResources()
8 | }
9 |
10 | dependencies {
11 | implementation(projects.coreResources)
12 | implementation(projects.dataContractPublic)
13 | }
14 |
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_accident.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_accident.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_car.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_car.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_cat.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_cat.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_dog.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_dog.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_homeowner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_homeowner.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_rental.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_rental.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_student.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_student.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_villa.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/gradient_villa.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_accident.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_accident.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_car.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_car.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_cat.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_cat.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_dog.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_dog.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_home.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_homeowner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_homeowner.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_pet.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_pet.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_rental.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_rental.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_student.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_student.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_villa.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/data/data-contract/data-contract-android/src/main/res/drawable-nodpi/ic_pillow_villa.webp
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | }
9 |
--------------------------------------------------------------------------------
/app/data/data-contract/data-contract-public/src/main/kotlin/com/hedvig/android/data/contract/CrossSell.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.contract
2 |
3 | data class CrossSell(
4 | val id: String,
5 | val title: String,
6 | val subtitle: String,
7 | val storeUrl: String,
8 | val type: CrossSellType,
9 | ) {
10 | enum class CrossSellType {
11 | PET,
12 | HOME,
13 | ACCIDENT,
14 | CAR,
15 | UNKNOWN,
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/data/data-conversations/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | apollo("octopus")
8 | }
9 |
10 | dependencies {
11 | implementation(libs.apollo.normalizedCache)
12 | implementation(libs.arrow.core)
13 | implementation(libs.koin.core)
14 | implementation(projects.apolloCore)
15 | implementation(projects.apolloOctopusPublic)
16 | }
17 |
--------------------------------------------------------------------------------
/app/data/data-conversations/src/main/graphql/QueryCbmNumberOfChatMessages.graphql:
--------------------------------------------------------------------------------
1 | query CbmNumberOfChatMessages {
2 | currentMember {
3 | legacyConversation {
4 | messagePage(newerToken: null, olderToken: null) {
5 | messages {
6 | id
7 | sender
8 | }
9 | }
10 | }
11 | conversations {
12 | isOpen
13 | newestMessage {
14 | # noinspection ApolloUnusedField
15 | id
16 | }
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/data/data-conversations/src/main/kotlin/com/hedvig/android/data/conversations/di/DataConversationsModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.conversations.di
2 |
3 | import com.apollographql.apollo.ApolloClient
4 | import com.hedvig.android.data.conversations.HasAnyActiveConversationUseCase
5 | import org.koin.dsl.module
6 |
7 | val dataConversationsModule = module {
8 | single { HasAnyActiveConversationUseCase(get()) }
9 | }
10 |
--------------------------------------------------------------------------------
/app/data/data-cross-sell-after-claim-closed/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | apollo("octopus")
8 | }
9 |
10 | dependencies {
11 | implementation(libs.arrow.core)
12 | implementation(libs.coroutines.core)
13 | implementation(libs.koin.core)
14 | implementation(projects.apolloCore)
15 | implementation(projects.apolloOctopusPublic)
16 | implementation(projects.coreCommonPublic)
17 | implementation(projects.dataCrossSellAfterFlow)
18 | }
19 |
--------------------------------------------------------------------------------
/app/data/data-cross-sell-after-claim-closed/src/main/graphql/MutationClaimAcknowledgeClosedStatus.graphql:
--------------------------------------------------------------------------------
1 | mutation ClaimAcknowledgeClosedStatus($claimId: ID!) {
2 | claimAcknowledgeClosedStatus(id: $claimId) {
3 | userError {
4 | message
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/data/data-cross-sell-after-flow/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.arrow.core)
8 | implementation(libs.coroutines.core)
9 | implementation(libs.koin.core)
10 | implementation(projects.coreCommonPublic)
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-cross-sell-after-flow/src/main/kotlin/com/hedvig/android/data/cross/sell/after/flow/di/DataCrossSellAfterFlowModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.cross.sell.after.flow.di
2 |
3 | import com.hedvig.android.data.cross.sell.after.flow.CrossSellAfterFlowRepository
4 | import com.hedvig.android.data.cross.sell.after.flow.CrossSellAfterFlowRepositoryImpl
5 | import org.koin.dsl.module
6 |
7 | val dataCrossSellAfterFlowModule = module {
8 | single {
9 | CrossSellAfterFlowRepositoryImpl()
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-display-items/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.kotlinx.datetime)
8 | }
9 |
--------------------------------------------------------------------------------
/app/data/data-paying-member/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | apollo("octopus")
8 | }
9 |
10 | dependencies {
11 | implementation(libs.arrow.core)
12 | implementation(libs.koin.core)
13 | implementation(projects.apolloCore)
14 | implementation(projects.apolloOctopusPublic)
15 | implementation(projects.coreCommonPublic)
16 | implementation(projects.coreDemoMode)
17 | implementation(projects.dataContractPublic)
18 | }
19 |
--------------------------------------------------------------------------------
/app/data/data-paying-member/src/main/graphql/ActiveInsuranceContractTypes.graphql:
--------------------------------------------------------------------------------
1 | query ActiveInsuranceContractTypes {
2 | currentMember {
3 | activeContracts {
4 | currentAgreement {
5 | productVariant {
6 | typeOfContract
7 | }
8 | }
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-paying-member/src/main/kotlin/com/hedvig/android/data/paying/member/GetOnlyHasNonPayingContractsUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.paying.member
2 |
3 | import arrow.core.Either
4 | import com.hedvig.android.core.common.ErrorMessage
5 |
6 | /**
7 | * Returns true when all the member's active contracts are non-paying contracts.
8 | */
9 | interface GetOnlyHasNonPayingContractsUseCase {
10 | suspend fun invoke(): Either
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-paying-member/src/main/kotlin/com/hedvig/android/data/paying/member/GetOnlyHasNonPayingContractsUseCaseDemo.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.data.paying.member
2 |
3 | import arrow.core.Either
4 | import arrow.core.right
5 | import com.hedvig.android.core.common.ErrorMessage
6 |
7 | internal class GetOnlyHasNonPayingContractsUseCaseDemo : GetOnlyHasNonPayingContractsUseCase {
8 | override suspend fun invoke(): Either {
9 | return false.right()
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-product-variant/data-product-variant-android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/data/data-product-variant/data-product-variant-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(projects.apolloOctopusPublic)
8 | implementation(projects.coreResources)
9 | implementation(projects.dataContractAndroid)
10 | implementation(projects.dataContractPublic)
11 | implementation(projects.dataProductVariantPublic)
12 | }
13 |
--------------------------------------------------------------------------------
/app/data/data-product-variant/data-product-variant-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | }
9 |
10 | dependencies {
11 | api(projects.dataContractPublic)
12 | implementation(libs.kotlinx.serialization.core)
13 | implementation(projects.apolloOctopusPublic)
14 | }
15 |
--------------------------------------------------------------------------------
/app/data/data-settings-datastore/data-settings-datastore-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.datastore.core)
8 | implementation(libs.androidx.datastore.preferencesCore)
9 | implementation(libs.coroutines.core)
10 | implementation(libs.koin.core)
11 | implementation(projects.theme)
12 | }
13 |
--------------------------------------------------------------------------------
/app/data/data-settings-datastore/data-settings-datastore-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.coroutines.core)
8 | implementation(libs.turbine)
9 | implementation(projects.dataSettingsDatastorePublic)
10 | implementation(projects.theme)
11 | }
12 |
--------------------------------------------------------------------------------
/app/data/data-termination/src/main/graphql/QueryContractsToTerminate.graphql:
--------------------------------------------------------------------------------
1 | query ContractsToTerminate {
2 | currentMember {
3 | activeContracts {
4 | id
5 | exposureDisplayName
6 | terminationDate
7 | currentAgreement {
8 | productVariant {
9 | displayName
10 | typeOfContract
11 | }
12 | }
13 | }
14 | pendingContracts {
15 | productVariant {
16 | displayName
17 | typeOfContract
18 | }
19 | id
20 | exposureDisplayName
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/database/database-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.koin.core)
8 | implementation(libs.room.runtime)
9 | implementation(projects.coreCommonPublic)
10 | implementation(projects.databaseCore)
11 | }
12 |
--------------------------------------------------------------------------------
/app/database/database-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | room { resolve("app/database/schemas") }
8 | }
9 |
10 | dependencies {
11 | implementation(libs.coroutines.core)
12 | implementation(libs.koin.core)
13 | implementation(libs.kotlinx.datetime)
14 | implementation(libs.room.paging)
15 | implementation(libs.room.runtime)
16 | implementation(projects.dataChat)
17 | }
18 |
--------------------------------------------------------------------------------
/app/database/database-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.junit)
8 | api(libs.room.runtime)
9 | api(libs.sqlite.bundled)
10 | }
11 |
--------------------------------------------------------------------------------
/app/datadog/datadog-android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/datadog/datadog-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.coroutines.core)
8 | }
9 |
--------------------------------------------------------------------------------
/app/datadog/datadog-core/src/main/kotlin/com/hedvig/android/datadog/core/attributestracking/DatadogAttributeProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.datadog.core.attributestracking
2 |
3 | import kotlinx.coroutines.flow.Flow
4 |
5 | interface DatadogAttributeProvider {
6 | /**
7 | * The implementation must return something, even null, immediatelly. To avoid blocking the rest of the attributes
8 | * from being read in the [combine] which combines all of them together
9 | */
10 | fun provide(): Flow>
11 | }
12 |
--------------------------------------------------------------------------------
/app/datadog/datadog-core/src/main/kotlin/com/hedvig/android/datadog/core/attributestracking/DatadogMemberIdProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.datadog.core.attributestracking
2 |
3 | import kotlinx.coroutines.flow.Flow
4 |
5 | interface DatadogMemberIdProvider {
6 | /**
7 | * The implementation must return something, even null, immediatelly. To avoid blocking the rest of the attributes
8 | * from being read in the [combine] which combines all of them together
9 | */
10 | fun provide(): Flow>
11 | }
12 |
--------------------------------------------------------------------------------
/app/datadog/datadog-demo-tracking/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.coroutines.core)
8 | implementation(libs.koin.core)
9 | implementation(projects.coreCommonPublic)
10 | implementation(projects.coreDemoMode)
11 | implementation(projects.datadogCore)
12 | implementation(projects.initializable)
13 | }
14 |
--------------------------------------------------------------------------------
/app/design-system/design-system-api/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(platform(libs.androidx.compose.bom))
8 | implementation(libs.androidx.compose.runtime)
9 | implementation(libs.androidx.compose.material3)
10 | }
11 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/ContentColor.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig
2 |
3 | import androidx.compose.runtime.compositionLocalOf
4 | import androidx.compose.ui.graphics.Color
5 |
6 | val LocalContentColor = compositionLocalOf { Color.Black }
7 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/IconResource.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig
2 |
3 | import androidx.compose.ui.graphics.vector.ImageVector
4 |
5 | sealed interface IconResource {
6 | data class Vector(val imageVector: ImageVector) : IconResource
7 |
8 | data class Painter(val painterResId: Int) : IconResource
9 | }
10 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/icon/HedvigIcons.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.icon
2 |
3 | object HedvigIcons
4 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/AnimationTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal object AnimationTokens {
4 | const val fastAnimationDuration: Int = 200
5 | const val pulsatingAnimationDuration: Int = 200
6 | const val pulsatingAnimationDurationExit: Int = 800
7 | const val errorPulsatingDuration: Int = 400
8 | }
9 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/ScaffoldTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal object ScaffoldTokens {
4 | val BackgroundColor = ColorSchemeKeyTokens.BackgroundPrimary
5 | }
6 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/ScrimTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal object ScrimTokens {
4 | val ContainerColor = ColorSchemeKeyTokens.Scrim
5 | const val ContainerOpacity = 0.32f
6 | }
7 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/ShapeKeyTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal enum class ShapeKeyTokens {
4 | CornerXXLarge,
5 | CornerXLarge,
6 | CornerLarge,
7 | CornerMedium,
8 | CornerSmall,
9 | CornerXSmall,
10 | CornerNone,
11 | CornerXLargeTop,
12 | CornerXSmallTop,
13 | CornerXSmallBottom,
14 | }
15 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/StateTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal object StateTokens {
4 | const val DraggedStateLayerOpacity = 0.16f
5 | const val FocusStateLayerOpacity = 0.1f
6 | const val HoverStateLayerOpacity = 0.08f
7 | const val PressedStateLayerOpacity = 0.1f
8 | }
9 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/TopAppBarTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | import androidx.compose.ui.unit.dp
4 |
5 | internal object TopAppBarTokens {
6 | val ContainerColor = ColorSchemeKeyTokens.BackgroundPrimary
7 | val ContentColor = ColorSchemeKeyTokens.TextPrimary
8 | val ContainerHeight = 64.dp
9 | val ContentHorizontalPadding = 16.dp
10 | val IconTitleSpacerWidth = 12.dp
11 | val TextStyle = TypographyKeyTokens.HeadlineSmall
12 | }
13 |
--------------------------------------------------------------------------------
/app/design-system/design-system-hedvig/src/main/kotlin/com/hedvig/android/design/system/hedvig/tokens/TypographyKeyTokens.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.design.system.hedvig.tokens
2 |
3 | internal enum class TypographyKeyTokens {
4 | BodyLarge,
5 | BodyMedium,
6 | BodySmall,
7 | DisplayLarge,
8 | DisplayMedium,
9 | DisplaySmall,
10 | HeadlineLarge,
11 | HeadlineMedium,
12 | HeadlineSmall,
13 | Label,
14 | FinePrint,
15 | }
16 |
--------------------------------------------------------------------------------
/app/design-system/design-system-internals/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.foundation)
12 | implementation(libs.androidx.compose.foundationLayout)
13 | implementation(libs.androidx.compose.material3)
14 | implementation(libs.androidx.compose.uiGraphics)
15 | implementation(projects.composeUi)
16 | implementation(projects.coreResources)
17 | implementation(projects.designSystemApi)
18 | }
19 |
--------------------------------------------------------------------------------
/app/design-system/design-system-internals/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-addon-purchase/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-addon-purchase/src/main/graphql/InsurancesForTravelAddonQuery.graphql:
--------------------------------------------------------------------------------
1 | query InsurancesForTravelAddon {
2 | currentMember {
3 | activeContracts {
4 | id
5 | exposureDisplayName
6 | currentAgreement {
7 | productVariant {
8 | displayName
9 | typeOfContract
10 | }
11 | }
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/feature/feature-addon-purchase/src/main/graphql/UpsellTravelAddonActivateMutation.graphql:
--------------------------------------------------------------------------------
1 | mutation UpsellTravelAddonActivate($addonId: ID!, $quoteId: ID!) {
2 | upsellTravelAddonActivate(addonId: $addonId, quoteId: $quoteId) {
3 | userError {
4 | message
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/graphql/FragmentConversationInfo.graphql:
--------------------------------------------------------------------------------
1 | fragment ConversationInfo on Conversation {
2 | id
3 | createdAt
4 | isLegacy
5 | claim {
6 | id
7 | claimType
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/graphql/MutationConversationSendMessage.graphql:
--------------------------------------------------------------------------------
1 | mutation ConversationSendMessage($conversationId: UUID!, $messageId: UUID!, $text: String, $fileUploadToken: String) {
2 | conversationSendMessage(input: {id: $conversationId, messageId: $messageId, text: $text, fileUploadToken: $fileUploadToken}) {
3 | message {
4 | ...ChatMessageFragment
5 | }
6 | userError {
7 | message
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/graphql/MutationConversationStart.graphql:
--------------------------------------------------------------------------------
1 | mutation ConversationStart($id: UUID!) {
2 | conversationStart(input: { id: $id }) {
3 | ...ConversationInfo
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/graphql/QueryConversationInfo.graphql:
--------------------------------------------------------------------------------
1 | query ConversationInfo($id: UUID!) {
2 | conversation(id: $id) {
3 | ...ConversationInfo
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/graphql/QueryConversationStatusMessage.graphql:
--------------------------------------------------------------------------------
1 | query ConversationStatusMessage($conversationId: UUID!) {
2 | conversation(id: $conversationId) {
3 | statusMessage
4 | isOpen
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app/feature/feature-chat/src/main/kotlin/com/hedvig/android/feature/chat/data/GetCbmChatRepositoryProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.chat.data
2 |
3 | import com.hedvig.android.core.demomode.DemoManager
4 | import com.hedvig.android.core.demomode.ProdOrDemoProvider
5 |
6 | internal class GetCbmChatRepositoryProvider(
7 | override val demoManager: DemoManager,
8 | override val demoImpl: CbmChatRepository,
9 | override val prodImpl: CbmChatRepository,
10 | ) : ProdOrDemoProvider
11 |
--------------------------------------------------------------------------------
/app/feature/feature-choose-tier/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-choose-tier/src/main/graphql/AgreementFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment GeneralAgreementFragment on Agreement {
2 | displayItems {
3 | displaySubtitle
4 | displayTitle
5 | displayValue
6 | }
7 | premium {
8 | ...MoneyFragment
9 | }
10 | deductible {
11 | displayText
12 | percentage
13 | amount {
14 | ...MoneyFragment
15 | }
16 | }
17 | productVariant {
18 | ...ProductVariantFragment
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/feature/feature-choose-tier/src/main/graphql/CurrentContractQuery.graphql:
--------------------------------------------------------------------------------
1 | query CurrentContractsForTierChange {
2 | currentMember {
3 | activeContracts {
4 | id
5 | exposureDisplayName
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/feature/feature-choose-tier/src/main/graphql/GetContractsEligibleForTierChangeQuery.graphql:
--------------------------------------------------------------------------------
1 | query ContractsEligibleForTierChange {
2 | currentMember {
3 | activeContracts {
4 | id
5 | supportsChangeTier
6 | exposureDisplayName
7 | currentAgreement {
8 | productVariant {
9 | ...ProductVariantFragment
10 | }
11 | }
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/feature/feature-claim-details/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-claim-details/src/main/graphql/QueryClaims.graphql:
--------------------------------------------------------------------------------
1 | query Claims {
2 | currentMember {
3 | claims {
4 | ...ClaimFragment
5 | conversation {
6 | id
7 | unreadMessageCount
8 | }
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/feature/feature-claim-triaging/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-connect-payment-trustly/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-connect-payment-trustly/src/main/graphql/InitiateTrustlyConnectPaymentSession.graphql:
--------------------------------------------------------------------------------
1 | mutation InitiateTrustlyConnectPaymentSession($successUrl: String!, $failureUrl: String!) {
2 | registerDirectDebit2(clientContext: { successUrl: $successUrl, failureUrl: $failureUrl }) {
3 | url
4 | orderId
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app/feature/feature-cross-sell-sheet/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-cross-sell-sheet/src/main/graphql/QueryBottomSheetCrossSells.graphql:
--------------------------------------------------------------------------------
1 | query BottomSheetCrossSells {
2 | currentMember {
3 | crossSells {
4 | id
5 | title
6 | description
7 | storeUrl
8 | type
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/feature/feature-delete-account/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-delete-account/src/main/graphql/MutationMemberDeletionRequest.graphql:
--------------------------------------------------------------------------------
1 | mutation MemberDeletionRequest {
2 | memberDeletionRequest {
3 | message
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-delete-account/src/main/graphql/QueryDeleteAccountState.graphql:
--------------------------------------------------------------------------------
1 | query DeleteAccountState {
2 | currentMember {
3 | claims {
4 | status
5 | }
6 | activeContracts {
7 | # noinspection ApolloUnusedField
8 | __typename
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/feature/feature-delete-account/src/main/kotlin/com/hedvig/android/feature/deleteaccount/navigation/DeleteAccountDestination.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.deleteaccount.navigation
2 |
3 | import com.hedvig.android.navigation.common.Destination
4 | import kotlinx.serialization.Serializable
5 |
6 | @Serializable
7 | data object DeleteAccountDestination : Destination
8 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/graphql/MutationCommitMidtermChange.graphql:
--------------------------------------------------------------------------------
1 | mutation CommitMidtermChange($intentId: ID!) {
2 | midtermChangeIntentCommit(intentId: $intentId) {
3 | intent {
4 | state
5 | activationDate
6 | }
7 | userError {
8 | message
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/graphql/MutationCreateMidtermChange.graphql:
--------------------------------------------------------------------------------
1 | mutation CreateMidtermChange($contractId: ID!, $input: MidtermChangeIntentCreateInput!) {
2 | midtermChangeIntentCreate(contractId: $contractId, input: $input) {
3 | intent {
4 | id
5 | currentPremium {
6 | ...MoneyFragment
7 | }
8 | newPremium {
9 | ...MoneyFragment
10 | }
11 | activationDate
12 | }
13 | userError {
14 | message
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/graphql/QueryCoInsured.graphql:
--------------------------------------------------------------------------------
1 | query CoInsured {
2 | currentMember {
3 | firstName
4 | lastName
5 | ssn
6 | activeContracts {
7 | id
8 | coInsured {
9 | firstName
10 | lastName
11 | birthdate
12 | ssn
13 | hasMissingInfo
14 | activatesOn
15 | terminatesOn
16 | }
17 | }
18 | }
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/graphql/QueryEligibleContractsForEditCoInsured.graphql:
--------------------------------------------------------------------------------
1 | query EligibleContractsForEditCoInsured {
2 | currentMember {
3 | activeContracts {
4 | id
5 | exposureDisplayName
6 | currentAgreement {
7 | productVariant {
8 | displayName
9 | }
10 | }
11 | supportsCoInsured
12 | coInsured {
13 | hasMissingInfo
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/feature/feature-edit-coinsured/src/main/graphql/QueryPersonalInformation.graphql:
--------------------------------------------------------------------------------
1 | query PersonalInformation($ssn: String!) {
2 | personalInformation(input: { personalNumber: $ssn }) {
3 | firstName
4 | lastName
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app/feature/feature-force-upgrade/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(projects.coreResources)
12 | implementation(projects.designSystemHedvig)
13 | }
14 |
--------------------------------------------------------------------------------
/app/feature/feature-force-upgrade/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-forever/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-forever/src/main/kotlin/com/hedvig/android/feature/forever/navigation/ForeverDestination.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.forever.navigation
2 |
3 | import com.hedvig.android.navigation.common.Destination
4 | import kotlinx.serialization.Serializable
5 |
6 | sealed interface ForeverDestination {
7 | @Serializable
8 | data object Graph : ForeverDestination, Destination
9 |
10 | @Serializable
11 | data object Forever : ForeverDestination, Destination
12 | }
13 |
--------------------------------------------------------------------------------
/app/feature/feature-help-center/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-help-center/src/main/graphql/QueryAvailableSelfServiceOnContracts.graphql:
--------------------------------------------------------------------------------
1 | query AvailableSelfServiceOnContracts {
2 | currentMember {
3 | activeContracts {
4 | id
5 | exposureDisplayName
6 | currentAgreement {
7 | productVariant {
8 | displayName
9 | }
10 | }
11 | supportsCoInsured
12 | coInsured {
13 | hasMissingInfo
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/feature/feature-help-center/src/main/graphql/QueryHelpCenterFAQ.graphql:
--------------------------------------------------------------------------------
1 | query HelpCenterFAQ {
2 | currentMember {
3 | memberFAQ {
4 | topics {
5 | id
6 | title
7 | commonFAQ {
8 | ...FAQItemFragment
9 | }
10 | otherFAQ {
11 | ...FAQItemFragment
12 | }
13 | }
14 | commonFAQ {
15 | ...FAQItemFragment
16 | }
17 | }
18 | }
19 | }
20 |
21 | fragment FAQItemFragment on MemberFAQItem {
22 | id
23 | question
24 | answer
25 | }
26 |
--------------------------------------------------------------------------------
/app/feature/feature-home/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-home/src/main/graphql/QueryUnreadMessageCount.graphql:
--------------------------------------------------------------------------------
1 | query UnreadMessageCount {
2 | currentMember {
3 | conversations {
4 | unreadMessageCount
5 | }
6 | legacyConversation {
7 | unreadMessageCount
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-image-viewer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-image-viewer/src/main/kotlin/com/hedvig/android/feature/imageviewer/navigation/ImageViewer.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.imageviewer.navigation
2 |
3 | import com.hedvig.android.navigation.common.Destination
4 | import kotlinx.serialization.Serializable
5 |
6 | @Serializable
7 | data class ImageViewer(val imageUrl: String, val cacheKey: String) : Destination
8 |
--------------------------------------------------------------------------------
/app/feature/feature-insurance-certificate/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-insurance-certificate/src/main/graphql/InsuranceEvidenceCreate.graphql:
--------------------------------------------------------------------------------
1 | mutation InsuranceEvidenceCreate($input: InsuranceEvidenceInput!) {
2 | insuranceEvidenceCreate(input: $input) {
3 | userError {
4 | message
5 | }
6 | insuranceEvidenceInformation {
7 | signedUrl
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-insurance-certificate/src/main/graphql/InsuranceEvidenceInitialData.graphql:
--------------------------------------------------------------------------------
1 | query InsuranceEvidenceInitialData {
2 | currentMember {
3 | email
4 | memberActions {
5 | isCreatingOfInsuranceEvidenceEnabled
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/feature/feature-insurances/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-insurances/src/main/graphql/QueryCrossSells.graphql:
--------------------------------------------------------------------------------
1 | query CrossSells {
2 | currentMember {
3 | id
4 | crossSells {
5 | id
6 | title
7 | description
8 | storeUrl
9 | type
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/CancelInsuranceData.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.insurances.data
2 |
3 | data class CancelInsuranceData(
4 | val contractId: String,
5 | )
6 |
--------------------------------------------------------------------------------
/app/feature/feature-insurances/src/main/kotlin/com/hedvig/android/feature/insurances/data/GetCrossSellsUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.insurances.data
2 |
3 | import arrow.core.Either
4 | import com.hedvig.android.core.common.ErrorMessage
5 | import octopus.CrossSellsQuery
6 |
7 | internal interface GetCrossSellsUseCase {
8 | suspend fun invoke(): Either>
9 | }
10 |
--------------------------------------------------------------------------------
/app/feature/feature-login/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-login/src/main/kotlin/com/hedvig/android/feature/login/marketing/MarketingViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.login.marketing
2 |
3 | import com.hedvig.android.language.LanguageService
4 | import com.hedvig.android.molecule.android.MoleculeViewModel
5 |
6 | internal class MarketingViewModel(
7 | languageService: LanguageService,
8 | ) : MoleculeViewModel(
9 | MarketingUiState.Loading,
10 | MarketingPresenter(languageService),
11 | )
12 |
--------------------------------------------------------------------------------
/app/feature/feature-login/src/main/res/drawable-nodpi/login_still_9x16.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/app/feature/feature-login/src/main/res/drawable-nodpi/login_still_9x16.webp
--------------------------------------------------------------------------------
/app/feature/feature-movingflow/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-movingflow/src/main/graphql/FragmentMoveIntent.graphql:
--------------------------------------------------------------------------------
1 | # Consider inlining this fragment
2 | fragment MoveIntentFragment on MoveIntent {
3 | id
4 | maxHouseNumberCoInsured
5 | maxHouseSquareMeters
6 | maxApartmentNumberCoInsured
7 | maxApartmentSquareMeters
8 | isApartmentAvailableforStudent
9 | extraBuildingTypes
10 | currentHomeAddresses {
11 | id
12 | oldAddressCoverageDurationDays
13 | displayTitle
14 | displaySubtitle
15 | suggestedNumberCoInsured
16 | maxMovingDate
17 | minMovingDate
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/feature/feature-movingflow/src/main/graphql/MutationMoveIntentCommit.graphql:
--------------------------------------------------------------------------------
1 | mutation MoveIntentV2Commit($intentId: ID!, $homeQuoteId: ID!, $excludedAddons: [ID!]!) {
2 | moveIntentCommit(intentId: $intentId, homeQuoteId: $homeQuoteId, removedAddons: $excludedAddons) {
3 | moveIntent {
4 | id
5 | }
6 | userError {
7 | message
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-movingflow/src/main/graphql/MutationMoveIntentCreate.graphql:
--------------------------------------------------------------------------------
1 | mutation MoveIntentV2Create {
2 | moveIntentCreate {
3 | moveIntent {
4 | ...MoveIntentFragment
5 | }
6 | userError {
7 | message
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-movingflow/src/main/kotlin/com/hedvig/android/feature/movingflow/data/HousingType.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.movingflow.data
2 |
3 | internal enum class HousingType {
4 | ApartmentRent,
5 | ApartmentOwn,
6 | Villa,
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-odyssey/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-odyssey/src/main/graphql/AllContractsQuery.graphql:
--------------------------------------------------------------------------------
1 | query AllContracts {
2 | currentMember {
3 | pendingContracts {
4 | id
5 | exposureDisplayName
6 | }
7 | terminatedContracts {
8 | ...ShortContractInfoFragment
9 | }
10 | activeContracts {
11 | ...ShortContractInfoFragment
12 | }
13 | }
14 | }
15 |
16 | fragment ShortContractInfoFragment on Contract {
17 | id
18 | exposureDisplayName
19 | }
20 |
--------------------------------------------------------------------------------
/app/feature/feature-odyssey/src/main/kotlin/com/hedvig/android/feature/odyssey/navigation/ClaimsFlowDestination.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.odyssey.navigation
2 |
3 | import com.hedvig.android.navigation.common.Destination
4 | import kotlinx.serialization.Serializable
5 |
6 | @Serializable
7 | data object ClaimsFlowGraphDestination : Destination
8 |
--------------------------------------------------------------------------------
/app/feature/feature-payments/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-payments/src/main/graphql/QueryDiscounts.graphql:
--------------------------------------------------------------------------------
1 | query Discounts {
2 | currentMember {
3 | redeemedCampaigns {
4 | code
5 | description
6 | expiresAt
7 | id
8 | onlyApplicableToContracts {
9 | currentAgreement {
10 | productVariant {
11 | displayName
12 | displayNameShort
13 | }
14 | }
15 | exposureDisplayNameShort
16 | }
17 | type
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/feature/feature-payments/src/main/graphql/QueryShortPaymentsHistory.graphql:
--------------------------------------------------------------------------------
1 | query ShortPaymentHistory {
2 | currentMember {
3 | pastCharges {
4 | net {
5 | ...MoneyFragment
6 | }
7 | id
8 | status
9 | date
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/eurobonus/FragmentPartnerDataFragment.graphql:
--------------------------------------------------------------------------------
1 | fragment PartnerDataFragment on Member {
2 | partnerData {
3 | sas {
4 | eurobonusNumber
5 | eligible
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/eurobonus/MutationUpdateEurobonusNumber.graphql:
--------------------------------------------------------------------------------
1 | mutation UpdateEurobonusNumber($input: String!) {
2 | memberUpdateEurobonusNumber(input: {eurobonusNumber: $input}) {
3 | userError {
4 | message
5 | }
6 | member {
7 | ...PartnerDataFragment
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/eurobonus/QueryEurobonusData.graphql:
--------------------------------------------------------------------------------
1 | query EurobonusData {
2 | currentMember {
3 | ...PartnerDataFragment
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/MutationMemberUpdateContactInfo.graphql:
--------------------------------------------------------------------------------
1 | mutation MemberUpdateContactInfo($email: String!, $phoneNumber:String!) {
2 | memberUpdateContactInfo(input: {email: $email, phoneNumber: $phoneNumber}) {
3 | userError {
4 | message
5 | }
6 | member {
7 | ...ContactInformation
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/MutationUpdateSubscriptionPreference.graphql:
--------------------------------------------------------------------------------
1 | mutation UpdateSubscriptionPreference($subscribe: Boolean) {
2 | memberUpdateSubscriptionPreference(subscribe: $subscribe) {
3 | message
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/QueryContactInformation.graphql:
--------------------------------------------------------------------------------
1 | query ContactInformation {
2 | currentMember {
3 | ...ContactInformation
4 | }
5 | }
6 |
7 | fragment ContactInformation on Member {
8 | phoneNumber
9 | email
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/QueryInsuranceEvidenceAvailability.graphql:
--------------------------------------------------------------------------------
1 | query InsuranceEvidenceAvailability {
2 | currentMember {
3 | memberActions {
4 | isCreatingOfInsuranceEvidenceEnabled
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/QueryMemberId.graphql:
--------------------------------------------------------------------------------
1 | query MemberId {
2 | currentMember {
3 | id
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/graphql/member/QueryTravelCertificateAvailability.graphql:
--------------------------------------------------------------------------------
1 | query TravelCertificateAvailability {
2 | currentMember {
3 | memberActions {
4 | isTravelCertificateEnabled
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/main/kotlin/com/hedvig/android/feature/profile/data/ProfileData.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.profile.data
2 |
3 | internal data class ProfileData(
4 | val member: Member,
5 | ) {
6 | data class Member(
7 | val id: String,
8 | val firstName: String,
9 | val lastName: String,
10 | val email: String,
11 | val phoneNumber: String?,
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/app/feature/feature-profile/src/test/kotlin/com/hedvig/android/feature/NoopNetworkCacheManager.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature
2 |
3 | import com.hedvig.android.apollo.NetworkCacheManager
4 |
5 | val NoopNetworkCacheManager = object : NetworkCacheManager {
6 | override fun clearCache() {}
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/graphql/MutationFlowTerminationDateNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowTerminationDateNext($context: FlowContext!, $input: FlowTerminationDateInput!, $addonsEnabled: Boolean!) {
2 | flowTerminationDateNext(context: $context, input: $input) {
3 | id
4 | context
5 | ...TerminationFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/graphql/MutationFlowTerminationDeletionNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowTerminationDeletionNext($context: FlowContext!, $addonsEnabled: Boolean!) {
2 | flowTerminationDeletionNext(input: {confirmed: true}, context: $context) {
3 | id
4 | context
5 | ...TerminationFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/graphql/MutationFlowTerminationStart.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowTerminationStart($flowTerminationStartInput : FlowTerminationStartInput!, $addonsEnabled: Boolean!) {
2 | flowTerminationStart(input: $flowTerminationStartInput, context: null) {
3 | id
4 | context
5 | ...TerminationFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/graphql/MutationFlowTerminationSurveyNext.graphql:
--------------------------------------------------------------------------------
1 | mutation FlowTerminationSurveyNext($context: FlowContext!, $input: FlowTerminationSurveyInput!, $addonsEnabled: Boolean!) {
2 | flowTerminationSurveyNext(context: $context, input: $input) {
3 | id
4 | context
5 | ...TerminationFlowStepFragment
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-terminate-insurance/src/main/kotlin/com/hedvig/android/feature/terminateinsurance/InsuranceId.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.feature.terminateinsurance
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | @Serializable
6 | @JvmInline
7 | internal value class InsuranceId(val id: String)
8 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/MutationTravelCertificateCreate.graphql:
--------------------------------------------------------------------------------
1 | mutation TravelCertificateCreate($input: TravelCertificateCreateInput!) {
2 | travelCertificateCreate(input: $input) {
3 | id
4 | signedUrl
5 | startDate
6 | endDate
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/QueryCoInsuredForContract.graphql:
--------------------------------------------------------------------------------
1 | query CoInsuredForContract($contractId: UUID!) {
2 | contract(id: $contractId) {
3 | coInsured {
4 | birthdate
5 | firstName
6 | ssn
7 | lastName
8 | hasMissingInfo
9 | id
10 | }
11 | }
12 | currentMember {
13 | firstName
14 | lastName
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/QueryCurrentContracts.graphql:
--------------------------------------------------------------------------------
1 | query CurrentContracts {
2 | currentMember {
3 | activeContracts {
4 | supportsTravelCertificate
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/QueryEligibleContractsWithAddress.graphql:
--------------------------------------------------------------------------------
1 | query EligibleContractsWithAddress {
2 | currentMember {
3 | activeContracts {
4 | id
5 | supportsTravelCertificate
6 | exposureDisplayName
7 | }
8 | travelCertificateSpecifications {
9 | contractSpecifications {
10 | contractId
11 | location {
12 | street
13 | }
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateHistory.graphql:
--------------------------------------------------------------------------------
1 | query TravelCertificates {
2 | currentMember {
3 | travelCertificates {
4 | startDate
5 | id
6 | signedUrl
7 | expiryDate
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/feature/feature-travel-certificate/src/main/graphql/QueryTravelCertificateSpecifications.graphql:
--------------------------------------------------------------------------------
1 | query TravelCertificateSpecificationsQuery {
2 | currentMember {
3 | email
4 | activeContracts {
5 | id
6 | supportsTravelCertificate
7 | }
8 | travelCertificateSpecifications {
9 | contractSpecifications {
10 | contractId
11 | maxDurationDays
12 | maxStartDate
13 | minStartDate
14 | numberOfCoInsured
15 | }
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/featureflags/feature-flags-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.unleash)
8 |
9 | implementation(libs.coroutines.core)
10 | implementation(libs.koin.core)
11 | implementation(projects.authCorePublic)
12 | implementation(projects.authEventCore)
13 | implementation(projects.coreBuildConstants)
14 | implementation(projects.coreCommonPublic)
15 | }
16 |
--------------------------------------------------------------------------------
/app/featureflags/feature-flags-public/src/main/kotlin/com/hedvig/android/featureflags/FeatureManager.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.featureflags
2 |
3 | import com.hedvig.android.featureflags.flags.Feature
4 | import kotlinx.coroutines.flow.Flow
5 |
6 | interface FeatureManager {
7 | fun isFeatureEnabled(feature: Feature): Flow
8 | }
9 |
--------------------------------------------------------------------------------
/app/featureflags/feature-flags-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.turbine)
8 | implementation(projects.featureFlagsPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/initializable/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/initializable/src/main/kotlin/com/hedvig/android/initializable/Initializable.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.initializable
2 |
3 | fun interface Initializable {
4 | fun initialize()
5 | }
6 |
--------------------------------------------------------------------------------
/app/language/language-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.other.appCompat)
8 | implementation(libs.koin.core)
9 | implementation(projects.coreCommonPublic)
10 | implementation(projects.coreResources)
11 | implementation(projects.languageCore)
12 | }
13 |
--------------------------------------------------------------------------------
/app/language/language-android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/language/language-android/src/main/kotlin/com/hedvig/android/language/Language.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.language
2 |
3 | import androidx.annotation.StringRes
4 | import com.hedvig.android.language.Language.EN_SE
5 | import com.hedvig.android.language.Language.SV_SE
6 | import hedvig.resources.R
7 |
8 | val Language.label: Int
9 | @StringRes
10 | get() = when (this) {
11 | SV_SE -> R.string.swedish
12 | EN_SE -> R.string.english_swedish
13 | }
14 |
--------------------------------------------------------------------------------
/app/language/language-android/src/main/kotlin/com/hedvig/android/language/di/LanguageModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.language.di
2 |
3 | import com.hedvig.android.language.AndroidLanguageService
4 | import com.hedvig.android.language.LanguageService
5 | import org.koin.dsl.module
6 |
7 | val languageModule = module {
8 | single { AndroidLanguageService() }
9 | }
10 |
--------------------------------------------------------------------------------
/app/language/language-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.annotation)
8 | implementation(projects.coreCommonPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/language/language-data/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | apollo("octopus")
8 | }
9 |
10 | dependencies {
11 |
12 | implementation(libs.apollo.runtime)
13 | implementation(libs.koin.core)
14 | implementation(projects.apolloCore)
15 | implementation(projects.apolloOctopusPublic)
16 | implementation(projects.authEventCore)
17 | implementation(projects.languageCore)
18 | }
19 |
--------------------------------------------------------------------------------
/app/language/language-data/src/main/graphql/MutationMemberUpdateLanguage.graphql:
--------------------------------------------------------------------------------
1 | mutation MemberUpdateLanguage($ietfLanguageTag: String!) {
2 | memberUpdateLanguage(input: { ietfLanguageTag: $ietfLanguageTag}) {
3 | member {
4 | id
5 | language
6 | }
7 | userError {
8 | message
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/language/language-data/src/main/kotlin/com/hedvig/android/apollo/auth/listeners/UploadLanguagePreferenceToBackendAuthListener.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.apollo.auth.listeners
2 |
3 | import com.hedvig.android.auth.event.AuthEventListener
4 |
5 | internal class UploadLanguagePreferenceToBackendAuthListener(
6 | private val uploadLanguagePreferenceToBackendUseCase: UploadLanguagePreferenceToBackendUseCase,
7 | ) : AuthEventListener {
8 | override suspend fun loggedIn(accessToken: String) {
9 | uploadLanguagePreferenceToBackendUseCase.invoke()
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/language/language-migration/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.androidx.other.appCompat)
8 | implementation(libs.koin.core)
9 | implementation(projects.coreCommonPublic)
10 | implementation(projects.coreResources)
11 | implementation(projects.languageCore)
12 | }
13 |
--------------------------------------------------------------------------------
/app/language/language-migration/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/language/language-migration/src/main/kotlin/com/hedvig/android/language/di/LanguageMigrationModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.language.di
2 |
3 | import com.hedvig.android.language.AndroidLanguageLaunchCheckUseCase
4 | import com.hedvig.android.language.LanguageLaunchCheckUseCase
5 | import com.hedvig.android.language.LanguageService
6 | import org.koin.dsl.module
7 |
8 | val languageMigrationModule = module {
9 | single {
10 | AndroidLanguageLaunchCheckUseCase(get())
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/language/language-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(projects.languageCore)
8 | }
9 |
--------------------------------------------------------------------------------
/app/logging/logging-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.slimber)
8 | implementation(libs.timber)
9 | implementation(projects.loggingPublic)
10 | }
11 |
--------------------------------------------------------------------------------
/app/logging/logging-android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/logging/logging-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/logging/logging-public/src/main/kotlin/com/hedvig/android/logger/LogPriority.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.logger
2 |
3 | /**
4 | * An enum for log priorities that map to [android.util.Log] priority constants
5 | * without a direct import.
6 | */
7 | enum class LogPriority {
8 | VERBOSE,
9 | DEBUG,
10 | INFO,
11 | WARN,
12 | ERROR,
13 | ASSERT,
14 | }
15 |
--------------------------------------------------------------------------------
/app/logging/logging-public/src/main/kotlin/com/hedvig/android/logger/Logcat.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.logger
2 |
3 | /**
4 | * The main entrypoint to logging in the entire app.
5 | */
6 | @Suppress("NOTHING_TO_INLINE")
7 | inline fun logcat(
8 | priority: LogPriority = LogPriority.DEBUG,
9 | throwable: Throwable? = null,
10 | noinline message: () -> String,
11 | ) {
12 | with(LogcatLogger.logger) {
13 | log(priority, throwable, message)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/logging/logging-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.junit)
8 | api(projects.loggingPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/logging/logging-test/src/main/kotlin/com/hedvig/android/logger/TestLogcatLogger.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.logger
2 |
3 | /**
4 | * A test [LogcatLogger] implementation which just prints out to [System.out].
5 | */
6 | internal class TestLogcatLogger : LogcatLogger {
7 | override fun log(priority: LogPriority, throwable: Throwable?, message: () -> String) {
8 | val throwableText = throwable?.let { " ${it.message}" } ?: ""
9 | println("[${priority.name}] ${message()}" + throwableText)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-public/src/main/graphql/QueryGetPayinMethodStatus.graphql:
--------------------------------------------------------------------------------
1 | query GetPayinMethodStatus {
2 | currentMember {
3 | paymentInformation {
4 | status
5 | }
6 | activeContracts {
7 | terminationDate
8 | terminationDueToMissedPayments
9 | id
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-public/src/main/graphql/QueryGetUpcomingRenewalReminder.graphql:
--------------------------------------------------------------------------------
1 | query GetUpcomingRenewalReminder {
2 | currentMember {
3 | activeContracts {
4 | currentAgreement {
5 | productVariant {
6 | displayName
7 | }
8 | }
9 | upcomingChangedAgreement {
10 | creationCause
11 | activeFrom
12 | certificateUrl
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-public/src/main/graphql/QueryNeedsCoInsuredInfoReminder.graphql:
--------------------------------------------------------------------------------
1 | query NeedsCoInsuredInfoReminder {
2 | currentMember {
3 | activeContracts {
4 | id
5 | coInsured {
6 | hasMissingInfo
7 | terminatesOn
8 | }
9 | supportsCoInsured
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-public/src/main/graphql/QueryNeedsContactInfoUpdateReminder.graphql:
--------------------------------------------------------------------------------
1 | query NeedsContactInfoUpdateReminder {
2 | currentMember {
3 | memberActions {
4 | isContactInfoUpdateNeeded
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.turbine)
8 | implementation(projects.memberRemindersPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/member-reminders/member-reminders-ui/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/molecule/molecule-android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | api(libs.androidx.lifecycle.viewModel)
12 | api(projects.moleculePublic)
13 |
14 | implementation(libs.coroutines.core)
15 | implementation(libs.molecule)
16 | }
17 |
--------------------------------------------------------------------------------
/app/molecule/molecule-android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/molecule/molecule-public/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.runtime)
12 | implementation(libs.coroutines.core)
13 | }
14 |
--------------------------------------------------------------------------------
/app/molecule/molecule-test/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | api(projects.moleculePublic)
12 | implementation(libs.androidx.annotation)
13 | implementation(libs.androidx.compose.runtime)
14 | implementation(libs.molecule)
15 | implementation(libs.turbine)
16 | }
17 |
--------------------------------------------------------------------------------
/app/navigation/navigation-activity/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/navigation/navigation-activity/src/main/kotlin/com/hedvig/android/navigation/activity/ExternalNavigator.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.navigation.activity
2 |
3 | interface ExternalNavigator {
4 | fun openAppSettings()
5 |
6 | fun tryOpenPlayStore()
7 |
8 | fun openEmailApp()
9 | }
10 |
--------------------------------------------------------------------------------
/app/navigation/navigation-common/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.kotlin.reflect)
8 | }
9 |
--------------------------------------------------------------------------------
/app/navigation/navigation-common/src/main/kotlin/com/hedvig/android/navigation/common/Destination.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.navigation.common
2 |
3 | import kotlin.reflect.KType
4 |
5 | interface Destination
6 |
7 | interface DestinationNavTypeAware {
8 | val typeList: List
9 | }
10 |
--------------------------------------------------------------------------------
/app/navigation/navigation-compose-typed/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/navigation/navigation-compose/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | serialization()
8 | compose()
9 | }
10 |
11 | dependencies {
12 | api(libs.androidx.navigation.common)
13 | implementation(libs.androidx.compose.runtime)
14 | implementation(libs.androidx.navigation.compose)
15 | implementation(libs.kotlinx.serialization.core)
16 | implementation(libs.kotlinx.serialization.json)
17 | implementation(projects.navigationCommon)
18 | }
19 |
--------------------------------------------------------------------------------
/app/navigation/navigation-compose/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/navigation/navigation-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.androidx.navigation.common)
8 | implementation(libs.koin.core)
9 | implementation(projects.coreBuildConstants)
10 | implementation(projects.navigationCommon)
11 | }
12 |
--------------------------------------------------------------------------------
/app/navigation/navigation-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/navigation/navigation-core/src/main/kotlin/com/hedvig/android/navigation/core/TopLevelGraph.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.navigation.core
2 |
3 | enum class TopLevelGraph {
4 | Home,
5 | Insurances,
6 | Forever,
7 | Payments,
8 | Profile,
9 | }
10 |
--------------------------------------------------------------------------------
/app/navigation/navigation-core/src/main/kotlin/com/hedvig/android/navigation/core/di/DeepLinkModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.navigation.core.di
2 |
3 | import com.hedvig.android.core.buildconstants.HedvigBuildConstants
4 | import com.hedvig.android.navigation.core.HedvigDeepLinkContainer
5 | import com.hedvig.android.navigation.core.HedvigDeepLinkContainerImpl
6 | import org.koin.dsl.module
7 |
8 | val deepLinkModule = module {
9 | single {
10 | HedvigDeepLinkContainerImpl(get())
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/notification-badge-data/notification-badge-data-fake/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | implementation(libs.turbine)
8 | implementation(projects.notificationBadgeDataPublic)
9 | }
10 |
--------------------------------------------------------------------------------
/app/notification-badge-data/notification-badge-data-public/src/main/graphql/QueryCrossSellTypes.graphql:
--------------------------------------------------------------------------------
1 | query CrossSellTypes {
2 | currentMember {
3 | crossSells {
4 | id
5 | type
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/notification-badge-data/notification-badge-data-public/src/main/kotlin/com/hedvig/android/notification/badge/data/tab/BottomNavTab.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.notification.badge.data.tab
2 |
3 | enum class BottomNavTab {
4 | HOME,
5 | INSURANCE,
6 | FOREVER,
7 | PAYMENTS,
8 | PROFILE,
9 | }
10 |
--------------------------------------------------------------------------------
/app/notification-permission/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | api(libs.accompanist.permissions)
12 |
13 | implementation(libs.androidx.activity.compose)
14 | implementation(projects.coreResources)
15 | implementation(projects.designSystemHedvig)
16 | }
17 |
--------------------------------------------------------------------------------
/app/notification-permission/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/notification/notification-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | implementation(platform(libs.firebase.bom))
8 |
9 | implementation(libs.androidx.other.coreKtx)
10 | implementation(libs.firebase.messaging)
11 | implementation(projects.coreResources)
12 | }
13 |
--------------------------------------------------------------------------------
/app/notification/notification-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/notification/notification-core/src/main/kotlin/com/hedvig/android/notification/core/NotificationSender.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.notification.core
2 |
3 | import com.google.firebase.messaging.RemoteMessage
4 |
5 | interface NotificationSender {
6 | suspend fun sendNotification(type: String, remoteMessage: RemoteMessage)
7 |
8 | fun handlesNotificationType(notificationType: String): Boolean
9 | }
10 |
--------------------------------------------------------------------------------
/app/notification/notification-firebase/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/notification/notification-firebase/src/main/graphql/MutationMemberDeviceRegister.graphql:
--------------------------------------------------------------------------------
1 | mutation MemberDeviceRegister($token: String!) {
2 | memberDeviceRegister(input: {platform: ANDROID, token: $token})
3 | }
4 |
--------------------------------------------------------------------------------
/app/shared/forever-ui/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/shared/forever-ui/src/main/graphql/MutationMemberReferralInformationCodeUpdate.graphql:
--------------------------------------------------------------------------------
1 | mutation MemberReferralInformationCodeUpdate($code: String!) {
2 | memberReferralInformationCodeUpdate(code: $code) {
3 | referralInformation {
4 | code
5 | }
6 | userError {
7 | message
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/shared/forever-ui/src/main/kotlin/com/hedvig/android/shared/foreverui/ui/data/ForeverRepository.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.shared.foreverui.ui.data
2 |
3 | import arrow.core.Either
4 | import com.hedvig.android.core.common.ErrorMessage
5 | import octopus.FullReferralsQuery
6 |
7 | interface ForeverRepository {
8 | suspend fun getReferralsData(): Either
9 |
10 | suspend fun updateCode(newCode: String): Either
11 |
12 | data class ReferralError(val message: String?)
13 | }
14 |
--------------------------------------------------------------------------------
/app/shared/forever-ui/src/main/kotlin/com/hedvig/android/shared/foreverui/ui/data/ForeverRepositoryProvider.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.shared.foreverui.ui.data
2 |
3 | import com.hedvig.android.core.demomode.DemoManager
4 | import com.hedvig.android.core.demomode.ProdOrDemoProvider
5 |
6 | internal class ForeverRepositoryProvider(
7 | override val demoManager: DemoManager,
8 | override val demoImpl: ForeverRepository,
9 | override val prodImpl: ForeverRepository,
10 | ) : ProdOrDemoProvider
11 |
--------------------------------------------------------------------------------
/app/shared/tier-comparison/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/shared/tier-comparison/src/main/graphql/CompareCoverageQuery.graphql:
--------------------------------------------------------------------------------
1 | query CompareCoverage($termsVersions: [ID!]!) {
2 | productVariantComparison(termsVersions: $termsVersions) {
3 | variantColumns {
4 | displayNameTier
5 | displayNameSubtype
6 | termsVersion
7 | }
8 | rows {
9 | title
10 | description
11 | cells {
12 | isCovered
13 | coverageText
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/shared/tier-comparison/src/main/kotlin/com/hedvig/android/shared/tier/comparison/navigation/ComparisonParameters.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.shared.tier.comparison.navigation
2 |
3 | import kotlinx.serialization.Serializable
4 |
5 | @Serializable
6 | data class ComparisonParameters(
7 | val termsIds: List,
8 | val selectedTermsVersion: String?,
9 | )
10 |
--------------------------------------------------------------------------------
/app/test/test-clock/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.kotlinx.datetime)
8 | }
9 |
--------------------------------------------------------------------------------
/app/test/test-clock/src/main/kotlin/com/hedvig/android/test/clock/TestClock.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.test.clock
2 |
3 | import kotlin.time.Duration
4 | import kotlinx.datetime.Clock
5 | import kotlinx.datetime.Instant
6 |
7 | class TestClock : Clock {
8 | private var now = Clock.System.now()
9 |
10 | fun advanceTimeBy(duration: Duration) {
11 | require(duration > Duration.ZERO)
12 | now += duration
13 | }
14 |
15 | override fun now(): Instant {
16 | return now
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/theme/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/theme/src/main/kotlin/com/hedvig/android/theme/Theme.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.theme
2 |
3 | enum class Theme {
4 | LIGHT,
5 | DARK,
6 | SYSTEM_DEFAULT,
7 | }
8 |
--------------------------------------------------------------------------------
/app/tracking/tracking-core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.kotlin.library")
4 | }
5 |
--------------------------------------------------------------------------------
/app/tracking/tracking-datadog/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | dependencies {
7 | api(libs.datadog.sdk.rum)
8 | api(projects.trackingCore)
9 |
10 | implementation(libs.koin.core)
11 | implementation(projects.initializable)
12 | }
13 |
--------------------------------------------------------------------------------
/app/tracking/tracking-datadog/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/tracking/tracking-datadog/src/main/kotlin/com/hedvig/android/tracking/datadog/ActionLoggerInitializer.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.tracking.datadog
2 |
3 | import com.hedvig.android.initializable.Initializable
4 |
5 | class ActionLoggerInitializer : Initializable {
6 | override fun initialize() {
7 | DatadogRumLogger.install()
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/tracking/tracking-datadog/src/main/kotlin/com/hedvig/android/tracking/datadog/di/trackingDatadogModule.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.tracking.datadog.di
2 |
3 | import com.hedvig.android.initializable.Initializable
4 | import com.hedvig.android.tracking.datadog.ActionLoggerInitializer
5 | import org.koin.dsl.bind
6 | import org.koin.dsl.module
7 |
8 | val trackingDatadogModule = module {
9 | single { ActionLoggerInitializer() } bind Initializable::class
10 | }
11 |
--------------------------------------------------------------------------------
/app/ui/claim-status/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/compose-webview/README.md:
--------------------------------------------------------------------------------
1 | Accompanist WebView is deprecated https://medium.com/androiddevelopers/an-update-on-jetpack-compose-accompanist-libraries-august-2023-ac4cbbf059f1
2 | This is a fork of it so we can still use it as suggested in the article above
--------------------------------------------------------------------------------
/app/ui/compose-webview/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.activity.compose)
12 | implementation(libs.androidx.compose.foundation)
13 | implementation(libs.androidx.compose.runtime)
14 | }
15 |
--------------------------------------------------------------------------------
/app/ui/compose-webview/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/cross-sells/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/placeholder/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.animationCore)
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(libs.androidx.compose.uiUtil)
14 | }
15 |
--------------------------------------------------------------------------------
/app/ui/placeholder/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/pullrefresh/README.md:
--------------------------------------------------------------------------------
1 | ## A local fork of the pullrefresh functionality from androidx.material
2 |
3 | Source: https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/material/material/src/commonMain/kotlin/androidx/compose/material/pullrefresh/
4 |
5 | Forked so that we can make use of it while not bringing in m2 dependencies in our project unecessarily
6 |
--------------------------------------------------------------------------------
/app/ui/pullrefresh/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
6 | hedvig {
7 | compose()
8 | }
9 |
10 | dependencies {
11 | implementation(libs.androidx.compose.animationCore)
12 | implementation(libs.androidx.compose.runtime)
13 | implementation(projects.designSystemHedvig)
14 | }
15 |
--------------------------------------------------------------------------------
/app/ui/pullrefresh/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/ui-claim-flow/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/ui-emergency/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/ui/ui-tiers-and-addons/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/build-logic/convention/src/main/kotlin/com/hedvig/android/AndroidCommonExtension.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android
2 |
3 | import com.android.build.api.dsl.CommonExtension
4 |
5 | internal typealias AndroidCommonExtension = CommonExtension<*, *, *, *, *, *>
6 |
--------------------------------------------------------------------------------
/build-logic/gradle.properties:
--------------------------------------------------------------------------------
1 | # Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534
2 | org.gradle.caching=true
3 | org.gradle.configureondemand=true
4 | org.gradle.parallel=true
5 | org.gradle.configuration-cache=true
6 |
--------------------------------------------------------------------------------
/build-logic/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | dependencyResolutionManagement {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | maven("https://plugins.gradle.org/m2/")
6 | }
7 | versionCatalogs {
8 | create("libs") {
9 | from(files("../gradle/libs.versions.toml"))
10 | }
11 | }
12 | }
13 |
14 | rootProject.name = "build-logic"
15 |
16 | include(":convention")
17 |
--------------------------------------------------------------------------------
/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/debug.keystore
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/hedvig-lint/.gitignore:
--------------------------------------------------------------------------------
1 | /lint-reports
--------------------------------------------------------------------------------
/hedvig-lint/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2 |
3 | plugins {
4 | id("hedvig.gradle.plugin")
5 | `java-library`
6 | alias(libs.plugins.kotlinJvm)
7 | alias(libs.plugins.lintGradlePlugin)
8 | }
9 |
10 | dependencies {
11 | compileOnly(libs.lintApi)
12 | }
13 |
14 | java {
15 | sourceCompatibility = JavaVersion.VERSION_17
16 | targetCompatibility = JavaVersion.VERSION_17
17 | }
18 |
19 | kotlin {
20 | compilerOptions {
21 | jvmTarget.set(JvmTarget.JVM_17)
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-auth-listeners.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-network-cache-manager.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-octopus-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-octopus-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-apollo-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-app.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-audio-player-data.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-audio-player-ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-auth-core-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-auth-core-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-auth-event-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-auth-event-fake.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-claim-status.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-compose-pager-indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-compose-photo-capture-state.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-compose-ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-compose-webview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-app-review.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-build-constants.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-common-android-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-common-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-common-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-datastore-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-datastore-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-demo-mode.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-design-system.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-file-upload.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-icons.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-markdown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-retrofit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-ui-data.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-core-ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-cross-sells.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-addons.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-changetier.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-chat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-claim-flow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-claim-triaging.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-contract-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-contract-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-conversations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-cross-sell-after-claim-closed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-display-items.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-paying-member.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-product-variant-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-product-variant-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-settings-datastore-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-settings-datastore-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-data-termination.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-database-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-database-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-database-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-datadog-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-datadog-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-datadog-demo-tracking.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-design-showcase.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-design-system-api.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-design-system-hedvig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-design-system-internals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-addon-purchase.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-changeaddress.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-chat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-choose-tier.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-claim-details.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-claim-triaging.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-connect-payment-trustly.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-cross-sell-after-flow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-cross-sell-sheet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-delete-account.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-edit-coinsured.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-flags-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-flags-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-force-upgrade.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-forever.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-help-center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-home.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-image-viewer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-impersonation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-insurances.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-login.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-movingflow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-odyssey.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-payments.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-profile.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-terminate-insurance.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-feature-travel-certificate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-forever-ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-initializable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-language-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-language-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-language-data.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-language-migration.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-language-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-logging-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-logging-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-logging-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-member-reminders-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-member-reminders-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-member-reminders-ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-molecule-android.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-molecule-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-molecule-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-navigation-activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-navigation-common.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-navigation-compose-typed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-navigation-compose.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-navigation-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-notification-badge-data-fake.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-notification-badge-data-public.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-notification-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-notification-firebase.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-notification-permission.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-placeholder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-pullrefresh.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-test-clock.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-tier-comparison.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-tracking-core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-tracking-datadog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-ui-claim-flow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-ui-claimflow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-ui-emergency.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/lint-baseline/lint-baseline-ui-tiers-and-addons.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/hedvig-lint/src/main/kotlin/com/hedvig/android/lint/config/Priorities.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lint.config
2 |
3 | object Priorities {
4 | const val HIGH = 10
5 | const val NORMAL = 5
6 | const val LOW = 3
7 | const val NONE = 1
8 | }
9 |
--------------------------------------------------------------------------------
/hedvig-lint/src/main/kotlin/com/hedvig/android/lint/util/LintOption.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lint.util
2 |
3 | import com.android.tools.lint.client.api.Configuration
4 |
5 | /**
6 | * A layer of indirection for implementations of option loaders without needing to extend from
7 | * Detector. This goes along with [OptionLoadingDetector].
8 | */
9 | interface LintOption {
10 | fun load(configuration: Configuration)
11 | }
12 |
--------------------------------------------------------------------------------
/hedvig-lint/src/main/kotlin/com/hedvig/android/lint/util/StringSetLintOption.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lint.util
2 |
3 | import com.android.tools.lint.client.api.Configuration
4 | import com.android.tools.lint.detector.api.StringOption
5 |
6 | open class StringSetLintOption(private val option: StringOption) : LintOption {
7 | var value: Set = emptySet()
8 | private set
9 |
10 | override fun load(configuration: Configuration) {
11 | value = option.loadAsSet(configuration)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/hedvig-lint/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry:
--------------------------------------------------------------------------------
1 | com.hedvig.android.lint.HedvigLintRegistry
--------------------------------------------------------------------------------
/lokalise-gradle-plugin/gradle.properties:
--------------------------------------------------------------------------------
1 | # Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534
2 | org.gradle.caching=true
3 | org.gradle.configureondemand=true
4 | org.gradle.parallel=true
5 | org.gradle.configuration-cache=true
6 |
--------------------------------------------------------------------------------
/lokalise-gradle-plugin/lokalise/src/main/kotlin/com/hedvig/android/lokalise/config/DownloadConfig.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lokalise.config
2 |
3 | class DownloadConfig(
4 | val stringsOrder: StringsOrder = StringsOrder.A_Z,
5 | val emptyTranslationStrategy: EmptyTranslationStrategy = EmptyTranslationStrategy.REPLACE_WITH_BASE_LANGUAGE,
6 | )
7 |
--------------------------------------------------------------------------------
/lokalise-gradle-plugin/lokalise/src/main/kotlin/com/hedvig/android/lokalise/config/EmptyTranslationStrategy.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lokalise.config
2 |
3 | @Suppress("unused")
4 | enum class EmptyTranslationStrategy(val value: String) {
5 | REPLACE_WITH_BASE_LANGUAGE("base"),
6 | KEEP_EMPTY("empty"),
7 | SKIP("skip"),
8 | }
9 |
--------------------------------------------------------------------------------
/lokalise-gradle-plugin/lokalise/src/main/kotlin/com/hedvig/android/lokalise/config/StringsOrder.kt:
--------------------------------------------------------------------------------
1 | package com.hedvig.android.lokalise.config
2 |
3 | @Suppress("unused")
4 | enum class StringsOrder(val value: String) {
5 | FIRST_ADDED("first_added"),
6 | LAST_ADDED("last_added"),
7 | LAST_UPDATED("last_updated"),
8 | A_Z("a_z"),
9 | Z_A("z_a"),
10 | }
11 |
--------------------------------------------------------------------------------
/lokalise-gradle-plugin/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | dependencyResolutionManagement {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | versionCatalogs {
7 | create("libs") {
8 | from(files("../gradle/libs.versions.toml"))
9 | }
10 | }
11 | }
12 |
13 | rootProject.name = "lokalise-gradle-plugin"
14 |
15 | include(":lokalise")
16 |
--------------------------------------------------------------------------------
/maestro/demo-mode.yaml:
--------------------------------------------------------------------------------
1 | appId: com.hedvig.dev.app
2 | ---
3 | - launchApp:
4 | clearState: true
5 | - tapOn:
6 | id: login_button
7 | - longPressOn:
8 | id: qr_code
9 | - tapOn:
10 | id: positive_button
11 | - assertVisible:
12 | id: welcome_message
13 | - tapOn:
14 | id: PROFILE
15 | - tapOn:
16 | id: logout
17 | - tapOn:
18 | id: positive_button
19 | - assertVisible:
20 | id: login_button
--------------------------------------------------------------------------------
/micro-apps/README.md:
--------------------------------------------------------------------------------
1 | ## micro-apps
2 |
3 | ### Directory to be used to host micro-apps to quickly iterate on something
4 |
5 | Or for whatever else one might want to do with a light-weight version of the app, only depending on
6 | specific modules
7 |
--------------------------------------------------------------------------------
/micro-apps/design-showcase/README.md:
--------------------------------------------------------------------------------
1 | ## A micro app to quickly test core-design-system and core-ui components
2 |
3 | ### Made test how the m3 design system color mapping works in various m3 components
4 |
5 | Run quickly by using the shared run configuration `Design Showcase`
6 |
7 | 
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_cat.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_cat.webp
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_dog.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_dog.webp
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_home.webp
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_homeowner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/micro-apps/design-showcase/src/main/res/drawable-nodpi/ic_pillow_homeowner.webp
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DesignShowcaseActivity.kt
3 |
--------------------------------------------------------------------------------
/micro-apps/design-showcase/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/misc/images/m2_and_m3_color_schemes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/misc/images/m2_and_m3_color_schemes.png
--------------------------------------------------------------------------------
/misc/images/m3_showcase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/misc/images/m3_showcase.png
--------------------------------------------------------------------------------
/misc/images/modularization-graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HedvigInsurance/android/1aa395f47782a3b094129c5c23eee6ec6f9c94a7/misc/images/modularization-graph.png
--------------------------------------------------------------------------------
/sample-module/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("hedvig.gradle.plugin")
3 | id("hedvig.android.library")
4 | }
5 |
--------------------------------------------------------------------------------
/sample-module/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/scripts/ci-prebuild.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | set +uex
3 |
4 | echo "" >> ~/.gradle/gradle.properties
5 | echo "authlibUsername=${HEDVIG_GITHUB_PACKAGES_USER}" >> ~/.gradle/gradle.properties
6 | echo "authlibPassword=${HEDVIG_GITHUB_PACKAGES_TOKEN}" >> ~/.gradle/gradle.properties
7 | echo "DATADOG_API_KEY=${DATADOG_API_KEY}" >> ~/.gradle/gradle.properties
8 |
9 | cat < lokalise.properties
10 | id=${LOKALISE_ID}
11 | token=${LOKALISE_TOKEN}
12 | EOT
13 |
14 | ./gradlew downloadOctopusApolloSchemaFromIntrospection
15 | ./gradlew downloadStrings
--------------------------------------------------------------------------------