Skip to content

Commit

Permalink
Merge pull request #2 from jordharr/development
Browse files Browse the repository at this point in the history
fix: edit task
  • Loading branch information
jouwdan authored Nov 28, 2022
2 parents dff2f07 + f706940 commit f824921
Showing 1 changed file with 40 additions and 10 deletions.
50 changes: 40 additions & 10 deletions app/src/main/java/dev/jord/todo/ui/home/AddTaskFragment.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.jord.todo.ui.home

import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
Expand All @@ -15,14 +16,17 @@ import dev.jord.todo.R
import dev.jord.todo.data.model.Task
import dev.jord.todo.databinding.FragmentAddTaskBinding
import dev.jord.todo.ui.auth.AuthViewModel
import dev.jord.todo.util.UiState
import dev.jord.todo.util.snackbar

@AndroidEntryPoint
class AddTaskFragment(private val task: Task? = null) : BottomSheetDialogFragment() {

val TAG: String = "AddTaskFragment"
lateinit var binding: FragmentAddTaskBinding
var closeFunction: ((Boolean) -> Unit)? = null
private var closeFunction: ((Boolean) -> Unit)? = null
private var saveTaskSuccess: Boolean = false
private var isValid = true
val viewModel: TaskViewModel by viewModels()
val authViewModel: AuthViewModel by viewModels()

Expand Down Expand Up @@ -72,7 +76,7 @@ class AddTaskFragment(private val task: Task? = null) : BottomSheetDialogFragmen
val date = binding.dueDateDropdown.text.toString()
val location = binding.locationTextField.text.toString()
val task = Task(title = title, description = description, priority = priority, dueDate = date, location = location)
if (validation()) {
if (task.id == "") {
viewModel.addTask(task)
}else {
viewModel.updateTask(task)
Expand All @@ -81,18 +85,44 @@ class AddTaskFragment(private val task: Task? = null) : BottomSheetDialogFragmen
?.replace(R.id.container, HomeFragment())
?.commit();
}
observer()
}

override fun onDestroyView() {
super.onDestroyView()
}
fun observer() {
viewModel.addTask.observe(viewLifecycleOwner) { state ->
when (state) {
is UiState.Loading -> {
binding.addTaskButton.isEnabled = false
} is UiState.Success -> {
saveTaskSuccess = true
snackbar("Task added successfully")
closeFunction?.invoke(true)
this.dismiss()
} is UiState.Failure -> {
snackbar("Save failed, please try again")
}
}
}

private fun validation(): Boolean {
var isValid = true
if (binding.taskName.text.toString().isEmpty()) {
isValid = false
viewModel.updateTask.observe(viewLifecycleOwner) { state ->
when (state) {
is UiState.Loading -> {
binding.addTaskButton.isEnabled = false
} is UiState.Success -> {
saveTaskSuccess = true
snackbar("Task updated successfully")
closeFunction?.invoke(true)
this.dismiss()
} is UiState.Failure -> {
snackbar("Save failed, please try again")
}
}
}
return isValid
}

override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
closeFunction?.invoke(saveTaskSuccess)
}

fun setDismissListener(function: ((Boolean) -> Unit)?) {
Expand Down

0 comments on commit f824921

Please sign in to comment.