diff --git a/.github/workflows/sonar_android.yaml b/.github/workflows/sonar_android.yaml index 390b04c..af23674 100644 --- a/.github/workflows/sonar_android.yaml +++ b/.github/workflows/sonar_android.yaml @@ -46,7 +46,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} run: | - echo ${{ secrets.GOOGLE_SERVICE_FILE }} | base64 -d > app/google-services.json + echo "${{ secrets.GOOGLE_SERVICE_FILE }}" | base64 -d > app/google-services.json mkdir -p app/config - echo ${{ secrets.UAT_CONFIG_FILE }} | base64 -d > app/config/uat.properties + echo "${{ secrets.UAT_CONFIG_FILE }}" | base64 -d > app/config/uat.properties ./gradlew assembleDebug jacocoTestReport sonar diff --git a/app/build.gradle b/app/build.gradle index 35d1a7b..51acc7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -186,6 +186,7 @@ dependencies { implementation 'androidx.compose.material:material-icons-extended:1.7.8' implementation "androidx.compose.animation:animation-core:1.10.0" implementation 'androidx.fragment:fragment-ktx:1.8.9' + implementation("androidx.browser:browser:1.8.0") // Test implementation 'androidx.lifecycle:lifecycle-runtime-compose:2.10.0' diff --git a/app/src/main/java/com/xpeho/xpeapp/ui/page/LoginPage.kt b/app/src/main/java/com/xpeho/xpeapp/ui/page/LoginPage.kt index 6b3a8d2..f03752e 100644 --- a/app/src/main/java/com/xpeho/xpeapp/ui/page/LoginPage.kt +++ b/app/src/main/java/com/xpeho/xpeapp/ui/page/LoginPage.kt @@ -1,5 +1,9 @@ package com.xpeho.xpeapp.ui.page +import android.net.Uri +import androidx.browser.customtabs.CustomTabColorSchemeParams +import androidx.browser.customtabs.CustomTabsIntent +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -17,11 +21,15 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -37,6 +45,8 @@ import com.xpeho.xpeapp.ui.viewModel.viewModelFactory import com.xpeho.xpeho_ui_android.ClickyButton import com.xpeho.xpeho_ui_android.InputText import com.xpeho.xpeho_ui_android.foundations.Colors as XpehoColors +import androidx.core.net.toUri +import com.xpeho.xpeapp.BuildConfig /** * Login page @@ -75,15 +85,6 @@ fun LoginPage(onLoginSuccess: () -> Unit) { @Composable private fun LoginPageContent( wordpressViewModel: WordpressViewModel, -) { - LoginPageContentColumn( - wordpressViewModel, - ) -} - -@Composable -private fun LoginPageContentColumn( - wordpressViewModel: WordpressViewModel, ) { Column( modifier = Modifier @@ -101,9 +102,42 @@ private fun LoginPageContentColumn( LoginPageButton( wordpressViewModel, ) + Spacer(modifier = Modifier.height(26.dp)) + ForgotPasswordText() } } +@Composable +private fun ForgotPasswordText() { + val context = LocalContext.current + val focusManager = LocalFocusManager.current + + Text( + text = "Mot de passe oubliƩ ?", + color = XpehoColors.CONTENT_COLOR, + fontSize = 16.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier + .clickable { + focusManager.clearFocus() + + val defaultColors = CustomTabColorSchemeParams.Builder() + .setToolbarColor(XpehoColors.XPEHO_COLOR.toArgb()) + .build() + + val customTabsIntent = CustomTabsIntent.Builder() + .setDefaultColorSchemeParams(defaultColors) + .setShowTitle(true) + .setShareState(CustomTabsIntent.SHARE_STATE_OFF) + .setUrlBarHidingEnabled(true) + .build() + + customTabsIntent.launchUrl(context, BuildConfig.PASSWORD_RESET_URL.toUri()) + } + .padding(8.dp) + ) +} + @Composable private fun LoginPageIcon() { Icon( @@ -207,4 +241,4 @@ fun ErrorTextMessage(message: String) { @Composable fun ErrorTextMessagePreview() { ErrorTextMessage(message = "Veuillez entrer votre email") -} +} \ No newline at end of file