From 1b6f2656e4a881f5d537dbfff3341aa4c1bb73a9 Mon Sep 17 00:00:00 2001
From: Mustafa Merza <mustafa.merza95@gmail.com>
Date: Sun, 11 Aug 2024 14:33:29 +0300
Subject: [PATCH] - Added removing image files if the user closes folders sheet
 after choosing images from photos.

---
 .../DocumentPreviewViewController.swift       |  6 +++--
 .../DocumentsTableViewController.swift        | 22 ++++++++++++++-----
 .../FoldersViewController.swift               | 14 +++++++-----
 .../EditViewController.swift                  |  7 ++++--
 .../Scan/ScannerViewController.swift          |  7 ++++--
 5 files changed, 39 insertions(+), 17 deletions(-)

diff --git a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
index 1797c22..031406a 100644
--- a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
+++ b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
@@ -739,8 +739,10 @@ extension DocumentPreviewViewController {
 
 extension DocumentPreviewViewController: FoldersViewControllerDelegate {
     
-    func folderSelected(folder: Folder) {
+    func dismissed(_ foldersViewController: FoldersViewController, folder: Folder?) {
         
-        handleMoveScanSession(to: folder)
+        if let folder {
+            handleMoveScanSession(to: folder)
+        }
     }
 }
diff --git a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
index 26786e0..7672360 100644
--- a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
+++ b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift
@@ -478,7 +478,7 @@ extension DocumentsTableViewController: ScannerViewControllerDelegate {
 extension DocumentsTableViewController: PHPickerViewControllerDelegate {
     
     func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
-
+        
         picker.dismiss(animated: true) { [weak self] in
             guard let self else { return }
             
@@ -542,6 +542,8 @@ extension DocumentsTableViewController: PHPickerViewControllerDelegate {
                     addScanSession(scannedItems: scannedItems, folder: selectedFolder)
                 }
                 else {
+                    tabBarController?.selectedIndex = 0
+                    
                     self.scannedItems = scannedItems
                     displayFoldersViewSheet(excludedFolders: [])
                 }
@@ -869,18 +871,28 @@ extension DocumentsTableViewController: DocumentsCellDelegate {
 
 extension DocumentsTableViewController: FoldersViewControllerDelegate {
     
-    func folderSelected(folder: Folder) {
+    func dismissed(_ foldersViewController: FoldersViewController, folder: Folder?) {
         
-        if let session = selectedSessionToMove, let sourceFolder = folders.first(where: { $0.id == session.folderId }) {
+        if let folder, let session = selectedSessionToMove, let sourceFolder = folders.first(where: { $0.id == session.folderId }) {
             
             selectedSessionToMove = nil
             
             handleMoveScanSession(session: session, from: sourceFolder, to: folder)
         }
         else if let scannedItems {
-            addScanSession(scannedItems: scannedItems, folder: folder)
             
-            self.scannedItems = nil
+            if let folder {
+                
+                addScanSession(scannedItems: scannedItems, folder: folder)
+                
+                self.scannedItems = nil
+            }
+            else {
+                
+                let scanSession = ScanSession(id: UUID(), name: "", creationDate: .now, scannedItems: scannedItems)
+                
+                deleteScanSessionUseCase.execute(with: scanSession)
+            }
         }
     }
 }
diff --git a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift
index 2ac049a..2af9e08 100644
--- a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift
+++ b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift
@@ -8,7 +8,7 @@
 
 import UIKit
 protocol FoldersViewControllerDelegate {
-    func folderSelected(folder: Folder)
+    func dismissed(_ foldersViewController: FoldersViewController, folder: Folder?)
 }
 
 class FoldersViewController: UIViewController {
@@ -26,6 +26,7 @@ class FoldersViewController: UIViewController {
     
     private var folders: [Folder] = []
     private var displayedFolders: [Folder] = []
+    private var selectedFolder: Folder? = nil
     
     @IBOutlet weak var titleLabel: UILabel!
     
@@ -38,6 +39,10 @@ class FoldersViewController: UIViewController {
         setupUI()
     }
     
+    override func viewDidDisappear(_ animated: Bool) {
+        delegate?.dismissed(self, folder: selectedFolder)
+    }
+    
     private func fetchFolders() {
         
         folders = getFoldersUseCase.execute()
@@ -94,12 +99,9 @@ extension FoldersViewController: UICollectionViewDataSource, UICollectionViewDel
     
     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
         
-        let selectedFolder = displayedFolders[indexPath.row]
+        selectedFolder = displayedFolders[indexPath.row]
         
-        dismiss(animated: true) {
-            
-            self.delegate?.folderSelected(folder: selectedFolder)
-        }
+        dismiss(animated: true)
     }
 }
 
diff --git a/MiniScanner/Modules/EditViewController/EditViewController.swift b/MiniScanner/Modules/EditViewController/EditViewController.swift
index 6a26f00..90387a5 100644
--- a/MiniScanner/Modules/EditViewController/EditViewController.swift
+++ b/MiniScanner/Modules/EditViewController/EditViewController.swift
@@ -897,8 +897,11 @@ extension EditViewController: ShareSheetViewControllerDelegate {
 
 extension EditViewController: FoldersViewControllerDelegate {
     
-    func folderSelected(folder: Folder) {
-        addScanSession(name: name, to: folder)
+    func dismissed(_ foldersViewController: FoldersViewController, folder: Folder?) {
+        
+        if let folder {
+            addScanSession(name: name, to: folder)
+        }
     }
 }
 
diff --git a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift
index 9ac3d32..d96a866 100644
--- a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift	
+++ b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift	
@@ -436,8 +436,11 @@ public final class ScannerViewController: UIViewController, ScanSessionSharable,
 
 extension ScannerViewController: FoldersViewControllerDelegate {
     
-    func folderSelected(folder: Folder) {
-        addScanSession(name: name, to: folder)
+    func dismissed(_ foldersViewController: FoldersViewController, folder: Folder?) {
+        
+        if let folder {
+            addScanSession(name: name, to: folder)
+        }
     }
 }
 
-- 
GitLab