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