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