Skip to content

Commit

Permalink
Merge pull request #221 from TimerTiTi/220-fix-bug
Browse files Browse the repository at this point in the history
close #220 fix bug
  • Loading branch information
koreatlwls authored Jan 19, 2025
2 parents 11cec79 + 9e74008 commit cb33d86
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 78 deletions.
4 changes: 2 additions & 2 deletions build-logic/src/main/kotlin/com/titi/common/BuildInfo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ object BuildType {

object AppConfig {
const val APP_ID = "com.titi.app"
const val APP_VERSION_NAME = "1.4.10"
const val APP_VERSION_CODE = 52
const val APP_VERSION_NAME = "1.4.11"
const val APP_VERSION_CODE = 53
const val APP_NAME = "TiTi"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.titi.app.feature.log.ui

import android.content.res.Configuration
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
Expand All @@ -27,6 +26,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -43,7 +43,6 @@ import com.titi.app.feature.log.ui.component.SettingBottomSheet
import java.time.LocalDate
import kotlinx.coroutines.launch

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun LogScreen(
viewModel: LogViewModel = mavericksViewModel(),
Expand All @@ -52,6 +51,8 @@ fun LogScreen(
) {
val scope = rememberCoroutineScope()
val orientation = LocalConfiguration.current.orientation
val context = LocalContext.current
val isTablet = context.resources.configuration.smallestScreenWidthDp >= 600

val pagerState = rememberPagerState(
pageCount = {
Expand Down Expand Up @@ -138,7 +139,10 @@ fun LogScreen(
},
)

if (showSettingButton && orientation == Configuration.ORIENTATION_PORTRAIT) {
if (
(showSettingButton && orientation == Configuration.ORIENTATION_PORTRAIT) ||
(showSettingButton && isTablet)
) {
TdsIconButton(
modifier = Modifier.align(Alignment.CenterEnd),
onClick = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import kotlinx.coroutines.launch

@SuppressLint("UnusedContentLambdaTargetStateParameter")
@Composable
fun TiTiApp(splashResultState: SplashResultState) {
fun TiTiApp(isConfigurationChange: Boolean, splashResultState: SplashResultState) {
val requestPermissionLauncher =
rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission(),
Expand Down Expand Up @@ -64,6 +64,7 @@ fun TiTiApp(splashResultState: SplashResultState) {

TiTiNavHost(
modifier = Modifier.fillMaxSize(),
isConfigurationChange = isConfigurationChange,
splashResultState = splashResultState,
onShowResetDailySnackBar = { date ->
scope.launch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,15 @@ import com.titi.app.feature.webview.webViewGraph
@Composable
fun TiTiNavHost(
modifier: Modifier = Modifier,
isConfigurationChange: Boolean,
splashResultState: SplashResultState,
onShowResetDailySnackBar: (String) -> Unit,
) {
val navController = rememberNavController()
val context = LocalContext.current

LaunchedEffect(Unit) {
if (splashResultState.recordTimes.recording) {
if (splashResultState.recordTimes.recording && !isConfigurationChange) {
navController.navigateToMeasure(splashResultState.toJson())
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,18 @@ package com.titi.app.feature.main.ui.main

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.titi.app.core.designsystem.theme.TiTiTheme
import com.titi.app.core.ui.removeNotification
import com.titi.app.domain.color.usecase.GetTimeColorFlowUseCase
import com.titi.app.feature.main.navigation.TiTiApp
import com.titi.app.tds.theme.TtdsTheme
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var getTimeColorFlowUseCase: GetTimeColorFlowUseCase

private val viewModel: MainViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -31,22 +25,16 @@ class MainActivity : ComponentActivity() {
viewModel.splashResultState == null
}

enableEdgeToEdge(
statusBarStyle = SystemBarStyle.auto(
android.graphics.Color.TRANSPARENT,
android.graphics.Color.TRANSPARENT,
),
navigationBarStyle = SystemBarStyle.auto(
android.graphics.Color.TRANSPARENT,
android.graphics.Color.TRANSPARENT,
),
)
enableEdgeToEdge()

setContent {
TiTiTheme {
TtdsTheme {
viewModel.splashResultState?.let {
TiTiApp(splashResultState = it)
TiTiApp(
splashResultState = it,
isConfigurationChange = savedInstanceState != null,
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.app.NotificationCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import com.airbnb.mvrx.asMavericksArgs
import com.airbnb.mvrx.compose.collectAsState
import com.airbnb.mvrx.compose.mavericksViewModel
Expand Down Expand Up @@ -79,7 +76,6 @@ fun MeasuringScreen(splashResultState: String, onFinish: (isFinish: Boolean) ->

val uiState by viewModel.collectAsState()
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var showSetExactAlarmPermissionDialog by remember { mutableStateOf(false) }

val (alarmTitle, alarmFinishMessage, alarmFiveMinutesBeforeFinish) =
Expand All @@ -98,6 +94,8 @@ fun MeasuringScreen(splashResultState: String, onFinish: (isFinish: Boolean) ->
}

val stopMeasuring = {
context.removeNotification()

viewModel.stopMeasuring(
recordTimes = uiState.recordTimes,
measureTime = uiState.measureTime,
Expand All @@ -111,53 +109,14 @@ fun MeasuringScreen(splashResultState: String, onFinish: (isFinish: Boolean) ->
}
}

DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
when (event) {
Lifecycle.Event.ON_CREATE, Lifecycle.Event.ON_START,
Lifecycle.Event.ON_ANY, Lifecycle.Event.ON_RESUME,
-> Unit

Lifecycle.Event.ON_STOP, Lifecycle.Event.ON_PAUSE, Lifecycle.Event.ON_DESTROY -> {
if (!isFinish) {
makeInProgressNotification(context)
}
}
}
}

lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}

LaunchedEffect(isFinish) {
if (isFinish) {
stopMeasuring()
} else {
val timerTime = splashResultStateModel.recordTimes.savedTimerTime
val stopWatchTime = splashResultStateModel.recordTimes.savedStopWatchTime
val recordingMode = splashResultStateModel.recordTimes.recordingMode

viewModel.setAlarm(
title = alarmTitle,
finishMessage = alarmFinishMessage,
fiveMinutesBeforeFinish = alarmFiveMinutesBeforeFinish,
measureTime = if (recordingMode == 1) {
timerTime - uiState.measureTime
} else {
stopWatchTime + uiState.measureTime
},
)

showSetExactAlarmPermissionDialog = !viewModel.canSetAlarm()
}
}

BackHandler {
stopMeasuring()
context.removeNotification()
}

DisposableEffect(Unit) {
Expand All @@ -171,6 +130,25 @@ fun MeasuringScreen(splashResultState: String, onFinish: (isFinish: Boolean) ->
}

LaunchedEffect(Unit) {
makeInProgressNotification(context)

val timerTime = splashResultStateModel.recordTimes.savedTimerTime
val stopWatchTime = splashResultStateModel.recordTimes.savedStopWatchTime
val recordingMode = splashResultStateModel.recordTimes.recordingMode

viewModel.setAlarm(
title = alarmTitle,
finishMessage = alarmFinishMessage,
fiveMinutesBeforeFinish = alarmFiveMinutesBeforeFinish,
measureTime = if (recordingMode == 1) {
timerTime - uiState.measureTime
} else {
stopWatchTime + uiState.measureTime
},
)

showSetExactAlarmPermissionDialog = !viewModel.canSetAlarm()

viewModel.onFinish.collectLatest {
if (it) {
onFinish(uiState.measuringRecordTimes.savedTime <= 0L)
Expand Down Expand Up @@ -208,7 +186,6 @@ fun MeasuringScreen(splashResultState: String, onFinish: (isFinish: Boolean) ->
},
onFinishClick = {
stopMeasuring()
context.removeNotification()
},
)
}
Expand All @@ -220,10 +197,12 @@ private fun MeasuringScreen(
onFinishClick: () -> Unit,
) {
val configuration = LocalConfiguration.current
val context = LocalContext.current
val isTablet = context.resources.configuration.smallestScreenWidthDp >= 600

Scaffold(containerColor = Color.Black) {
when (configuration.orientation) {
Configuration.ORIENTATION_PORTRAIT -> {
when {
configuration.orientation == Configuration.ORIENTATION_PORTRAIT || isTablet -> {
Column(
modifier = Modifier
.fillMaxSize()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.airbnb.mvrx.asMavericksArgs
import com.airbnb.mvrx.compose.collectAsState
Expand Down Expand Up @@ -170,11 +171,13 @@ private fun StopWatchScreen(
onNavigateToDestination: (TopLevelDestination) -> Unit,
) {
val configuration = LocalConfiguration.current
val context = LocalContext.current
val isTablet = context.resources.configuration.smallestScreenWidthDp >= 600

Scaffold(
containerColor = Color(uiState.timeColor.stopwatchBackgroundColor),
bottomBar = {
if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT || isTablet) {
TdsBottomNavigationBar(
currentTopLevelDestination = TopLevelDestination.STOPWATCH,
bottomNavigationColor = uiState.timeColor.stopwatchBackgroundColor,
Expand All @@ -183,8 +186,8 @@ private fun StopWatchScreen(
}
},
) {
when (configuration.orientation) {
Configuration.ORIENTATION_PORTRAIT -> {
when {
configuration.orientation == Configuration.ORIENTATION_PORTRAIT || isTablet -> {
Column(
modifier = Modifier
.fillMaxSize()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.airbnb.mvrx.asMavericksArgs
import com.airbnb.mvrx.compose.collectAsState
Expand Down Expand Up @@ -195,11 +196,13 @@ private fun TimerScreen(
onNavigateToDestination: (TopLevelDestination) -> Unit,
) {
val configuration = LocalConfiguration.current
val context = LocalContext.current
val isTablet = context.resources.configuration.smallestScreenWidthDp >= 600

Scaffold(
containerColor = Color(uiState.timeColor.timerBackgroundColor),
bottomBar = {
if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT || isTablet) {
TdsBottomNavigationBar(
currentTopLevelDestination = TopLevelDestination.TIMER,
bottomNavigationColor = uiState.timeColor.timerBackgroundColor,
Expand All @@ -208,8 +211,8 @@ private fun TimerScreen(
}
},
) {
when (configuration.orientation) {
Configuration.ORIENTATION_PORTRAIT -> {
when {
configuration.orientation == Configuration.ORIENTATION_PORTRAIT || isTablet -> {
Column(
modifier = Modifier
.fillMaxSize()
Expand Down
6 changes: 4 additions & 2 deletions release-note.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
TiTi android 1.4.10
- Special Characters 대응
TiTi android 1.4.11
- 측정 시작 시 알림
- 기록 두번 측정되는 현상 수정
- 태블릿 ui 수정

0 comments on commit cb33d86

Please sign in to comment.