Skip to content

Commit b5c875f

Browse files
committed
Fix issue on overwrite a problem
1 parent 1008ef1 commit b5c875f

File tree

2 files changed

+32
-28
lines changed

2 files changed

+32
-28
lines changed

app/src/main/java/com/geckour/lopicmaker/ui/main/edit/EditorFragment.kt

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@ import android.util.Size
99
import android.view.*
1010
import androidx.fragment.app.Fragment
1111
import androidx.lifecycle.ViewModelProviders
12-
import com.geckour.lopicmaker.App
1312
import com.geckour.lopicmaker.R
1413
import com.geckour.lopicmaker.databinding.FragmentEditorBinding
1514
import com.geckour.lopicmaker.ui.main.MainViewModel
1615
import com.geckour.lopicmaker.util.Algorithm
1716
import com.geckour.lopicmaker.util.MyAlertDialogFragment
1817
import com.geckour.lopicmaker.util.observe
1918
import timber.log.Timber
20-
import java.sql.Timestamp
2119

2220
class EditorFragment : Fragment(), MyAlertDialogFragment.DialogListener {
2321

@@ -232,24 +230,7 @@ class EditorFragment : Fragment(), MyAlertDialogFragment.DialogListener {
232230
MyAlertDialogFragment.RequestCode.CONFIRM_BEFORE_SAVE -> {
233231
(result as? String)?.apply {
234232
if (this.isNotEmpty()) {
235-
val metadata: MyAlertDialogFragment.ProblemMetadata? =
236-
try {
237-
App.gson.fromJson(this, MyAlertDialogFragment.ProblemMetadata::class.java)
238-
} catch (e: Exception) {
239-
Timber.e(e)
240-
null
241-
}
242-
viewModel.problem.value?.also { problem ->
243-
problem.draft =
244-
viewModel.satisfactionState.value !=
245-
Algorithm.SatisfactionState.Satisfiable
246-
problem.editedAt = Timestamp(System.currentTimeMillis())
247-
metadata?.let {
248-
problem.title = it.title
249-
problem.tags = it.tags
250-
}
251-
viewModel.overwriteProblem(requireContext(), problem)
252-
}
233+
viewModel.overwriteProblem(requireContext(), this)
253234
}
254235
} ?: viewModel.snackbarStringResId.postValue(R.string.editor_fragment_error_invalid_title)
255236
}

app/src/main/java/com/geckour/lopicmaker/ui/main/edit/EditorViewModel.kt

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.geckour.lopicmaker.util.SingleLiveEvent
2020
import com.geckour.lopicmaker.util.fromJson
2121
import kotlinx.coroutines.launch
2222
import timber.log.Timber
23+
import java.sql.Timestamp
2324
import java.util.concurrent.TimeoutException
2425

2526
class EditorViewModel : ViewModel() {
@@ -87,15 +88,37 @@ class EditorViewModel : ViewModel() {
8788
}
8889
}
8990

90-
internal fun overwriteProblem(context: Context, problem: Problem) {
91-
try {
92-
viewModelScope.launch {
93-
problem.upsert(DB.getInstance(context))
94-
snackbarStringResId.postValue(R.string.editor_fragment_message_complete_save)
91+
internal fun overwriteProblem(context: Context, data: String) {
92+
problem.value?.apply {
93+
try {
94+
viewModelScope.launch {
95+
val metadata: MyAlertDialogFragment.ProblemMetadata? =
96+
try {
97+
App.gson.fromJson(data)
98+
} catch (e: Exception) {
99+
Timber.e(e)
100+
null
101+
}
102+
this@apply.draft =
103+
satisfactionState.value !=
104+
Algorithm.SatisfactionState.Satisfiable
105+
this@apply.editedAt = Timestamp(System.currentTimeMillis())
106+
this@apply.thumb = nonNullAlgorithm.getThumbnailImage()
107+
metadata?.let {
108+
this@apply.title = it.title
109+
this@apply.tags = it.tags
110+
}
111+
problem.postValue(this@apply)
112+
val result = this@apply.upsert(DB.getInstance(context))
113+
snackbarStringResId.postValue(
114+
if (result > -1) R.string.editor_fragment_message_complete_save
115+
else R.string.editor_fragment_error_failure_save
116+
)
117+
}
118+
} catch (t: Throwable) {
119+
Timber.e(t)
120+
snackbarStringResId.postValue(R.string.editor_fragment_error_failure_save)
95121
}
96-
} catch (t: Throwable) {
97-
Timber.e(t)
98-
snackbarStringResId.postValue(R.string.editor_fragment_error_failure_save)
99122
}
100123
}
101124

0 commit comments

Comments
 (0)