diff --git a/NearbyShare/Connection/NearbyConnectionManager.swift b/NearbyShare/Connection/NearbyConnectionManager.swift index adbdccc..d772296 100644 --- a/NearbyShare/Connection/NearbyConnectionManager.swift +++ b/NearbyShare/Connection/NearbyConnectionManager.swift @@ -132,7 +132,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb incomingConnections.removeValue(forKey: connection.id) if !connection.wasRejected { - mainAppDelegate?.incomingTransfer(id: connection.id, didFinishWith: error) + mainAppDelegate?.incomingTransfer(id: connection.id, from: connection.remoteDeviceInfo ?? RemoteDeviceInfo(name: "??", type: .unknown), didFinishWith: error) } } diff --git a/NearbyShare/Model/DataModel.swift b/NearbyShare/Model/DataModel.swift index be1344d..ba31db7 100644 --- a/NearbyShare/Model/DataModel.swift +++ b/NearbyShare/Model/DataModel.swift @@ -28,7 +28,7 @@ protocol OutboundNearbyConnectionDelegate { public protocol MainAppDelegate { func obtainUserConsent(for transfer: TransferMetadata, from device: RemoteDeviceInfo) - func incomingTransfer(id: String, didFinishWith error: Error?) + func incomingTransfer(id: String, from device: RemoteDeviceInfo, didFinishWith error: Error?) func showCopiedToClipboardAlert() func showUnsupportedFileAlert(for: RemoteDeviceInfo?) } diff --git a/QuickDrop.xcodeproj/project.pbxproj b/QuickDrop.xcodeproj/project.pbxproj index 2c165cc..2f2a608 100644 --- a/QuickDrop.xcodeproj/project.pbxproj +++ b/QuickDrop.xcodeproj/project.pbxproj @@ -106,9 +106,10 @@ EB979F942E50CA23008B8C5C /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F8D2E50CA23008B8C5C /* Configuration.swift */; }; EB979F952E50CA23008B8C5C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F8E2E50CA23008B8C5C /* ContentView.swift */; }; EB979F962E50CA23008B8C5C /* FilePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F8F2E50CA23008B8C5C /* FilePicker.swift */; }; - EB979F972E50CA23008B8C5C /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F902E50CA23008B8C5C /* Model.swift */; }; + EB979F972E50CA23008B8C5C /* ShareViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F902E50CA23008B8C5C /* ShareViewModel.swift */; }; EB979F982E50CA23008B8C5C /* QuickDropiOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F922E50CA23008B8C5C /* QuickDropiOSApp.swift */; }; EB979F9A2E50CAA6008B8C5C /* PieProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F992E50CAA6008B8C5C /* PieProgressView.swift */; }; + EB97A00F2E511124008B8C5C /* ReceiveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB97A00E2E511120008B8C5C /* ReceiveModel.swift */; }; EB9925802E45D53E00357055 /* sharing_enums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */; }; EB9925812E45D53E00357055 /* sharing_enums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */; }; EB9925822E45D53E00357055 /* sharing_enums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */; }; @@ -240,10 +241,11 @@ EB979F8D2E50CA23008B8C5C /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; }; EB979F8E2E50CA23008B8C5C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; EB979F8F2E50CA23008B8C5C /* FilePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePicker.swift; sourceTree = ""; }; - EB979F902E50CA23008B8C5C /* Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; + EB979F902E50CA23008B8C5C /* ShareViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewModel.swift; sourceTree = ""; }; EB979F912E50CA23008B8C5C /* QuickDropiOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = QuickDropiOS.entitlements; sourceTree = ""; }; EB979F922E50CA23008B8C5C /* QuickDropiOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickDropiOSApp.swift; sourceTree = ""; }; EB979F992E50CAA6008B8C5C /* PieProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PieProgressView.swift; sourceTree = ""; }; + EB97A00E2E511120008B8C5C /* ReceiveModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiveModel.swift; sourceTree = ""; }; EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = sharing_enums.pb.swift; sourceTree = ""; }; EBC05C5A2E33936C00EECC18 /* ErrorAlertHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorAlertHandler.swift; sourceTree = ""; }; EBC05C6D2E33B57D00EECC18 /* Converter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Converter.swift; sourceTree = ""; }; @@ -438,7 +440,8 @@ EB979F8D2E50CA23008B8C5C /* Configuration.swift */, EB979F8E2E50CA23008B8C5C /* ContentView.swift */, EB979F8F2E50CA23008B8C5C /* FilePicker.swift */, - EB979F902E50CA23008B8C5C /* Model.swift */, + EB979F902E50CA23008B8C5C /* ShareViewModel.swift */, + EB97A00E2E511120008B8C5C /* ReceiveModel.swift */, EB979F992E50CAA6008B8C5C /* PieProgressView.swift */, EB979F912E50CA23008B8C5C /* QuickDropiOS.entitlements */, EB979F922E50CA23008B8C5C /* QuickDropiOSApp.swift */, @@ -795,6 +798,7 @@ EB9925802E45D53E00357055 /* sharing_enums.pb.swift in Sources */, EB5C37FC2E377CE70052EFD7 /* OutboundNearbyConnection.swift in Sources */, EB5C37FD2E377CE70052EFD7 /* Logger.swift in Sources */, + EB97A00F2E511124008B8C5C /* ReceiveModel.swift in Sources */, EB5C37FE2E377CE70052EFD7 /* offline_wire_formats.pb.swift in Sources */, EB886E6A2E4F37B90052B7D9 /* ErrorAlertHandler.swift in Sources */, EB886E5E2E4F13EB0052B7D9 /* Zip.swift in Sources */, @@ -803,7 +807,7 @@ EB979F952E50CA23008B8C5C /* ContentView.swift in Sources */, EB979F962E50CA23008B8C5C /* FilePicker.swift in Sources */, EB979F9A2E50CAA6008B8C5C /* PieProgressView.swift in Sources */, - EB979F972E50CA23008B8C5C /* Model.swift in Sources */, + EB979F972E50CA23008B8C5C /* ShareViewModel.swift in Sources */, EB979F982E50CA23008B8C5C /* QuickDropiOSApp.swift in Sources */, EB5C38402E38C49D0052EFD7 /* LaunchAtLogin.swift in Sources */, EB5C37FF2E377CE70052EFD7 /* wire_format.pb.swift in Sources */, diff --git a/QuickDrop/AppDelegate.swift b/QuickDrop/AppDelegate.swift index 5d1e3d1..cbb3e73 100644 --- a/QuickDrop/AppDelegate.swift +++ b/QuickDrop/AppDelegate.swift @@ -17,7 +17,6 @@ import UserNotifications class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate, NSWindowDelegate, MainAppDelegate { private var statusItem: NSStatusItem? - private var activeIncomingTransfers: [String: TransferInfo] = [:] var welcomeWindow: NSWindow? var plusWindow: NSWindow? @@ -308,10 +307,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele // MARK: - Alerts and Notifications - - func showFirewallAlert() { - ErrorAlertHandler.shared.openAlert(type: .Firewall) - } func showCopiedToClipboardAlert() { @@ -347,19 +342,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele public func continueTransmission(accept: Bool, transferID: String, storeInTemp: Bool = false) { NearbyConnectionManager.shared.submitUserConsent(transferID: transferID, accept: accept, storeInTemp: storeInTemp) - - if !accept { - activeIncomingTransfers.removeValue(forKey: transferID) - } } func obtainUserConsent(for transfer: TransferMetadata, from device: RemoteDeviceInfo) { NSApp.activate(ignoringOtherApps: true) - - activeIncomingTransfers[transfer.id] = TransferInfo(device: device, transfer: transfer) - AudioManager.playIncomingFileSound() let acceptAutomatically = UserDefaults.standard.bool(forKey: UserDefaultsKeys.automaticallyAcceptFiles.rawValue) @@ -446,7 +434,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele } - func incomingTransfer(id: String, didFinishWith error: Error?) { + func incomingTransfer(id: String, from device: RemoteDeviceInfo, didFinishWith error: Error?) { if let error = error { @@ -455,7 +443,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele plusWindow.close() } - ErrorAlertHandler.shared.showErrorAlert(for: activeIncomingTransfers[id]?.device.name ?? "Android", error: error) + ErrorAlertHandler.shared.showErrorAlert(for: device.name ?? "Android", error: error) } else { let currentCount = transmissionCount() if currentCount == 0 { @@ -467,8 +455,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele UserDefaults.standard.set(currentCount + 1, forKey: UserDefaultsKeys.transmissionCount.rawValue) log("Successful transmission. Current count: \(currentCount)") } - - activeIncomingTransfers.removeValue(forKey: id) } diff --git a/QuickDropiOS/ReceiveModel.swift b/QuickDropiOS/ReceiveModel.swift new file mode 100644 index 0000000..7850f67 --- /dev/null +++ b/QuickDropiOS/ReceiveModel.swift @@ -0,0 +1,33 @@ +// +// ReceiveModel.swift +// QuickDrop +// +// Created by Leon Böttger on 16.08.25. +// + +import SwiftUI + +class ReceiveModel: ObservableObject, MainAppDelegate { + + + init() { + + } + + + func obtainUserConsent(for transfer: TransferMetadata, from device: RemoteDeviceInfo) { + + } + + func incomingTransfer(id: String, from device: RemoteDeviceInfo, didFinishWith error: (any Error)?) { + } + + func showCopiedToClipboardAlert() { + + } + + func showUnsupportedFileAlert(for: RemoteDeviceInfo?) { + + } + +} diff --git a/QuickDropiOS/Model.swift b/QuickDropiOS/ShareViewModel.swift similarity index 100% rename from QuickDropiOS/Model.swift rename to QuickDropiOS/ShareViewModel.swift