Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,26 @@ import com.teamwable.designsystem.theme.WableTheme
@Composable
fun BoardRequestButton(
modifier: Modifier = Modifier,
textWhite: String = stringResource(R.string.str_community_floating_main),
textSky: String = stringResource(R.string.str_community_floating_sub),
onClick: () -> Unit,
) {
WableAnnotatedTextButton(
text = getAnnotatedString(),
text = getRequestBoardString(textWhite, textSky),
onClick = onClick,
modifier = modifier,
buttonStyle = BigButtonDefaults.blackBigButtonStyle(),
)
}

@Composable
private fun getAnnotatedString(): AnnotatedString {
private fun getRequestBoardString(
textWhite: String, textSky: String,
): AnnotatedString {
val annotatedText = buildAnnotatedString {
append(stringResource(R.string.str_community_floating_main))
append(textWhite)
withStyle(style = SpanStyle(color = WableTheme.colors.sky50)) {
append(stringResource(R.string.str_community_floating_sub))
append(textSky)
}
}
return annotatedText
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fun QuizMainRoute(

@Composable
fun QuizMainScreen(
time: String = "00:00",
time: String,
onBtnClick: () -> Unit = {},
) {
Column(
Expand Down Expand Up @@ -106,6 +106,8 @@ fun QuizMainScreen(
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(horizontal = 16.dp, vertical = 20.dp),
textWhite = stringResource(R.string.str_quiz_main_btn_white),
textSky = stringResource(R.string.str_quiz_main_btn_sky),
onClick = onBtnClick,
)
}
Expand All @@ -117,6 +119,6 @@ fun QuizMainScreen(
@DevicePreviews
private fun QuizMainScreenPreview() {
WableTheme {
QuizMainScreen()
QuizMainScreen(time = "00 : 00")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ class QuizMainViewModel @Inject constructor(
)

val remainingTime: StateFlow<String> = getRemainingTimeUseCase.invoke()
.map { (hours, minutes) -> "%d:%02d".format(hours, minutes) }
.map { (hours, minutes) -> "%02d : %02d".format(hours, minutes) }
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
initialValue = "00:00",
initialValue = "00 : 00",
)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.teamwable.quiz.start

import android.os.SystemClock
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.viewModelScope
import com.teamwable.common.base.BaseViewModel
import com.teamwable.data.repository.QuizRepository
Expand All @@ -17,10 +19,15 @@ import javax.inject.Inject
class QuizStartViewModel @Inject constructor(
private val quizRepository: QuizRepository,
private val userInfoRepository: UserInfoRepository,
private val savedStateHandle: SavedStateHandle,
) : BaseViewModel<QuizStartIntent, QuizStartState, QuizStartSideEffect>(
initialState = QuizStartState(),
) {
private var startTimeMillis: Long = 0L
private var startTimeMillis: Long
get() = savedStateHandle[KEY_START_TIME] ?: 0L
set(value) {
savedStateHandle[KEY_START_TIME] = value
}

override fun initialDataLoad() {
onIntent(QuizStartIntent.LoadInitialData)
Expand All @@ -39,7 +46,7 @@ class QuizStartViewModel @Inject constructor(
viewModelScope.launch {
quizRepository.getQuiz()
.onSuccess { quizModel ->
startTimeMillis = System.currentTimeMillis()
if (startTimeMillis == 0L) startTimeMillis = SystemClock.elapsedRealtime()
intent { copy(quizModel = quizModel) }
}
.onFailure { postSideEffect(QuizStartSideEffect.ShowSnackBar(it)) }
Expand Down Expand Up @@ -69,8 +76,11 @@ class QuizStartViewModel @Inject constructor(
}

private fun getElapsedTime(): Int {
val endTimeMillis = System.currentTimeMillis()
val elapsedSeconds = (endTimeMillis - startTimeMillis) / 1000
return elapsedSeconds.toInt()
val elapsedMillis = SystemClock.elapsedRealtime() - startTimeMillis
return (elapsedMillis / 1000).toInt()
}

companion object {
private const val KEY_START_TIME = "start_time_millis"
}
}
2 changes: 2 additions & 0 deletions feature/quiz/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<resources>
<!-- quiz main ν™”λ©΄-->
<string name="str_quiz_main_title">λ‹€μŒ ν€΄μ¦ˆ μ°Έμ—¬κΉŒμ§€\n남은 μ‹œκ°„</string>
<string name="str_quiz_main_btn_white">"와블에 λŒ€ν•œ μƒˆλ‘œμš΄ 의견이 μžˆλ‹€λ©΄? "</string>
<string name="str_quiz_main_btn_sky">β†’</string>
<!-- quiz start ν™”λ©΄-->
<string name="str_quiz_start_title">정닡을 κ³¨λΌμ£Όμ„Έμš”!</string>
<string name="btn_quiz_start_submit">μ œμΆœν•˜κΈ°</string>
Expand Down