Skip to content

Commit

Permalink
Merge branch 'main' into fix/receive-info-on-login
Browse files Browse the repository at this point in the history
  • Loading branch information
JH747 authored Nov 26, 2023
2 parents 42ac05c + 4d41673 commit ac464d0
Show file tree
Hide file tree
Showing 43 changed files with 307 additions and 239 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import androidx.activity.compose.setContent
import androidx.activity.viewModels
import com.example.speechbuddy.compose.SpeechBuddyAuth
import com.example.speechbuddy.ui.SpeechBuddyTheme
import com.example.speechbuddy.viewmodel.DisplaySettingsViewModel
import com.example.speechbuddy.viewmodel.LoginViewModel
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class AuthActivity : BaseActivity() {

private val loginViewModel: LoginViewModel by viewModels()
private val displaySettingsViewModel: DisplaySettingsViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -23,7 +25,10 @@ class AuthActivity : BaseActivity() {
checkPreviousAuthUser()

setContent {
SpeechBuddyTheme {
SpeechBuddyTheme(
settingsRepository = settingsRepository,
initialDarkMode = getInitialDarkMode()
) {
SpeechBuddyAuth()
}
}
Expand All @@ -41,6 +46,10 @@ class AuthActivity : BaseActivity() {
finish()
}

private fun getInitialDarkMode(): Boolean {
return displaySettingsViewModel.getDarkMode()
}

private fun checkPreviousAuthUser() {
loginViewModel.checkPreviousUser()
}
Expand Down
32 changes: 7 additions & 25 deletions frontend/app/src/main/java/com/example/speechbuddy/HomeActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.compose.runtime.mutableStateOf
import androidx.core.view.WindowCompat
import androidx.lifecycle.Observer
import com.example.speechbuddy.compose.SpeechBuddyHome
Expand All @@ -26,28 +27,16 @@ class HomeActivity : BaseActivity() {

super.onCreate(savedInstanceState)

val isBeingReloadedForDarkModeChange = intent.getBooleanExtra("isBeingReloadedForDarkModeChange", false)

setContent {
SpeechBuddyTheme(
darkTheme = getDarkMode()
settingsRepository = settingsRepository,
initialDarkMode = getInitialDarkMode()
) {
SpeechBuddyHome(getInitialPage(), isBeingReloadedForDarkModeChange)
SpeechBuddyHome(getInitialPage())
}
}

subscribeObservers()

val previousDarkMode = getDarkMode()

val darkModeObserver = Observer<Boolean?> { darkMode ->
if (darkMode != previousDarkMode) {
recreateHomeActivity()
}
}

settingsRepository.darkModeLiveData.observeForever(darkModeObserver)

}

private fun subscribeObservers() {
Expand All @@ -62,20 +51,13 @@ class HomeActivity : BaseActivity() {
finish()
}

private fun recreateHomeActivity() {
val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("isBeingReloadedForDarkModeChange", true)
startActivity(intent)
finish()
private fun getInitialPage(): Boolean {
return displaySettingsViewModel.getInitialPage()
}

private fun getDarkMode(): Boolean {
private fun getInitialDarkMode(): Boolean {
return displaySettingsViewModel.getDarkMode()
}

private fun getInitialPage(): Boolean {
return displaySettingsViewModel.getInitialPage()
}

// hides keyboard
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ data class BottomNavItem(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SpeechBuddyHome(
initialPage: Boolean,
isBeingReloadedForDarkModeChange: Boolean
initialPage: Boolean
) {
val navController = rememberNavController()
val navItems = listOf(
Expand Down Expand Up @@ -93,8 +92,7 @@ fun SpeechBuddyHome(
bottomPaddingValues = paddingValues,
initialPage = initialPage,
showBottomNavBar = { bottomNavBarState.value = true },
hideBottomNavBar = { bottomNavBarState.value = false },
isBeingReloadedForDarkModeChange = isBeingReloadedForDarkModeChange
hideBottomNavBar = { bottomNavBarState.value = false }
)
}
}
Expand Down Expand Up @@ -151,12 +149,9 @@ private fun SpeechBuddyHomeNavHost(
initialPage: Boolean,
showBottomNavBar: () -> Unit,
hideBottomNavBar: () -> Unit,
isBeingReloadedForDarkModeChange: Boolean,
) {
val startDestination =
if (isBeingReloadedForDarkModeChange) {
"settings"
} else if (initialPage) {
if (initialPage) {
"symbol_selection"
} else {
"text_to_speech"
Expand All @@ -182,8 +177,7 @@ private fun SpeechBuddyHomeNavHost(
}
composable("settings") {
SettingsScreen(
bottomPaddingValues = bottomPaddingValues,
isBeingReloadedForDarkModeChange = isBeingReloadedForDarkModeChange
bottomPaddingValues = bottomPaddingValues
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ fun EmailVerificationScreen(
viewModel: EmailVerificationViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsState()
val loading by viewModel.loading.observeAsState()

val isEmailError = uiState.error?.type == EmailVerificationErrorType.EMAIL
val isCodeError = uiState.error?.type == EmailVerificationErrorType.CODE
Expand Down Expand Up @@ -87,7 +86,7 @@ fun EmailVerificationScreen(
ButtonUi(
text = stringResource(id = R.string.send_code),
onClick = { viewModel.sendCode() },
isEnabled = !isEmailError,
isEnabled = !isEmailError && uiState.buttonEnabled,
level = ButtonLevel.TERTIARY
)
},
Expand Down Expand Up @@ -126,16 +125,19 @@ fun EmailVerificationScreen(
ButtonUi(
text = stringResource(id = R.string.next),
onClick = { viewModel.verifyEmail(navigateCallback = navigateCallback) },
isEnabled = uiState.isCodeSuccessfullySent
isEnabled = uiState.isCodeSuccessfullySent && uiState.buttonEnabled
)
}
}

if (loading == true) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
uiState.loading.let { loading ->
if (loading) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,4 @@ fun LandingScreen(
}
}
}
}

@Preview
@Composable
private fun LandingScreenPreview() {
SpeechBuddyTheme {
LandingScreen(onLoginClick = {})
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -103,21 +105,33 @@ fun LoginScreen(
onClick = {
viewModel.login()
},
isEnabled = !isError,
isEnabled = !isError && uiState.buttonEnabled,
isError = isError
)
ButtonUi(
text = stringResource(id = R.string.forgot_password),
onClick = onResetPasswordClick,
isError = isError,
level = ButtonLevel.SECONDARY
level = ButtonLevel.SECONDARY,
isEnabled = uiState.buttonEnabled
)
}

ButtonUi(
text = stringResource(id = R.string.signup),
onClick = onSignupClick,
modifier = Modifier.offset(y = 152.dp),
isEnabled = uiState.buttonEnabled
)
}
}

uiState.loading.let { loading ->
if (loading) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -101,7 +103,18 @@ fun ResetPasswordScreen(
text = stringResource(id = R.string.next),
onClick = { viewModel.resetPassword(onSuccess = navigateToLogin) },
isError = isError,
level = ButtonLevel.PRIMARY
level = ButtonLevel.PRIMARY,
isEnabled = uiState.buttonEnabled
)
}
}

uiState.loading.let { loading ->
if (loading) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,15 @@ fun AccountSettings(
) {
ButtonUi(
text = stringResource(id = R.string.logout),
onClick = { viewModel.showAlert(AccountSettingsAlert.BACKUP) }
onClick = { viewModel.showAlert(AccountSettingsAlert.BACKUP) },
isEnabled = uiState.buttonEnabled
)

ButtonUi(
text = stringResource(id = R.string.withdraw),
onClick = { viewModel.showAlert(AccountSettingsAlert.WITHDRAW) },
level = ButtonLevel.QUATERNARY
level = ButtonLevel.QUATERNARY,
isEnabled = uiState.buttonEnabled
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ fun BackupSettings(
viewModel: BackupSettingsViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsState()
val loading by viewModel.loading.observeAsState()

Surface(
modifier = modifier.fillMaxSize()
Expand Down Expand Up @@ -84,7 +83,8 @@ fun BackupSettings(
Switch(
checked = uiState.isAutoBackupEnabled,
onCheckedChange = { viewModel.setAutoBackup(it) },
modifier = Modifier.heightIn(max = 32.dp)
modifier = Modifier.heightIn(max = 32.dp),
enabled = uiState.buttonEnabled
)
}
)
Expand All @@ -94,7 +94,8 @@ fun BackupSettings(

ButtonUi(
text = stringResource(id = R.string.backup_now),
onClick = { viewModel.backup() }
onClick = { viewModel.backup() },
isEnabled = uiState.buttonEnabled
)
}
}
Expand Down Expand Up @@ -124,11 +125,14 @@ fun BackupSettings(
}
}

if (loading == true) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
uiState.loading.let { loading ->
if (loading) {
CircularProgressIndicator(
modifier = Modifier
.fillMaxSize()
.wrapContentSize()
)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,4 @@ fun SettingsRowText(
style = MaterialTheme.typography.bodyMedium
)
}
}

@Preview(showBackground = true)
@Composable
fun SettingsRowPreview() {
SpeechBuddyTheme {
SettingsRow(
label = "이메일",
content = {
SettingsRowText(text = "[email protected]")
}
)
}
}
Loading

0 comments on commit ac464d0

Please sign in to comment.