mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-19 19:42:17 +02:00
fix: nullable getCurrentMultimediaEditableNote
This commit is contained in:
parent
7cc16f7940
commit
e7b312eb5e
@ -540,7 +540,7 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
|
||||
// ImageIntentManager.saveImageUri(imageUri)
|
||||
// the field won't exist so it will always be a new card
|
||||
val note = getCurrentMultimediaEditableNote()
|
||||
if (note == null) {
|
||||
if (note.isEmpty) {
|
||||
Timber.w("Note is null, returning")
|
||||
return
|
||||
}
|
||||
@ -1605,11 +1605,10 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
|
||||
insertStringInField(getFieldForTest(fieldIndex), newString)
|
||||
}
|
||||
|
||||
@KotlinCleanup("fix the requireNoNulls")
|
||||
private suspend fun getCurrentMultimediaEditableNote(): MultimediaEditableNote? {
|
||||
private suspend fun getCurrentMultimediaEditableNote(): MultimediaEditableNote {
|
||||
val note = NoteService.createEmptyNote(editorNote!!.notetype)
|
||||
val fields = currentFieldStrings.requireNoNulls()
|
||||
withCol { NoteService.updateMultimediaNoteFromFields(this@withCol, fields, editorNote!!.mid, note!!) }
|
||||
withCol { NoteService.updateMultimediaNoteFromFields(this@withCol, fields, editorNote!!.mid, note) }
|
||||
|
||||
return note
|
||||
}
|
||||
@ -1773,7 +1772,8 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
|
||||
private fun handleMultimediaActions(fieldIndex: Int) {
|
||||
// Based on the type of multimedia action received, perform the corresponding operation
|
||||
lifecycleScope.launch {
|
||||
val note: MultimediaEditableNote = getCurrentMultimediaEditableNote() ?: return@launch
|
||||
val note: MultimediaEditableNote = getCurrentMultimediaEditableNote()
|
||||
if (note.isEmpty) return@launch
|
||||
|
||||
multimediaViewModel.multimediaAction.first { action ->
|
||||
when (action) {
|
||||
@ -1894,7 +1894,7 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
|
||||
private fun addMediaFileToField(index: Int, field: IField) {
|
||||
lifecycleScope.launch {
|
||||
val note = getCurrentMultimediaEditableNote()
|
||||
note?.setField(index, field)
|
||||
note.setField(index, field)
|
||||
val fieldEditText = editFields!![index]
|
||||
|
||||
// Import field media
|
||||
|
@ -105,6 +105,9 @@ class MultimediaEditableNote : IMultimediaEditableNote {
|
||||
return IOUtils.deserialize(IField::class.java, IOUtils.serialize(f!!))
|
||||
}
|
||||
|
||||
val isEmpty: Boolean
|
||||
get() = fields.isNullOrEmpty()
|
||||
|
||||
companion object {
|
||||
private const val serialVersionUID = -6161821367135636659L
|
||||
}
|
||||
|
@ -51,31 +51,30 @@ object NoteService {
|
||||
/**
|
||||
* Creates an empty Note from given Model
|
||||
*
|
||||
* @param model the model in JSOBObject format
|
||||
* @return a new note instance
|
||||
* @param model the model in JSONObject format
|
||||
* @return a new MultimediaEditableNote instance
|
||||
*/
|
||||
fun createEmptyNote(model: JSONObject): MultimediaEditableNote? {
|
||||
fun createEmptyNote(model: JSONObject): MultimediaEditableNote {
|
||||
val note = MultimediaEditableNote()
|
||||
try {
|
||||
val fieldsArray = model.getJSONArray("flds")
|
||||
val numOfFields = fieldsArray.length()
|
||||
if (numOfFields > 0) {
|
||||
val note = MultimediaEditableNote()
|
||||
note.setNumFields(numOfFields)
|
||||
for (i in 0 until numOfFields) {
|
||||
val fieldObject = fieldsArray.getJSONObject(i)
|
||||
val uiTextField = TextField()
|
||||
uiTextField.name = fieldObject.getString("name")
|
||||
uiTextField.text = fieldObject.getString("name")
|
||||
note.setField(i, uiTextField)
|
||||
note.setNumFields(numOfFields)
|
||||
|
||||
for (i in 0 until numOfFields) {
|
||||
val fieldObject = fieldsArray.getJSONObject(i)
|
||||
val uiTextField = TextField().apply {
|
||||
name = fieldObject.getString("name")
|
||||
text = fieldObject.getString("name")
|
||||
}
|
||||
note.modelId = model.getLong("id")
|
||||
return note
|
||||
note.setField(i, uiTextField)
|
||||
}
|
||||
note.modelId = model.getLong("id")
|
||||
} catch (e: JSONException) {
|
||||
// TODO Auto-generated catch block
|
||||
Timber.w(e)
|
||||
Timber.w(e, "Error parsing model: %s", model)
|
||||
// Return note with default/empty fields
|
||||
}
|
||||
return null
|
||||
return note
|
||||
}
|
||||
|
||||
fun updateMultimediaNoteFromFields(
|
||||
|
Loading…
Reference in New Issue
Block a user