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