This commit is contained in:
2025-10-12 22:08:39 +08:00
parent bf6748a2fe
commit ede72fdedc
52 changed files with 1325 additions and 247 deletions

View File

@@ -37,6 +37,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.taskttl.core.ui.LoadingScreen
import com.taskttl.data.state.TaskEffect
import com.taskttl.data.state.TaskIntent
import com.taskttl.data.viewmodel.TaskViewModel
@@ -228,5 +229,6 @@ fun TaskDetailScreen(
}
}
if (state.isLoading) LoadingScreen()
}
}

View File

@@ -38,6 +38,9 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.taskttl.core.routes.Routes
import com.taskttl.core.ui.LoadingScreen
import com.taskttl.core.utils.ToastUtils
import com.taskttl.data.local.model.Category
import com.taskttl.data.local.model.Task
import com.taskttl.data.local.model.TaskPriority
@@ -78,6 +81,18 @@ fun TaskEditorScreen(
viewModel: TaskViewModel = koinViewModel()
) {
LaunchedEffect(Unit) {
viewModel.effects.collect { effect ->
when (effect) {
is TaskEffect.ShowMessage -> {
ToastUtils.show(effect.message)
}
else -> {}
}
}
}
LaunchedEffect(taskId) {
taskId?.let { viewModel.handleIntent(TaskIntent.GetTaskById(it)) }
}
@@ -277,5 +292,6 @@ fun TaskEditorScreen(
)
}
}
if (state.isLoading) LoadingScreen()
}
}

View File

@@ -53,6 +53,9 @@ import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import com.taskttl.core.routes.Routes
import com.taskttl.core.ui.ActionButtonListItem
import com.taskttl.core.ui.ErrorDialog
import com.taskttl.core.ui.LoadingScreen
import com.taskttl.core.utils.ToastUtils
import com.taskttl.data.local.model.Task
import com.taskttl.data.state.TaskEffect
import com.taskttl.data.state.TaskIntent
@@ -90,6 +93,10 @@ fun TaskScreen(
LaunchedEffect(Unit) {
viewModel.effects.collect { effect ->
when (effect) {
is TaskEffect.ShowMessage -> {
ToastUtils.show(effect.message)
}
is TaskEffect.NavigateToTaskDetail -> {
navController.navigate(Routes.Main.Task.TaskDetail(effect.taskId))
}
@@ -100,7 +107,10 @@ fun TaskScreen(
}
state.error?.let { error ->
LaunchedEffect(error) { viewModel.handleIntent(TaskIntent.ClearError) }
ErrorDialog(
errorMessage = state.error,
onDismiss = { viewModel.handleIntent(TaskIntent.ClearError) }
)
}
Box(
@@ -207,7 +217,7 @@ fun TaskScreen(
item { Spacer(Modifier) }
itemsIndexed(
state.filteredTasks,
key = { index, item -> item.title }) { index, task ->
key = { index, item -> item.id }) { index, task ->
var isOpen by remember { mutableStateOf(false) }
TaskCardItem(
@@ -248,6 +258,7 @@ fun TaskScreen(
contentDescription = stringResource(Res.string.title_add_task)
)
}
if (state.isLoading) LoadingScreen()
}
}