From 3626199941ca3094505fde71bfc1eeca40662021 Mon Sep 17 00:00:00 2001 From: Mustafa Merza <mustafa.merza95@gmail.com> Date: Thu, 8 Aug 2024 16:21:27 +0300 Subject: [PATCH] - Added removing image files when a session or a folder is deleted. --- .../Repositores/ScanSessionsRepository.swift | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift b/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift index 9e3ff39..6d29794 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() } -- GitLab