diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index cb661d76b..de882a6d7 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -101,7 +101,6 @@ class EntryEditActivity : LockingActivity(), private var mEntry : Entry? = null private var mIsTemplate: Boolean = false private var mEntryTemplate: Template = Template.STANDARD - private var mTempAttachments = mutableListOf() private val mEntryEditViewModel: EntryEditViewModel by viewModels() // To manage attachments @@ -243,10 +242,6 @@ class EntryEditActivity : LockingActivity(), } mEntryEditViewModel.onAttachmentAction.observe(this) { attachmentState -> when (attachmentState?.downloadState) { - AttachmentState.START -> { - // Add in temp list - mTempAttachments.add(attachmentState) - } AttachmentState.ERROR -> { coordinatorLayout?.let { Snackbar.make(it, R.string.error_file_not_create, Snackbar.LENGTH_LONG).asError().show() @@ -290,40 +285,21 @@ class EntryEditActivity : LockingActivity(), } // Build new entry from the entry info retrieved - mEntryEditViewModel.onEntryInfoUpdated.observe(this) { entryInfo -> + mEntryEditViewModel.onEntryInfoUpdated.observe(this) { entryInfoTempAttachments -> mEntry?.let { oldEntry -> // Create a clone var newEntry = Entry(oldEntry) - // Do not save entry in upload progression - mTempAttachments.forEach { attachmentState -> - if (attachmentState.streamDirection == StreamDirection.UPLOAD) { - when (attachmentState.downloadState) { - AttachmentState.START, - AttachmentState.IN_PROGRESS, - AttachmentState.CANCELED, - AttachmentState.ERROR -> { - // Remove attachment not finished from info - entryInfo.attachments = entryInfo.attachments.toMutableList().apply { - remove(attachmentState.attachment) - } - } - else -> { - } - } - } - } - // Build info - newEntry.setEntryInfo(mDatabase, entryInfo) + newEntry.setEntryInfo(mDatabase, entryInfoTempAttachments.entryInfo) // Encode entry properties for template newEntry = mDatabase?.encodeEntryWithTemplateConfiguration(newEntry, mEntryTemplate) ?: newEntry // Delete temp attachment if not used - mTempAttachments.forEach { tempAttachmentState -> + entryInfoTempAttachments.tempAttachments.forEach { tempAttachmentState -> val tempAttachment = tempAttachmentState.attachment mDatabase?.attachmentPool?.let { binaryPool -> if (!newEntry.getAttachments(binaryPool).contains(tempAttachment)) { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt index 50078e677..caa44f48e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt @@ -87,6 +87,7 @@ class EntryEditFragment: DatabaseFragment(), SetOTPDialogFragment.CreateOtpListe private var mTemplate = Template.STANDARD private var mCustomFieldIds = mutableListOf() + // Current date time selection @IdRes private var mTempDateTimeViewId: Int? = null diff --git a/app/src/main/java/com/kunzisoft/keepass/viewmodels/EntryEditViewModel.kt b/app/src/main/java/com/kunzisoft/keepass/viewmodels/EntryEditViewModel.kt index 111ca410e..e2e7a60a9 100644 --- a/app/src/main/java/com/kunzisoft/keepass/viewmodels/EntryEditViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/viewmodels/EntryEditViewModel.kt @@ -8,16 +8,18 @@ import com.kunzisoft.keepass.database.element.DateInstant import com.kunzisoft.keepass.database.element.Field import com.kunzisoft.keepass.database.element.icon.IconImage import com.kunzisoft.keepass.database.element.template.Template +import com.kunzisoft.keepass.model.AttachmentState import com.kunzisoft.keepass.model.EntryAttachmentState import com.kunzisoft.keepass.model.EntryInfo +import com.kunzisoft.keepass.model.StreamDirection class EntryEditViewModel: ViewModel() { val requestEntryInfoUpdate : LiveData get() = _requestEntryInfoUpdate private val _requestEntryInfoUpdate = SingleLiveEvent() - val onEntryInfoUpdated : LiveData get() = _onEntryInfoUpdated - private val _onEntryInfoUpdated = SingleLiveEvent() + val onEntryInfoUpdated : LiveData get() = _onEntryInfoUpdated + private val _onEntryInfoUpdated = SingleLiveEvent() val onTemplateChanged : LiveData