fix selectedTask
This commit is contained in:
parent
0e4200057b
commit
e333a0f626
3 changed files with 37 additions and 19 deletions
|
@ -28,7 +28,7 @@ import be.ugent.sel.studeez.screens.subjects.SubjectRoute
|
||||||
import be.ugent.sel.studeez.screens.tasks.TaskRoute
|
import be.ugent.sel.studeez.screens.tasks.TaskRoute
|
||||||
import be.ugent.sel.studeez.screens.subjects.form.SubjectCreateRoute
|
import be.ugent.sel.studeez.screens.subjects.form.SubjectCreateRoute
|
||||||
import be.ugent.sel.studeez.screens.subjects.form.SubjectEditRoute
|
import be.ugent.sel.studeez.screens.subjects.form.SubjectEditRoute
|
||||||
import be.ugent.sel.studeez.screens.tasks.form.TaskAddRoute
|
import be.ugent.sel.studeez.screens.tasks.form.TaskCreateRoute
|
||||||
import be.ugent.sel.studeez.screens.tasks.form.TaskEditRoute
|
import be.ugent.sel.studeez.screens.tasks.form.TaskEditRoute
|
||||||
import be.ugent.sel.studeez.screens.timer_form.TimerAddRoute
|
import be.ugent.sel.studeez.screens.timer_form.TimerAddRoute
|
||||||
import be.ugent.sel.studeez.screens.timer_form.TimerEditRoute
|
import be.ugent.sel.studeez.screens.timer_form.TimerEditRoute
|
||||||
|
@ -105,7 +105,7 @@ fun StudeezNavGraph(
|
||||||
}
|
}
|
||||||
|
|
||||||
composable(StudeezDestinations.ADD_TASK_FORM) {
|
composable(StudeezDestinations.ADD_TASK_FORM) {
|
||||||
TaskAddRoute(
|
TaskCreateRoute(
|
||||||
goBack = goBack,
|
goBack = goBack,
|
||||||
openAndPopUp = openAndPopUp,
|
openAndPopUp = openAndPopUp,
|
||||||
viewModel = hiltViewModel(),
|
viewModel = hiltViewModel(),
|
||||||
|
|
|
@ -18,10 +18,10 @@ import be.ugent.sel.studeez.resources
|
||||||
import be.ugent.sel.studeez.R.string as AppText
|
import be.ugent.sel.studeez.R.string as AppText
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TaskAddRoute(
|
fun TaskCreateRoute(
|
||||||
goBack: () -> Unit,
|
goBack: () -> Unit,
|
||||||
openAndPopUp: (String, String) -> Unit,
|
openAndPopUp: (String, String) -> Unit,
|
||||||
viewModel: TaskFormViewModel,
|
viewModel: TaskCreateFormViewModel,
|
||||||
) {
|
) {
|
||||||
val uiState by viewModel.uiState
|
val uiState by viewModel.uiState
|
||||||
TaskForm(
|
TaskForm(
|
||||||
|
@ -37,7 +37,7 @@ fun TaskAddRoute(
|
||||||
fun TaskEditRoute(
|
fun TaskEditRoute(
|
||||||
goBack: () -> Unit,
|
goBack: () -> Unit,
|
||||||
openAndPopUp: (String, String) -> Unit,
|
openAndPopUp: (String, String) -> Unit,
|
||||||
viewModel: TaskFormViewModel,
|
viewModel: TaskEditFormViewModel,
|
||||||
) {
|
) {
|
||||||
val uiState by viewModel.uiState
|
val uiState by viewModel.uiState
|
||||||
TaskForm(
|
TaskForm(
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package be.ugent.sel.studeez.screens.tasks.form
|
package be.ugent.sel.studeez.screens.tasks.form
|
||||||
|
|
||||||
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import be.ugent.sel.studeez.data.SelectedSubject
|
import be.ugent.sel.studeez.data.SelectedSubject
|
||||||
import be.ugent.sel.studeez.data.SelectedTask
|
import be.ugent.sel.studeez.data.SelectedTask
|
||||||
|
@ -12,36 +13,53 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
abstract class TaskFormViewModel(
|
abstract class TaskFormViewModel(
|
||||||
private val taskDAO: TaskDAO,
|
protected val taskDAO: TaskDAO,
|
||||||
private val selectedSubject: SelectedSubject,
|
protected val selectedSubject: SelectedSubject,
|
||||||
private val selectedTask: SelectedTask,
|
protected val selectedTask: SelectedTask,
|
||||||
logService: LogService,
|
logService: LogService,
|
||||||
) : StudeezViewModel(logService) {
|
) : StudeezViewModel(logService) {
|
||||||
var uiState = mutableStateOf(
|
abstract val uiState: MutableState<TaskFormUiState>
|
||||||
if (selectedTask.isSet()) TaskFormUiState(selectedTask().name) else TaskFormUiState()
|
|
||||||
)
|
|
||||||
private set
|
|
||||||
|
|
||||||
private val name: String
|
protected val name: String
|
||||||
get() = uiState.value.name
|
get() = uiState.value.name
|
||||||
|
|
||||||
fun onNameChange(newValue: String) {
|
fun onNameChange(newValue: String) {
|
||||||
uiState.value = uiState.value.copy(name = newValue)
|
uiState.value = uiState.value.copy(name = newValue)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun onDelete(openAndPopUp: (String, String) -> Unit) {
|
@HiltViewModel
|
||||||
taskDAO.deleteTask(selectedTask())
|
class TaskCreateFormViewModel @Inject constructor(
|
||||||
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM)
|
taskDAO: TaskDAO,
|
||||||
}
|
selectedSubject: SelectedSubject,
|
||||||
|
selectedTask: SelectedTask,
|
||||||
|
logService: LogService,
|
||||||
|
) : TaskFormViewModel(taskDAO, selectedSubject, selectedTask, logService) {
|
||||||
|
override val uiState = mutableStateOf(TaskFormUiState())
|
||||||
|
|
||||||
fun onCreate(openAndPopUp: (String, String) -> Unit) {
|
fun onCreate(openAndPopUp: (String, String) -> Unit) {
|
||||||
val newTask = Task(name = name, subjectId = selectedSubject().id)
|
val newTask = Task(name = name, subjectId = selectedSubject().id)
|
||||||
taskDAO.saveTask(newTask)
|
taskDAO.saveTask(newTask)
|
||||||
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.ADD_TASK_FORM)
|
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.ADD_TASK_FORM)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class TaskEditFormViewModel @Inject constructor(
|
||||||
|
taskDAO: TaskDAO,
|
||||||
|
selectedSubject: SelectedSubject,
|
||||||
|
selectedTask: SelectedTask,
|
||||||
|
logService: LogService,
|
||||||
|
) : TaskFormViewModel(taskDAO, selectedSubject, selectedTask, logService) {
|
||||||
|
override val uiState = mutableStateOf(TaskFormUiState())
|
||||||
|
|
||||||
|
fun onDelete(openAndPopUp: (String, String) -> Unit) {
|
||||||
|
taskDAO.deleteTask(selectedTask())
|
||||||
|
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM)
|
||||||
|
}
|
||||||
|
|
||||||
fun onEdit(openAndPopUp: (String, String) -> Unit) {
|
fun onEdit(openAndPopUp: (String, String) -> Unit) {
|
||||||
val newTask = Task(name = name)
|
val newTask = selectedTask().copy(name = name)
|
||||||
taskDAO.updateTask(newTask)
|
taskDAO.updateTask(newTask)
|
||||||
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM)
|
openAndPopUp(StudeezDestinations.TASKS_SCREEN, StudeezDestinations.EDIT_TASK_FORM)
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue