refactor: message move and delete
Signed-off-by: Sebastian <krupinski01@gmail.com>
This commit is contained in:
@@ -255,26 +255,6 @@ export const useMailStore = defineStore('mailStore', () => {
|
||||
}
|
||||
}
|
||||
|
||||
function _formatMoveNotification(successCount: number, failureCount: number, targetFolder: CollectionObject) {
|
||||
const folderLabel = targetFolder.properties.label || String(targetFolder.identifier)
|
||||
|
||||
if (failureCount === 0) {
|
||||
return {
|
||||
message: successCount === 1
|
||||
? `Message moved to "${folderLabel}"`
|
||||
: `${successCount} messages moved to "${folderLabel}"`,
|
||||
color: 'success' as const,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
message: successCount === 0
|
||||
? `Move failed for ${failureCount === 1 ? '1 message' : `${failureCount} messages`}`
|
||||
: `Moved ${successCount} ${successCount === 1 ? 'message' : 'messages'} to "${folderLabel}". ${failureCount} failed.`,
|
||||
color: successCount === 0 ? 'error' as const : 'warning' as const,
|
||||
}
|
||||
}
|
||||
|
||||
watch(currentMessages, () => {
|
||||
_reconcileSelection()
|
||||
})
|
||||
@@ -430,32 +410,26 @@ export const useMailStore = defineStore('mailStore', () => {
|
||||
loading.value = true
|
||||
|
||||
try {
|
||||
const response = await entitiesStore.move(_collectionIdentifier(target), movableIdentifiers)
|
||||
const operationSucceeded: EntityIdentifier[] = []
|
||||
const operationFailures: EntityIdentifier[] = []
|
||||
|
||||
Object.entries(response).forEach(([sourceIdentifier, result]) => {
|
||||
if (result.success) {
|
||||
operationSucceeded.push(sourceIdentifier as EntityIdentifier)
|
||||
return
|
||||
}
|
||||
|
||||
operationFailures.push(sourceIdentifier as EntityIdentifier)
|
||||
})
|
||||
|
||||
if (operationSucceeded.length === 0) {
|
||||
throw new Error(operationFailures[0] ?? 'Failed to move messages')
|
||||
}
|
||||
|
||||
if (selectedMessage.value && operationSucceeded.includes(_entityIdentifier(selectedMessage.value))) {
|
||||
selectedMessage.value = null
|
||||
}
|
||||
const [successes, failures] = await entitiesStore.move(_collectionIdentifier(target), movableIdentifiers)
|
||||
|
||||
clearSelection()
|
||||
closeMoveDialog()
|
||||
|
||||
const notification = _formatMoveNotification(operationSucceeded.length, operationFailures.length, target)
|
||||
notify(notification.message, notification.color)
|
||||
if (failures.length === 0) {
|
||||
notify(
|
||||
successes.length === 1 ? 'Message moved' : `${successes.length} messages moved`,
|
||||
'success',
|
||||
)
|
||||
}
|
||||
|
||||
if (failures.length > 0) {
|
||||
notify(
|
||||
successes.length === 0
|
||||
? `Move failed for ${failures.length === 1 ? '1 message' : `${failures.length} messages`}`
|
||||
: `Moved ${successes.length} ${successes.length === 1 ? 'message' : 'messages'}. ${failures.length} failed.`,
|
||||
successes.length === 0 ? 'error' : 'warning',
|
||||
)
|
||||
}
|
||||
} catch (error) {
|
||||
const messageText = error instanceof Error ? error.message : 'Failed to move messages'
|
||||
console.error('[Mail] Failed to move messages:', error)
|
||||
@@ -474,43 +448,23 @@ export const useMailStore = defineStore('mailStore', () => {
|
||||
loading.value = true
|
||||
|
||||
try {
|
||||
const response = await entitiesStore.delete(entityIdentifiers)
|
||||
const operationSucceeded: EntityIdentifier[] = []
|
||||
const operationFailures: EntityIdentifier[] = []
|
||||
|
||||
Object.entries(response).forEach(([sourceIdentifier, result]) => {
|
||||
if (result.success) {
|
||||
operationSucceeded.push(sourceIdentifier as EntityIdentifier)
|
||||
return
|
||||
}
|
||||
|
||||
operationFailures.push(sourceIdentifier as EntityIdentifier)
|
||||
})
|
||||
|
||||
if (operationSucceeded.length === 0) {
|
||||
throw new Error(operationFailures[0] ?? 'Failed to delete messages')
|
||||
}
|
||||
|
||||
if (selectedMessage.value && operationSucceeded.includes(_entityIdentifier(selectedMessage.value))) {
|
||||
selectedMessage.value = null
|
||||
}
|
||||
|
||||
const [successes, failures] = await entitiesStore.delete(entityIdentifiers)
|
||||
|
||||
clearSelection()
|
||||
|
||||
const successCount = operationSucceeded.length
|
||||
const failureCount = operationFailures.length
|
||||
|
||||
if (failureCount === 0) {
|
||||
if (failures.length === 0) {
|
||||
notify(
|
||||
successCount === 1 ? 'Message deleted' : `${successCount} messages deleted`,
|
||||
successes.length === 1 ? 'Message deleted' : `${successes.length} messages deleted`,
|
||||
'success',
|
||||
)
|
||||
} else {
|
||||
}
|
||||
|
||||
if (failures.length > 0) {
|
||||
notify(
|
||||
successCount === 0
|
||||
? `Delete failed for ${failureCount === 1 ? '1 message' : `${failureCount} messages`}`
|
||||
: `Deleted ${successCount} ${successCount === 1 ? 'message' : 'messages'}. ${failureCount} failed.`,
|
||||
successCount === 0 ? 'error' : 'warning',
|
||||
successes.length === 0
|
||||
? `Delete failed for ${failures.length === 1 ? '1 message' : `${failures.length} messages`}`
|
||||
: `Deleted ${successes.length} ${successes.length === 1 ? 'message' : 'messages'}. ${failures.length} failed.`,
|
||||
successes.length === 0 ? 'error' : 'warning',
|
||||
)
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user