diff --git a/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift b/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift index 9e3ff39ed1910f8173d2b0ae7b80b9b1fb12094d..6d29794226d5d227da44724f532eea1916ef9150 100644 --- a/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift +++ b/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift @@ -52,6 +52,8 @@ extension ScanSessionsRepository { func deleteFolder(params: Folder) { + handleRemovingFolderFiles(folder: params) + if let folderEntity = foldersEntities.first(where: { $0.id == params.id }) { deleteFolderEntity(folderEntity: folderEntity) @@ -109,6 +111,8 @@ extension ScanSessionsRepository { func deleteScanSession(params: ScanSession) { + handleRemovingScanSessionFiles(scanSession: params) + if let sessionEntity = sessionsEntities.first(where: { $0.id == params.id }) { deleteScanSessionEntity(sessionEntity: sessionEntity) @@ -224,6 +228,24 @@ extension ScanSessionsRepository { imageUrlsToDelete.forEach { try? FileManager.default.removeItem(at: $0) } } + private func handleRemovingFolderFiles(folder: Folder) { + folder.scanSessions.forEach { handleRemovingScanSessionFiles(scanSession: $0) } + } + + private func handleRemovingScanSessionFiles(scanSession: ScanSession) { + + scanSession.scannedItems.forEach { item in + + if let imageUrl = item.newOriginalImage { + try? FileManager.default.removeItem(at: imageUrl) + } + + if let imageUrl = item.newRenderedImage { + try? FileManager.default.removeItem(at: imageUrl) + } + } + } + private func persistChanges() { saveChangesAndWait() }