Skip to content

Commit

Permalink
feat: add flag to remove registration from app
Browse files Browse the repository at this point in the history
  • Loading branch information
kaustavb12 committed Oct 23, 2024
1 parent 4d36310 commit bd8c273
Show file tree
Hide file tree
Showing 21 changed files with 95 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ class LogistrationFragment : Fragment() {
},
onSearchClick = { querySearch ->
viewModel.navigateToDiscovery(parentFragmentManager, querySearch)
}
},
isRegistrationEnabled = viewModel.isRegistrationEnabled
)
}
}
Expand All @@ -97,6 +98,7 @@ private fun LogistrationScreen(
onSearchClick: (String) -> Unit,
onRegisterClick: () -> Unit,
onSignInClick: () -> Unit,
isRegistrationEnabled: Boolean,
) {

var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
Expand Down Expand Up @@ -182,7 +184,11 @@ private fun LogistrationScreen(

Spacer(modifier = Modifier.weight(1f))

AuthButtonsPanel(onRegisterClick = onRegisterClick, onSignInClick = onSignInClick)
AuthButtonsPanel(
onRegisterClick = onRegisterClick,
onSignInClick = onSignInClick,
showRegisterButton = isRegistrationEnabled
)
}
}
}
Expand All @@ -198,7 +204,24 @@ private fun LogistrationPreview() {
LogistrationScreen(
onSearchClick = {},
onSignInClick = {},
onRegisterClick = {}
onRegisterClick = {},
isRegistrationEnabled = true,
)
}
}

