@@ -2,9 +2,12 @@ package org.openedx.auth.presentation.signin
22
33import android.content.res.Configuration.UI_MODE_NIGHT_NO
44import android.content.res.Configuration.UI_MODE_NIGHT_YES
5+ import android.net.Uri
56import android.os.Bundle
7+ import android.util.Log
68import android.view.LayoutInflater
79import android.view.ViewGroup
10+ import androidx.browser.customtabs.CustomTabsIntent
811import androidx.compose.foundation.Image
912import androidx.compose.foundation.background
1013import androidx.compose.foundation.layout.*
@@ -42,6 +45,7 @@ import org.openedx.core.ui.theme.appShapes
4245import org.openedx.core.ui.theme.appTypography
4346import org.koin.android.ext.android.inject
4447import org.koin.androidx.viewmodel.ext.android.viewModel
48+ import org.openedx.core.BuildConfig
4549
4650class SignInFragment : Fragment () {
4751
@@ -53,6 +57,10 @@ class SignInFragment : Fragment() {
5357 container : ViewGroup ? ,
5458 savedInstanceState : Bundle ? ,
5559 ) = ComposeView (requireContext()).apply {
60+ val authCode = arguments?.getString(" auth_code" )
61+ if (authCode is String ) {
62+ viewModel.login(authCode)
63+ }
5664 setViewCompositionStrategy(ViewCompositionStrategy .DisposeOnViewTreeLifecycleDestroyed )
5765 setContent {
5866 OpenEdXTheme {
@@ -62,10 +70,12 @@ class SignInFragment : Fragment() {
6270 val uiMessage by viewModel.uiMessage.observeAsState()
6371 val loginSuccess by viewModel.loginSuccess.observeAsState(initial = false )
6472
73+ Log .d(" TEST111" , context.packageName)
6574 LoginScreen (
6675 windowSize = windowSize,
6776 showProgress = showProgress,
6877 uiMessage = uiMessage,
78+ browserLogin = BuildConfig .BROWSER_LOGIN ,
6979 onLoginClick = { login, password ->
7080 viewModel.login(login, password)
7181 },
@@ -76,6 +86,20 @@ class SignInFragment : Fragment() {
7686 onForgotPasswordClick = {
7787 viewModel.forgotPasswordClickedEvent()
7888 router.navigateToRestorePassword(parentFragmentManager)
89+ },
90+ onLoginClickOauth = {
91+ val uri = Uri .parse(" ${BuildConfig .BASE_URL } oauth2/authorize" )
92+ .buildUpon()
93+ .appendQueryParameter(" client_id" , BuildConfig .CLIENT_ID )
94+ .appendQueryParameter(" redirect_uri" , " ${context.packageName} ://oauth2Callback" )
95+ .appendQueryParameter(" response_type" , " code" )
96+ .build()
97+ val intent = CustomTabsIntent .Builder ()
98+ .setUrlBarHidingEnabled(true )
99+ .setShowTitle(true )
100+ .build()
101+ intent.launchUrl(context, uri)
102+
79103 }
80104 )
81105
@@ -94,7 +118,9 @@ private fun LoginScreen(
94118 windowSize : WindowSize ,
95119 showProgress : Boolean ,
96120 uiMessage : UIMessage ? ,
121+ browserLogin : Boolean ,
97122 onLoginClick : (login: String , password: String ) -> Unit ,
123+ onLoginClickOauth : () -> Unit ,
98124 onRegisterClick : () -> Unit ,
99125 onForgotPasswordClick : () -> Unit
100126) {
@@ -187,13 +213,27 @@ private fun LoginScreen(
187213 style = MaterialTheme .appTypography.titleSmall
188214 )
189215 Spacer (modifier = Modifier .height(24 .dp))
190- AuthForm (
191- buttonWidth,
192- showProgress,
193- onLoginClick,
194- onRegisterClick,
195- onForgotPasswordClick
196- )
216+ if (browserLogin) {
217+ Column (
218+ modifier = Modifier .fillMaxSize(),
219+ verticalArrangement = Arrangement .SpaceAround ,
220+ horizontalAlignment = Alignment .CenterHorizontally ,
221+ ) {
222+ OpenEdXButton (
223+ width = buttonWidth,
224+ text = stringResource(id = R .string.auth_sign_in),
225+ onClick = onLoginClickOauth,
226+ )
227+ }
228+ } else {
229+ AuthForm (
230+ buttonWidth,
231+ showProgress,
232+ onLoginClick,
233+ onRegisterClick,
234+ onForgotPasswordClick,
235+ )
236+ }
197237 }
198238 }
199239 }
@@ -334,9 +374,11 @@ private fun SignInScreenPreview() {
334374 windowSize = WindowSize (WindowType .Compact , WindowType .Compact ),
335375 showProgress = false ,
336376 uiMessage = null ,
377+ browserLogin = true ,
337378 onLoginClick = { _, _ ->
338379
339380 },
381+ onLoginClickOauth = {},
340382 onRegisterClick = {},
341383 onForgotPasswordClick = {}
342384 )
@@ -353,9 +395,11 @@ private fun SignInScreenTabletPreview() {
353395 windowSize = WindowSize (WindowType .Expanded , WindowType .Expanded ),
354396 showProgress = false ,
355397 uiMessage = null ,
398+ browserLogin = true ,
356399 onLoginClick = { _, _ ->
357400
358401 },
402+ onLoginClickOauth = {},
359403 onRegisterClick = {},
360404 onForgotPasswordClick = {}
361405 )
0 commit comments