82 lines
2.6 KiB
Swift
82 lines
2.6 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
final class GeneralSettings: ObservableObject {
|
|
|
|
@AppStorage("pushNotificationAccessToken")
|
|
var pushNotificationAccessToken: String?
|
|
|
|
@Published
|
|
var url: String
|
|
|
|
@Published
|
|
var linkPreviewImageWidth: Int
|
|
|
|
@Published
|
|
var linkPreviewImageHeight: Int
|
|
|
|
@Published
|
|
var remoteUserForUpload: String
|
|
|
|
@Published
|
|
var remotePortForUpload: Int
|
|
|
|
@Published
|
|
var remotePathForUpload: String
|
|
|
|
@Published
|
|
var urlForPushNotification: String?
|
|
|
|
@Published
|
|
var requiredFiles: [FileResource]
|
|
|
|
init(url: String, linkPreviewImageWidth: Int, linkPreviewImageHeight: Int, remoteUserForUpload: String, remotePortForUpload: Int, remotePathForUpload: String, urlForPushNotification: String?, requiredFiles: [FileResource]) {
|
|
self.url = url
|
|
self.linkPreviewImageWidth = linkPreviewImageWidth
|
|
self.linkPreviewImageHeight = linkPreviewImageHeight
|
|
self.remoteUserForUpload = remoteUserForUpload
|
|
self.remotePortForUpload = remotePortForUpload
|
|
self.remotePathForUpload = remotePathForUpload
|
|
self.urlForPushNotification = urlForPushNotification
|
|
self.requiredFiles = requiredFiles
|
|
}
|
|
}
|
|
|
|
extension GeneralSettings {
|
|
|
|
convenience init(context: LoadingContext, data: Data) {
|
|
self.init(
|
|
url: data.url,
|
|
linkPreviewImageWidth: data.linkPreviewImageWidth,
|
|
linkPreviewImageHeight: data.linkPreviewImageHeight,
|
|
remoteUserForUpload: data.remoteUserForUpload,
|
|
remotePortForUpload: data.remotePortForUpload,
|
|
remotePathForUpload: data.remotePathForUpload,
|
|
urlForPushNotification: data.urlForPushNotification,
|
|
requiredFiles: data.requiredFiles?.compactMap(context.file) ?? [])
|
|
}
|
|
|
|
var data: Data {
|
|
.init(
|
|
url: url,
|
|
linkPreviewImageWidth: linkPreviewImageWidth,
|
|
linkPreviewImageHeight: linkPreviewImageHeight,
|
|
remoteUserForUpload: remoteUserForUpload,
|
|
remotePortForUpload: remotePortForUpload,
|
|
remotePathForUpload: remotePathForUpload,
|
|
urlForPushNotification: urlForPushNotification,
|
|
requiredFiles: requiredFiles.nonEmpty?.map { $0.id }.sorted())
|
|
}
|
|
|
|
struct Data: Codable, Equatable {
|
|
let url: String
|
|
let linkPreviewImageWidth: Int
|
|
let linkPreviewImageHeight: Int
|
|
let remoteUserForUpload: String
|
|
let remotePortForUpload: Int
|
|
let remotePathForUpload: String
|
|
let urlForPushNotification: String?
|
|
let requiredFiles: [String]?
|
|
}
|
|
}
|