@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO)
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Preview(name = "NEXUS_9_Light", device = Devices.NEXUS_9, uiMode = Configuration.UI_MODE_NIGHT_NO)
@Preview(name = "NEXUS_9_Night", device = Devices.NEXUS_9, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun LogistrationRegistrationDisabledPreview() {
OpenEdXTheme {
LogistrationScreen(
onSearchClick = {},
onSignInClick = {},
onRegisterClick = {},
isRegistrationEnabled = false,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class LogistrationViewModel(
) : BaseViewModel() {

private val discoveryTypeWebView get() = config.getDiscoveryConfig().isViewTypeWebView()
val isRegistrationEnabled get() = config.isRegistrationEnabled()

fun navigateToSignIn(parentFragmentManager: FragmentManager) {
router.navigateToSignIn(parentFragmentManager, courseId, null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ internal data class SignInUIState(
val isMicrosoftAuthEnabled: Boolean = false,
val isSocialAuthEnabled: Boolean = false,
val isLogistrationEnabled: Boolean = false,
val isRegistrationEnabled: Boolean = true,
val showProgress: Boolean = false,
val loginSuccess: Boolean = false,
val agreement: RegistrationField? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class SignInViewModel(
isMicrosoftAuthEnabled = config.getMicrosoftConfig().isEnabled(),
isSocialAuthEnabled = config.isSocialAuthEnabled(),
isLogistrationEnabled = config.isPreLoginExperienceEnabled(),
isRegistrationEnabled = config.isRegistrationEnabled(),
agreement = agreementProvider.getAgreement(isSignIn = true)?.createHonorCodeField(),
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ private fun AuthForm(
.fillMaxWidth()
.padding(top = 20.dp, bottom = 36.dp)
) {
if (state.isLogistrationEnabled.not()) {
if (state.isLogistrationEnabled.not() and state.isRegistrationEnabled) {
Text(
modifier = Modifier
.testTag("txt_register")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class SignInViewModelTest {
every { config.getFacebookConfig() } returns FacebookConfig()
every { config.getGoogleConfig() } returns GoogleConfig()
every { config.getMicrosoftConfig() } returns MicrosoftConfig()
every { config.isRegistrationEnabled() } returns true
}

@After
Expand Down
5 changes: 5 additions & 0 deletions core/src/main/java/org/openedx/core/config/Config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ class Config(context: Context) {
return getBoolean(COURSE_UNIT_PROGRESS_ENABLED, false)
}

fun isRegistrationEnabled(): Boolean {
return getBoolean(REGISTRATION_ENABLED, true)
}

private fun getString(key: String, defaultValue: String): String {
val element = getObject(key)
return if (element != null) {
Expand Down Expand Up @@ -162,6 +166,7 @@ class Config(context: Context) {
private const val GOOGLE = "GOOGLE"
private const val MICROSOFT = "MICROSOFT"
private const val PRE_LOGIN_EXPERIENCE_ENABLED = "PRE_LOGIN_EXPERIENCE_ENABLED"
private const val REGISTRATION_ENABLED = "REGISTRATION_ENABLED"
private const val DISCOVERY = "DISCOVERY"
private const val PROGRAM = "PROGRAM"
private const val BRANCH = "BRANCH"
Expand Down
31 changes: 19 additions & 12 deletions core/src/main/java/org/openedx/core/ui/ComposeCommon.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1172,22 +1172,29 @@ fun ConnectionErrorView(
fun AuthButtonsPanel(
onRegisterClick: () -> Unit,
onSignInClick: () -> Unit,
showRegisterButton: Boolean,
) {
Row {
OpenEdXButton(
modifier = Modifier
.testTag("btn_register")
.width(0.dp)
.weight(1f),
text = stringResource(id = R.string.core_register),
onClick = { onRegisterClick() }
)

if (showRegisterButton) {
OpenEdXButton(
modifier = Modifier
.testTag("btn_register")
.width(0.dp)
.weight(1f),
text = stringResource(id = R.string.core_register),
onClick = { onRegisterClick() }
)
}
OpenEdXOutlinedButton(
modifier = Modifier
.testTag("btn_sign_in")
.width(100.dp)
.padding(start = 16.dp),
.then(
if (showRegisterButton) {
Modifier.width(100.dp).padding(start = 16.dp)
} else {
Modifier.weight(1f)
}
),
text = stringResource(id = R.string.core_sign_in),
onClick = { onSignInClick() },
borderColor = MaterialTheme.appColors.textFieldBorder,
Expand Down Expand Up @@ -1310,7 +1317,7 @@ private fun ToolbarPreview() {
@Preview
@Composable
private fun AuthButtonsPanelPreview() {
AuthButtonsPanel(onRegisterClick = {}, onSignInClick = {})
AuthButtonsPanel(onRegisterClick = {}, onSignInClick = {}, showRegisterButton = true)
}

@Preview
Expand Down
2 changes: 2 additions & 0 deletions default_config/dev/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ TOKEN_TYPE: "JWT"
WHATS_NEW_ENABLED: false
#feature flag enable Social Login buttons
SOCIAL_AUTH_ENABLED: false
#feature flag to disable registration from app
REGISTRATION_ENABLED: true
#Course navigation feature flags
COURSE_NESTED_LIST_ENABLED: false
COURSE_UNIT_PROGRESS_ENABLED: false
Expand Down
2 changes: 2 additions & 0 deletions default_config/prod/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ TOKEN_TYPE: "JWT"
WHATS_NEW_ENABLED: false
#feature flag enable Social Login buttons
SOCIAL_AUTH_ENABLED: false
#feature flag to disable registration from app
REGISTRATION_ENABLED: true
#Course navigation feature flags
COURSE_NESTED_LIST_ENABLED: false
COURSE_UNIT_PROGRESS_ENABLED: false
2 changes: 2 additions & 0 deletions default_config/stage/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ TOKEN_TYPE: "JWT"
WHATS_NEW_ENABLED: false
#feature flag enable Social Login buttons
SOCIAL_AUTH_ENABLED: false
#feature flag to disable registration from app
REGISTRATION_ENABLED: true
#Course navigation feature flags
COURSE_NESTED_LIST_ENABLED: false
COURSE_UNIT_PROGRESS_ENABLED: false
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ class NativeDiscoveryFragment : Fragment() {
hasInternetConnection = viewModel.hasInternetConnection,
canShowBackButton = viewModel.canShowBackButton,
isUserLoggedIn = viewModel.isUserLoggedIn,
isRegistrationEnabled = viewModel.isRegistrationEnabled,
appUpgradeParameters = AppUpdateState.AppUpgradeParameters(
appUpgradeEvent = appUpgradeEvent,
wasUpdateDialogClosed = wasUpdateDialogClosed,
Expand Down Expand Up @@ -209,6 +210,7 @@ internal fun DiscoveryScreen(
hasInternetConnection: Boolean,
canShowBackButton: Boolean,
isUserLoggedIn: Boolean,
isRegistrationEnabled: Boolean,
appUpgradeParameters: AppUpdateState.AppUpgradeParameters,
onSearchClick: () -> Unit,
onSwipeRefresh: () -> Unit,
Expand Down Expand Up @@ -252,7 +254,8 @@ internal fun DiscoveryScreen(
) {
AuthButtonsPanel(
onRegisterClick = onRegisterClick,
onSignInClick = onSignInClick
onSignInClick = onSignInClick,
showRegisterButton = isRegistrationEnabled
)
}
}
Expand Down Expand Up @@ -517,6 +520,7 @@ private fun DiscoveryScreenPreview() {
refreshing = false,
hasInternetConnection = true,
isUserLoggedIn = false,
isRegistrationEnabled = true,
appUpgradeParameters = AppUpdateState.AppUpgradeParameters(),
onSignInClick = {},
onRegisterClick = {},
Expand Down Expand Up @@ -558,6 +562,7 @@ private fun DiscoveryScreenTabletPreview() {
refreshing = false,
hasInternetConnection = true,
isUserLoggedIn = true,
isRegistrationEnabled = true,
appUpgradeParameters = AppUpdateState.AppUpgradeParameters(),
onSignInClick = {},
onRegisterClick = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class NativeDiscoveryViewModel(
val apiHostUrl get() = config.getApiHostURL()
val isUserLoggedIn get() = corePreferences.user != null
val canShowBackButton get() = config.isPreLoginExperienceEnabled() && !isUserLoggedIn
val isRegistrationEnabled: Boolean get() = config.isRegistrationEnabled()

private val _uiState = MutableLiveData<DiscoveryUIState>(DiscoveryUIState.Loading)
val uiState: LiveData<DiscoveryUIState>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class WebViewDiscoveryFragment : Fragment() {
isPreLogin = viewModel.isPreLogin,
contentUrl = viewModel.discoveryUrl,
uriScheme = viewModel.uriScheme,
isRegistrationEnabled = viewModel.isRegistrationEnabled,
hasInternetConnection = hasInternetConnection,
checkInternetConnection = {
hasInternetConnection = viewModel.hasInternetConnection
Expand Down Expand Up @@ -173,6 +174,7 @@ private fun WebViewDiscoveryScreen(
isPreLogin: Boolean,
contentUrl: String,
uriScheme: String,
isRegistrationEnabled: Boolean,
hasInternetConnection: Boolean,
checkInternetConnection: () -> Unit,
onWebPageUpdated: (String) -> Unit,
Expand Down Expand Up @@ -206,7 +208,8 @@ private fun WebViewDiscoveryScreen(
) {
AuthButtonsPanel(
onRegisterClick = onRegisterClick,
onSignInClick = onSignInClick
onSignInClick = onSignInClick,
showRegisterButton = isRegistrationEnabled
)
}
}
Expand Down Expand Up @@ -363,6 +366,7 @@ private fun WebViewDiscoveryScreenPreview() {
contentUrl = "https://www.example.com/",
isPreLogin = false,
uriScheme = "",
isRegistrationEnabled = true,
hasInternetConnection = false,
checkInternetConnection = {},
onWebPageUpdated = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class WebViewDiscoveryViewModel(
private val webViewConfig get() = config.getDiscoveryConfig().webViewConfig

val isPreLogin get() = config.isPreLoginExperienceEnabled() && corePreferences.user == null
val isRegistrationEnabled: Boolean get() = config.isRegistrationEnabled()

private var _discoveryUrl = webViewConfig.baseUrl
val discoveryUrl: String
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class CourseDetailsFragment : Fragment() {
),
hasInternetConnection = viewModel.hasInternetConnection,
isUserLoggedIn = viewModel.isUserLoggedIn,
isRegistrationEnabled = viewModel.isRegistrationEnabled,
onReloadClick = {
viewModel.getCourseDetail()
},
Expand Down Expand Up @@ -209,6 +210,7 @@ internal fun CourseDetailsScreen(
htmlBody: String,
hasInternetConnection: Boolean,
isUserLoggedIn: Boolean,
isRegistrationEnabled: Boolean,
onReloadClick: () -> Unit,
onBackClick: () -> Unit,
onButtonClick: () -> Unit,
Expand Down Expand Up @@ -236,7 +238,8 @@ internal fun CourseDetailsScreen(
Box(modifier = Modifier.padding(horizontal = 16.dp, vertical = 32.dp)) {
AuthButtonsPanel(
onRegisterClick = onRegisterClick,
onSignInClick = onSignInClick
onSignInClick = onSignInClick,
showRegisterButton = isRegistrationEnabled
)
}
}
Expand Down Expand Up @@ -690,6 +693,7 @@ private fun CourseDetailNativeContentPreview() {
apiHostUrl = "http://localhost:8000",
hasInternetConnection = false,
isUserLoggedIn = true,
isRegistrationEnabled = true,
htmlBody = "<b>Preview text</b>",
onReloadClick = {},
onBackClick = {},
Expand All @@ -712,6 +716,7 @@ private fun CourseDetailNativeContentTabletPreview() {
apiHostUrl = "http://localhost:8000",
hasInternetConnection = false,
isUserLoggedIn = true,
isRegistrationEnabled = true,
htmlBody = "<b>Preview text</b>",
onReloadClick = {},
onBackClick = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class CourseDetailsViewModel(
) : BaseViewModel() {
val apiHostUrl get() = config.getApiHostURL()
val isUserLoggedIn get() = corePreferences.user != null
val isRegistrationEnabled: Boolean get() = config.isRegistrationEnabled()

private val _uiState = MutableLiveData<CourseDetailsUIState>(CourseDetailsUIState.Loading)
val uiState: LiveData<CourseDetailsUIState>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ class CourseInfoFragment : Fragment() {
uiMessage = uiMessage,
uriScheme = viewModel.uriScheme,
hasInternetConnection = hasInternetConnection,
isRegistrationEnabled = viewModel.isRegistrationEnabled,
checkInternetConnection = {
hasInternetConnection = viewModel.hasInternetConnection
},
Expand Down Expand Up @@ -222,6 +223,7 @@ private fun CourseInfoScreen(
uiState: CourseInfoUIState,
uiMessage: UIMessage?,
uriScheme: String,
isRegistrationEnabled: Boolean,
hasInternetConnection: Boolean,
checkInternetConnection: () -> Unit,
onRegisterClick: () -> Unit,
Expand Down Expand Up @@ -250,7 +252,8 @@ private fun CourseInfoScreen(
) {
AuthButtonsPanel(
onRegisterClick = onRegisterClick,
onSignInClick = onSignInClick
onSignInClick = onSignInClick,
showRegisterButton = isRegistrationEnabled
)
}
}
Expand Down Expand Up @@ -367,6 +370,7 @@ fun CourseInfoScreenPreview() {
),
uiMessage = null,
uriScheme = "",
isRegistrationEnabled = true,
hasInternetConnection = false,
checkInternetConnection = {},
onRegisterClick = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class CourseInfoViewModel(
val hasInternetConnection: Boolean
get() = networkConnection.isOnline()

val isRegistrationEnabled: Boolean get() = config.isRegistrationEnabled()

val uriScheme: String get() = config.getUriScheme()

private val webViewConfig get() = config.getDiscoveryConfig().webViewConfig
Expand Down
Loading

0 comments on commit bd8c273

Please sign in to comment.