Merge pull request #88 from PhilKes/feat/delete-empty-note

When exiting a note delete it if it's empty
This commit is contained in:
Phil 2024-10-30 22:29:29 +01:00 committed by GitHub
commit a61f27575d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 41 additions and 22 deletions

View file

@ -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?) {

View file

@ -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() {

View file

@ -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() }

View file

@ -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,