mirror of
https://github.com/PhilKes/NotallyX.git
synced 2025-06-28 20:29:54 +00:00
When exiting a note delete it if it's empty
This commit is contained in:
parent
3a16d3bb6a
commit
e84a5409e4
4 changed files with 41 additions and 22 deletions
|
@ -48,6 +48,7 @@ import com.philkes.notallyx.presentation.view.note.audio.AudioAdapter
|
|||
import com.philkes.notallyx.presentation.view.note.preview.PreviewFileAdapter
|
||||
import com.philkes.notallyx.presentation.view.note.preview.PreviewImageAdapter
|
||||
import com.philkes.notallyx.presentation.viewmodel.NotallyModel
|
||||
import com.philkes.notallyx.presentation.widget.WidgetProvider
|
||||
import com.philkes.notallyx.utils.FileError
|
||||
import com.philkes.notallyx.utils.Operations
|
||||
import com.philkes.notallyx.utils.changehistory.ChangeHistory
|
||||
|
@ -68,7 +69,11 @@ abstract class EditActivity(private val type: Type) : LockedActivity<ActivityEdi
|
|||
|
||||
override fun finish() {
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
saveNote()
|
||||
if (model.isEmpty()) {
|
||||
model.deleteBaseNote()
|
||||
} else if (changeHistory.canUndo()) {
|
||||
saveNote()
|
||||
}
|
||||
super.finish()
|
||||
}
|
||||
}
|
||||
|
@ -76,13 +81,15 @@ abstract class EditActivity(private val type: Type) : LockedActivity<ActivityEdi
|
|||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
outState.putLong("id", model.id)
|
||||
lifecycleScope.launch { saveNote() }
|
||||
if (changeHistory.canUndo()) {
|
||||
lifecycleScope.launch { saveNote() }
|
||||
}
|
||||
}
|
||||
|
||||
open suspend fun saveNote() {
|
||||
if (changeHistory.canUndo()) {
|
||||
model.modifiedTimestamp = System.currentTimeMillis()
|
||||
}
|
||||
model.modifiedTimestamp = System.currentTimeMillis()
|
||||
model.saveNote()
|
||||
WidgetProvider.sendBroadcast(application, longArrayOf(model.id))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.philkes.notallyx.presentation.activity.note
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import com.philkes.notallyx.Preferences
|
||||
|
@ -15,7 +16,6 @@ import com.philkes.notallyx.presentation.view.note.listitem.sorting.ListItemNoSo
|
|||
import com.philkes.notallyx.presentation.view.note.listitem.sorting.ListItemSortedByCheckedCallback
|
||||
import com.philkes.notallyx.presentation.view.note.listitem.sorting.ListItemSortedList
|
||||
import com.philkes.notallyx.presentation.view.note.listitem.sorting.toMutableList
|
||||
import com.philkes.notallyx.presentation.widget.WidgetProvider
|
||||
import com.philkes.notallyx.utils.changehistory.ChangeHistory
|
||||
|
||||
class EditListActivity : EditActivity(Type.LIST) {
|
||||
|
@ -25,10 +25,14 @@ class EditListActivity : EditActivity(Type.LIST) {
|
|||
|
||||
private lateinit var listManager: ListManager
|
||||
|
||||
override suspend fun saveNote() {
|
||||
super.saveNote()
|
||||
model.saveNote(items.toMutableList())
|
||||
WidgetProvider.sendBroadcast(application, longArrayOf(model.id))
|
||||
override fun finish() {
|
||||
model.setItems(items.toMutableList())
|
||||
super.finish()
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
model.setItems(items.toMutableList())
|
||||
super.onSaveInstanceState(outState)
|
||||
}
|
||||
|
||||
override fun setupToolbar() {
|
||||
|
|
|
@ -38,7 +38,6 @@ import com.philkes.notallyx.presentation.setOnNextAction
|
|||
import com.philkes.notallyx.presentation.showAndFocus
|
||||
import com.philkes.notallyx.presentation.showKeyboard
|
||||
import com.philkes.notallyx.presentation.view.Constants
|
||||
import com.philkes.notallyx.presentation.widget.WidgetProvider
|
||||
import com.philkes.notallyx.utils.LinkMovementMethod
|
||||
|
||||
private const val UNNAMED_NOTE_PLACEHOLDER = "Unnamed Note"
|
||||
|
@ -49,12 +48,6 @@ class EditNoteActivity : EditActivity(Type.NOTE) {
|
|||
private lateinit var pickNoteNewActivityResultLauncher: ActivityResultLauncher<Intent>
|
||||
private lateinit var pickNoteUpdateActivityResultLauncher: ActivityResultLauncher<Intent>
|
||||
|
||||
override suspend fun saveNote() {
|
||||
super.saveNote()
|
||||
model.saveNote()
|
||||
WidgetProvider.sendBroadcast(application, longArrayOf(model.id))
|
||||
}
|
||||
|
||||
override fun configureUI() {
|
||||
binding.EnterTitle.setOnNextAction { binding.EnterBody.requestFocus() }
|
||||
|
||||
|
|
|
@ -247,8 +247,23 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
|
|||
}
|
||||
}
|
||||
|
||||
suspend fun saveNote(items: List<ListItem> = this.items): Long {
|
||||
return withContext(Dispatchers.IO) { baseNoteDao.insert(getBaseNote(items)) }
|
||||
fun setItems(items: List<ListItem>) {
|
||||
this.items.clear()
|
||||
this.items.addAll(items)
|
||||
}
|
||||
|
||||
suspend fun saveNote(): Long {
|
||||
return withContext(Dispatchers.IO) { baseNoteDao.insert(getBaseNote()) }
|
||||
}
|
||||
|
||||
fun isEmpty(): Boolean {
|
||||
return title.isEmpty() &&
|
||||
body.isEmpty() &&
|
||||
items.none { item -> item.body.isNotEmpty() } &&
|
||||
labels.isEmpty() &&
|
||||
files.value.isEmpty() &&
|
||||
images.value.isEmpty() &&
|
||||
audios.value.isEmpty()
|
||||
}
|
||||
|
||||
private suspend fun updateImages() {
|
||||
|
@ -263,10 +278,10 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
|
|||
withContext(Dispatchers.IO) { baseNoteDao.updateAudios(id, audios.value) }
|
||||
}
|
||||
|
||||
private fun getBaseNote(currentItems: List<ListItem> = this.items): BaseNote {
|
||||
private fun getBaseNote(): BaseNote {
|
||||
val spans = getFilteredSpans(body)
|
||||
val body = this.body.trimEnd().toString()
|
||||
val items = currentItems.filter { item -> item.body.isNotEmpty() }
|
||||
val nonEmptyItems = this.items.filter { item -> item.body.isNotEmpty() }
|
||||
return BaseNote(
|
||||
id,
|
||||
type,
|
||||
|
@ -279,7 +294,7 @@ class NotallyModel(private val app: Application) : AndroidViewModel(app) {
|
|||
labels,
|
||||
body,
|
||||
spans,
|
||||
items,
|
||||
nonEmptyItems,
|
||||
images.value,
|
||||
files.value,
|
||||
audios.value,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue