|
1 | 1 | package io.github.mrtry.todolist.app.todo.viewmodel
|
2 | 2 |
|
| 3 | +import android.os.Bundle |
3 | 4 | import androidx.lifecycle.MutableLiveData
|
4 | 5 | import io.github.mrtry.todolist.R
|
5 | 6 | import io.github.mrtry.todolist.app.todo.ui.EditTaskDialogFragmentValueHolder
|
6 | 7 | import io.github.mrtry.todolist.app.todo.ui.navigator.EditTaskNavigator
|
7 | 8 | import io.github.mrtry.todolist.di.scope.FragmentScope
|
8 | 9 | import io.github.mrtry.todolist.misc.extension.requireValue
|
| 10 | +import io.github.mrtry.todolist.misc.ui.viewmodel.ViewModel |
9 | 11 | import io.github.mrtry.todolist.task.domainservice.TaskDomainService
|
10 | 12 | import kotlinx.coroutines.CancellationException
|
11 | 13 | import kotlinx.coroutines.CoroutineScope
|
12 | 14 | import kotlinx.coroutines.launch
|
13 | 15 | import timber.log.Timber
|
14 | 16 | import javax.inject.Inject
|
15 | 17 |
|
| 18 | +private const val KEY_TITLE = "KEY_TITLE" |
| 19 | +private const val KEY_DESCRIPTION = "KEY_DESCRIPTION" |
| 20 | + |
16 | 21 | @FragmentScope
|
17 | 22 | class EditTaskViewModel
|
18 | 23 | @Inject constructor(
|
19 | 24 | private val domainService: TaskDomainService,
|
20 | 25 | private val navigator: EditTaskNavigator,
|
21 | 26 | private val valueHolder: EditTaskDialogFragmentValueHolder,
|
22 | 27 | private val coroutineScope: CoroutineScope
|
23 |
| -) { |
| 28 | +) : ViewModel { |
24 | 29 | val title: MutableLiveData<String> = MutableLiveData(valueHolder.task.title)
|
25 | 30 | val description: MutableLiveData<String> = MutableLiveData(valueHolder.task.description)
|
26 | 31 |
|
27 | 32 | val isSaving: MutableLiveData<Boolean> = MutableLiveData(false)
|
28 | 33 |
|
| 34 | + override fun onSaveInstanceState(outState: Bundle) { |
| 35 | + with(outState) { |
| 36 | + putString(KEY_TITLE, title.requireValue()) |
| 37 | + putString(KEY_DESCRIPTION, description.requireValue()) |
| 38 | + } |
| 39 | + } |
| 40 | + |
| 41 | + override fun onRestoreInstanceState(savedInstanceState: Bundle) { |
| 42 | + with(savedInstanceState) { |
| 43 | + getString(KEY_TITLE).also { |
| 44 | + title.value = it |
| 45 | + } |
| 46 | + getString(KEY_DESCRIPTION).also { |
| 47 | + description.value = it |
| 48 | + } |
| 49 | + } |
| 50 | + } |
| 51 | + |
29 | 52 | fun onSaveClick() {
|
30 | 53 | val task = valueHolder.task.copy(
|
31 | 54 | title = title.requireValue(),
|
|
0 commit comments