Files
QuickDrop/QuickDropiOS/Model.swift
T

76 lines
2.1 KiB
Swift

//
// Model.swift
// QuickDrop
//
// Created by Leon Böttger on 28.07.25.
//
import SwiftUI
class ShareViewModel: ObservableObject, ShareExtensionDelegate {
@Published var foundDevices: [RemoteDeviceInfo] = []
@Published var selectedDevice: RemoteDeviceInfo?
@Published var lastError: Error?
@Published var progressState: String? = nil
@Published var progressValue: Double? = nil
private var urls: [URL] = []
private var textToSend: String? = nil
//private var errorAlertHandler = ErrorAlertHandler.shared
private var connectionEstablished = false
private var timeoutDispatchWorkItem: DispatchWorkItem? = nil
init() {
NearbyConnectionManager.shared.startDeviceDiscovery()
}
func addDevice(device: RemoteDeviceInfo) {
withAnimation {
foundDevices.append(device)
}
}
func removeDevice(id: String) {
withAnimation {
foundDevices.removeAll { $0.id == id }
}
}
func connectionWasEstablished(pinCode: String) {
connectionEstablished = true
progressState = String(format: "PinCode".localized(), arguments: [pinCode])
progressValue = 0
}
func connectionFailed(with error: any Error) {
progressValue = nil
lastError = error
//ErrorAlertHandler.shared.showErrorAlert(for: chosenDevice?.name ?? "", error: error)
}
func transferAccepted() {
progressState = "Sending".localized()
}
func transferProgress(progress: Double) {
progressValue = progress
}
func transferFinished() {
progressState = "TransferFinished".localized()
}
func selectDevice(device: RemoteDeviceInfo) {
NearbyConnectionManager.shared.stopDeviceDiscovery()
progressValue = 0
progressState = "Connecting".localized()
selectedDevice = device
NearbyConnectionManager.shared.startOutgoingTransfer(deviceID: device.id!, delegate: self, urls: urls, textToSend: textToSend)
}
}