Skip to content
Snippets Groups Projects
BackupSettings.swift 1.56 KiB
Newer Older
import Foundation

public struct BackupSettings: Equatable, Codable {
    public var wifiOnlyBackup: Bool
    public var automaticBackups: Bool
    public var enabledService: CloudService?
    public var connectedServices: Set<CloudService>
    public var backups: [CloudService: Backup]

    public init(
        wifiOnlyBackup: Bool = false,
        automaticBackups: Bool = false,
        enabledService: CloudService? = nil,
        connectedServices: Set<CloudService> = [],
        backups: [CloudService: Backup] = [:]
    ) {
        self.wifiOnlyBackup = wifiOnlyBackup
        self.automaticBackups = automaticBackups
        self.enabledService = enabledService
        self.connectedServices = connectedServices
        self.backups = backups
    }

    public func toData() -> Data {
        (try? PropertyListEncoder().encode(self)) ?? Data()
    }

    public init(fromData data: Data) {
        let settings = try? PropertyListDecoder().decode(BackupSettings.self, from: data)
        self.init(
            wifiOnlyBackup: settings?.wifiOnlyBackup ?? false,
            automaticBackups: settings?.automaticBackups ?? false,
            enabledService: settings?.enabledService,
            connectedServices: settings?.connectedServices ?? [],
            backups: settings?.backups ?? [:]
        )
    }
}

public struct RestoreSettings {
    public var backup: Backup?
    public var cloudService: CloudService

    public init(
        backup: Backup? = nil,
        cloudService: CloudService
    ) {
        self.backup = backup
        self.cloudService = cloudService
    }
}