Update library with Provider.Metadata renaming
This commit is contained in:
parent
d53a01864b
commit
d4543b49ac
|
@ -41,7 +41,7 @@
|
||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "git@github.com:passepartoutvpn/passepartoutkit-source",
|
"location" : "git@github.com:passepartoutvpn/passepartoutkit-source",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "f4786bf573ce30f85107b422590d7633d17fb87a"
|
"revision" : "97f2662bcfa8dff6983fe19320c85611047ab73d"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,7 +52,7 @@ let package = Package(
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", from: "0.12.0"),
|
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", from: "0.12.0"),
|
||||||
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", revision: "f4786bf573ce30f85107b422590d7633d17fb87a"),
|
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", revision: "97f2662bcfa8dff6983fe19320c85611047ab73d"),
|
||||||
// .package(path: "../../passepartoutkit-source"),
|
// .package(path: "../../passepartoutkit-source"),
|
||||||
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", from: "0.9.1"),
|
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", from: "0.9.1"),
|
||||||
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", revision: "031863a1cd683962a7dfe68e20b91fa820a1ecce"),
|
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", revision: "031863a1cd683962a7dfe68e20b91fa820a1ecce"),
|
||||||
|
|
|
@ -35,6 +35,6 @@ final class CDProviderV3: NSManagedObject {
|
||||||
@NSManaged var providerId: String?
|
@NSManaged var providerId: String?
|
||||||
@NSManaged var fullName: String?
|
@NSManaged var fullName: String?
|
||||||
@NSManaged var supportedConfigurationIds: String?
|
@NSManaged var supportedConfigurationIds: String?
|
||||||
@NSManaged var encodedCustomizations: Data? // [String: ProviderMetadata.Customization]
|
@NSManaged var encodedMetadata: Data? // [String: Provider.Metadata]
|
||||||
@NSManaged var lastUpdate: Date?
|
@NSManaged var lastUpdate: Date?
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,13 +31,13 @@ struct CoreDataMapper {
|
||||||
let context: NSManagedObjectContext
|
let context: NSManagedObjectContext
|
||||||
|
|
||||||
@discardableResult
|
@discardableResult
|
||||||
func cdProvider(from metadata: ProviderMetadata, lastUpdate: Date?) throws -> CDProviderV3 {
|
func cdProvider(from provider: Provider, lastUpdate: Date?) throws -> CDProviderV3 {
|
||||||
let entity = CDProviderV3(context: context)
|
let entity = CDProviderV3(context: context)
|
||||||
entity.providerId = metadata.id.rawValue
|
entity.providerId = provider.id.rawValue
|
||||||
entity.fullName = metadata.description
|
entity.fullName = provider.description
|
||||||
entity.lastUpdate = lastUpdate
|
entity.lastUpdate = lastUpdate
|
||||||
entity.supportedConfigurationIds = metadata.customizations.map(\.key).joined(separator: ",")
|
entity.supportedConfigurationIds = provider.metadata.map(\.key).joined(separator: ",")
|
||||||
entity.encodedCustomizations = try JSONEncoder().encode(metadata.customizations)
|
entity.encodedMetadata = try JSONEncoder().encode(provider.metadata)
|
||||||
return entity
|
return entity
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,28 +28,28 @@ import Foundation
|
||||||
import PassepartoutKit
|
import PassepartoutKit
|
||||||
|
|
||||||
struct DomainMapper {
|
struct DomainMapper {
|
||||||
func provider(from entity: CDProviderV3) -> ProviderMetadata? {
|
func provider(from entity: CDProviderV3) -> Provider? {
|
||||||
guard let id = entity.providerId, let fullName = entity.fullName else {
|
guard let id = entity.providerId, let fullName = entity.fullName else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
let customizations: [String: ProviderMetadata.Customization]
|
let metadata: [String: Provider.Metadata]
|
||||||
if let encodedCustomizations = entity.encodedCustomizations {
|
if let encodedMetadata = entity.encodedMetadata {
|
||||||
do {
|
do {
|
||||||
customizations = try JSONDecoder().decode([String: ProviderMetadata.Customization].self, from: encodedCustomizations)
|
metadata = try JSONDecoder().decode([String: Provider.Metadata].self, from: encodedMetadata)
|
||||||
} catch {
|
} catch {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else if let supportedConfigurationIds = entity.supportedConfigurationIds?.components(separatedBy: ",") {
|
} else if let supportedConfigurationIds = entity.supportedConfigurationIds?.components(separatedBy: ",") {
|
||||||
customizations = supportedConfigurationIds.reduce(into: [:]) {
|
metadata = supportedConfigurationIds.reduce(into: [:]) {
|
||||||
$0[$1] = .init()
|
$0[$1] = .init()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
customizations = [:]
|
metadata = [:]
|
||||||
}
|
}
|
||||||
return ProviderMetadata(
|
return Provider(
|
||||||
id,
|
id,
|
||||||
description: fullName,
|
description: fullName,
|
||||||
customizations: customizations
|
metadata: metadata
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23507" systemVersion="23H222" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
|
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23507" systemVersion="23H222" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
|
||||||
<entity name="CDProviderV3" representedClassName="CDProviderV3" syncable="YES">
|
<entity name="CDProviderV3" representedClassName="CDProviderV3" syncable="YES">
|
||||||
<attribute name="encodedCustomizations" optional="YES" attributeType="Binary"/>
|
<attribute name="encodedMetadata" optional="YES" attributeType="Binary"/>
|
||||||
<attribute name="fullName" optional="YES" attributeType="String"/>
|
<attribute name="fullName" optional="YES" attributeType="String"/>
|
||||||
<attribute name="lastUpdate" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
<attribute name="lastUpdate" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||||
<attribute name="providerId" optional="YES" attributeType="String"/>
|
<attribute name="providerId" optional="YES" attributeType="String"/>
|
||||||
|
|
|
@ -39,7 +39,7 @@ extension AppData {
|
||||||
actor CDProviderRepositoryV3: NSObject, ProviderRepository {
|
actor CDProviderRepositoryV3: NSObject, ProviderRepository {
|
||||||
private nonisolated let context: NSManagedObjectContext
|
private nonisolated let context: NSManagedObjectContext
|
||||||
|
|
||||||
private nonisolated let providersSubject: CurrentValueSubject<[ProviderMetadata], Never>
|
private nonisolated let providersSubject: CurrentValueSubject<[Provider], Never>
|
||||||
|
|
||||||
private nonisolated let lastUpdateSubject: CurrentValueSubject<[ProviderID: Date], Never>
|
private nonisolated let lastUpdateSubject: CurrentValueSubject<[ProviderID: Date], Never>
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ actor CDProviderRepositoryV3: NSObject, ProviderRepository {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nonisolated var indexPublisher: AnyPublisher<[ProviderMetadata], Never> {
|
nonisolated var indexPublisher: AnyPublisher<[Provider], Never> {
|
||||||
providersSubject
|
providersSubject
|
||||||
.removeDuplicates()
|
.removeDuplicates()
|
||||||
.eraseToAnyPublisher()
|
.eraseToAnyPublisher()
|
||||||
|
@ -83,7 +83,7 @@ actor CDProviderRepositoryV3: NSObject, ProviderRepository {
|
||||||
.eraseToAnyPublisher()
|
.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
func store(_ index: [ProviderMetadata]) async throws {
|
func store(_ index: [Provider]) async throws {
|
||||||
try await context.perform { [weak self] in
|
try await context.perform { [weak self] in
|
||||||
guard let self else {
|
guard let self else {
|
||||||
return
|
return
|
||||||
|
|
|
@ -130,7 +130,7 @@ private struct ProvidersSubmenu: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func profileButton(for provider: ProviderMetadata) -> some View {
|
func profileButton(for provider: Provider) -> some View {
|
||||||
Button(provider.description) {
|
Button(provider.description) {
|
||||||
var editable = EditableProfile()
|
var editable = EditableProfile()
|
||||||
editable.name = provider.description
|
editable.name = provider.description
|
||||||
|
|
|
@ -118,7 +118,7 @@ private extension ProviderContentModifier {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
var supportedProviders: [ProviderMetadata] {
|
var supportedProviders: [Provider] {
|
||||||
providerManager
|
providerManager
|
||||||
.providers
|
.providers
|
||||||
.filter {
|
.filter {
|
||||||
|
|
|
@ -28,7 +28,7 @@ import PassepartoutKit
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct ProviderPicker: View {
|
struct ProviderPicker: View {
|
||||||
let providers: [ProviderMetadata]
|
let providers: [Provider]
|
||||||
|
|
||||||
@Binding
|
@Binding
|
||||||
var providerId: ProviderID?
|
var providerId: ProviderID?
|
||||||
|
|
|
@ -104,9 +104,9 @@ private extension ActiveProfileView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let pair = profile.selectedProvider {
|
if let pair = profile.selectedProvider {
|
||||||
if let metadata = providerManager.provider(withId: pair.selection.id) {
|
if let provider = providerManager.provider(withId: pair.selection.id) {
|
||||||
ListRowView(title: Strings.Global.Nouns.provider) {
|
ListRowView(title: Strings.Global.Nouns.provider) {
|
||||||
Text(metadata.description)
|
Text(provider.description)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let entity = pair.selection.entity {
|
if let entity = pair.selection.entity {
|
||||||
|
|
|
@ -219,8 +219,8 @@ private extension OpenVPNCredentialsView {
|
||||||
}
|
}
|
||||||
|
|
||||||
func onLoad() {
|
func onLoad() {
|
||||||
if let providerId, let metadata = providerManager.provider(withId: providerId) {
|
if let providerId, let provider = providerManager.provider(withId: providerId) {
|
||||||
providerCustomization = metadata.customization(for: OpenVPN.Configuration.self)
|
providerCustomization = provider.customization(for: OpenVPN.Configuration.self)
|
||||||
}
|
}
|
||||||
builder = credentials?.builder() ?? OpenVPN.Credentials.Builder()
|
builder = credentials?.builder() ?? OpenVPN.Credentials.Builder()
|
||||||
if ignoresPassword {
|
if ignoresPassword {
|
||||||
|
|
Loading…
Reference in New Issue