From 338d9f624a59e59c78986c055f5725b1abb8ea8a Mon Sep 17 00:00:00 2001 From: Louis Legrand Date: Tue, 7 Jan 2025 15:30:45 +0100 Subject: [PATCH] feat(CON-238) : Add webview for cookies policy --- .../data/remote/mock/ConsentiumUIMock.kt | 2 +- .../consentium_ui/ui/ConsentiumUIScreen.kt | 9 +++++- .../ui/adapter/DetailConsentUIAdapter.kt | 1 + .../ui/components/ConsentiumUIComponent.kt | 19 ++++++++++++- .../ui/components/ConsentiumUIWebview.kt | 28 +++++++++++++++++++ .../ui/model/ConsentiumPageUI.kt | 3 +- .../consentium_ui/ui/model/DetailConsentUI.kt | 1 + 7 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIWebview.kt diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/data/remote/mock/ConsentiumUIMock.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/data/remote/mock/ConsentiumUIMock.kt index e52727f..1c79025 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/data/remote/mock/ConsentiumUIMock.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/data/remote/mock/ConsentiumUIMock.kt @@ -24,7 +24,7 @@ internal object ConsentiumUIMockApi : ConsentiumUIApi { MainConsentTextTranslationDTO( id = "UUID", language = "fr", - consentPageUrl = "https:consentium.fr", + consentPageUrl = "https://www.openium.fr", mainConsentText = "

[Nom de l’application] utilise des cookies pour différents objectifs : faire fonctionner l’application, améliorer nos services en mesurant l’efficacité de nos contenus et afficher des publicités susceptibles de vous intéresser.

\n

En cliquant sur “Accepter et fermer”, vous acceptez cette utilisation sur l’application mobile. Vous pouvez également paramétrer vos choix en cliquant sur “Paramétrer mes choix” ou refuser ces cookies en cliquant sur “Continuer sans accepter”. Vous pouvez changer d’avis à tout moment depuis les paramètres de votre compte via l’onglet “Notifications et cookies”

\n", durationText = "

Nous conservons votre choix pendant 12 mois. Vous pouvez changer d’avis à tout moment depuis les paramètres de votre compte via l’onglet “Notification et cookies” tetetettetettetetstts

\n" ) diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/ConsentiumUIScreen.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/ConsentiumUIScreen.kt index 09e0cf9..d842e1f 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/ConsentiumUIScreen.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/ConsentiumUIScreen.kt @@ -10,6 +10,7 @@ import fr.openium.consentium_ui.ui.components.ConsentiumUIDetailConsentComponent import fr.openium.consentium_ui.ui.components.ConsentiumUIErrorComponent import fr.openium.consentium_ui.ui.components.ConsentiumUIGeneralConsentComponent import fr.openium.consentium_ui.ui.components.ConsentiumUILoadingComponent +import fr.openium.consentium_ui.ui.components.ConsentiumUIWebview import fr.openium.consentium_ui.ui.model.ConsentiumPageUI import fr.openium.consentium_ui.ui.model.DetailConsentUI import fr.openium.consentium_ui.ui.model.LoadingElement @@ -53,7 +54,7 @@ internal fun ConsentiumScreen( ) } - ConsentiumPageUI.DETAILS_CONSENT -> { + else -> { slideIn( initialOffset = { fullSize -> IntOffset(fullSize.width, 0) } ).togetherWith( @@ -92,6 +93,12 @@ internal fun ConsentiumScreen( loadingElement = loadingElement ) } + + ConsentiumPageUI.COOKIES_POLICY -> { + ConsentiumUIWebview( + url = state.detailConsentUI.cookiePolicyUrl + ) + } } } diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/adapter/DetailConsentUIAdapter.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/adapter/DetailConsentUIAdapter.kt index ca35d90..40af5fb 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/adapter/DetailConsentUIAdapter.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/adapter/DetailConsentUIAdapter.kt @@ -9,6 +9,7 @@ import fr.openium.consentium_ui.ui.model.PurposeUI internal fun ContentConfigData.toDetailConsentUI(): DetailConsentUI = DetailConsentUI( conservationDurationText = mainTextTranslation.first().durationText, purposes = purposes.sortedBy { it.order }.map { it.toPurposeUI() }, + cookiePolicyUrl = mainTextTranslation.first().consentPageUrl, ) internal fun DetailConsentUI.toPurposeChoices(): List = purposes.map { diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIComponent.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIComponent.kt index 19dd652..43535d7 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIComponent.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIComponent.kt @@ -1,6 +1,7 @@ package fr.openium.consentium_ui.ui.components import android.widget.Toast +import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -70,6 +71,22 @@ fun ConsentiumComponent( } } + BackHandler { + when { + defaultLandingPage == ConsentiumPageUI.GENERAL_CONSENT && currentPage == ConsentiumPageUI.DETAILS_CONSENT -> { + currentPage = ConsentiumPageUI.GENERAL_CONSENT + } + + currentPage == ConsentiumPageUI.COOKIES_POLICY -> { + currentPage = ConsentiumPageUI.GENERAL_CONSENT + } + + else -> { + onQuitConsent() + } + } + } + // View CompositionLocalProvider( LocalColors provides colors, @@ -112,7 +129,7 @@ fun ConsentiumComponent( } }, onClickCookiesPolicies = { - // TODO Open cookies policies + currentPage = ConsentiumPageUI.COOKIES_POLICY }, ) } diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIWebview.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIWebview.kt new file mode 100644 index 0000000..bc316b5 --- /dev/null +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/components/ConsentiumUIWebview.kt @@ -0,0 +1,28 @@ +package fr.openium.consentium_ui.ui.components + +import android.view.ViewGroup +import android.webkit.WebView +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.viewinterop.AndroidView + +@Composable +internal fun ConsentiumUIWebview( + url: String, + modifier: Modifier = Modifier, +) { + AndroidView( + modifier = modifier, + factory = { + WebView(it).apply { + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + } + }, + update = { webView -> + webView.loadUrl(url) + } + ) +} \ No newline at end of file diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/ConsentiumPageUI.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/ConsentiumPageUI.kt index 2771aaa..0d0d8aa 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/ConsentiumPageUI.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/ConsentiumPageUI.kt @@ -2,5 +2,6 @@ package fr.openium.consentium_ui.ui.model enum class ConsentiumPageUI { GENERAL_CONSENT, - DETAILS_CONSENT + DETAILS_CONSENT, + COOKIES_POLICY, } \ No newline at end of file diff --git a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/DetailConsentUI.kt b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/DetailConsentUI.kt index f2e4cf1..d83f4b4 100644 --- a/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/DetailConsentUI.kt +++ b/consentium-ui/src/main/java/fr/openium/consentium_ui/ui/model/DetailConsentUI.kt @@ -1,6 +1,7 @@ package fr.openium.consentium_ui.ui.model internal data class DetailConsentUI( + val cookiePolicyUrl: String, val conservationDurationText: String, val purposes: List, ) \ No newline at end of file