1
1
//
2
- // OpenVPNModule+Destination .swift
2
+ // OpenVPNModule+UI .swift
3
3
// Passepartout
4
4
//
5
5
// Created by Davide De Rosa on 2/12/25.
@@ -28,7 +28,18 @@ import CommonUtils
28
28
import PassepartoutKit
29
29
import SwiftUI
30
30
31
- extension OpenVPNView {
31
+ extension OpenVPNModule . Builder : ModuleViewProviding {
32
+ public func moduleView( with parameters: ModuleViewParameters ) -> some View {
33
+ OpenVPNView ( module: self , parameters: parameters)
34
+ }
35
+ }
36
+
37
+ extension OpenVPNModule : ProviderServerCoordinatorSupporting {
38
+ }
39
+
40
+ // MARK: - Destination
41
+
42
+ extension OpenVPNModule {
32
43
enum Subroute : Hashable {
33
44
case providerServer
34
45
@@ -44,23 +55,23 @@ extension OpenVPNView {
44
55
45
56
extension OpenVPNModule . Builder : ModuleDestinationProviding {
46
57
public func handlesRoute( _ route: AnyHashable ) -> Bool {
47
- route is OpenVPNView . Subroute
58
+ route is OpenVPNModule . Subroute
48
59
}
49
60
50
61
public func moduleDestination(
51
62
for route: AnyHashable ,
52
63
with parameters: ModuleDestinationParameters ,
53
64
path: Binding < NavigationPath >
54
65
) -> some View {
55
- ( route as? OpenVPNView . Subroute)
66
+ ( route as? OpenVPNModule . Subroute)
56
67
. map {
57
68
DestinationView ( route: $0, parameters: parameters, path: path)
58
69
}
59
70
}
60
71
}
61
72
62
73
private struct DestinationView : View {
63
- let route : OpenVPNView . Subroute
74
+ let route : OpenVPNModule . Subroute
64
75
65
76
let parameters : ModuleDestinationParameters
66
77
@@ -112,7 +123,7 @@ private struct DestinationView: View {
112
123
OpenVPNView . RemotesView (
113
124
endpoints: endpoints,
114
125
excludedEndpoints: excludedEndpoints,
115
- remotesRoute: draft. wrappedValue. providerSelection == nil ? ProfileRoute ( OpenVPNView . Subroute. editRemotes) : nil
126
+ remotesRoute: draft. wrappedValue. providerSelection == nil ? ProfileRoute ( OpenVPNModule . Subroute. editRemotes) : nil
116
127
)
117
128
118
129
case . editRemotes:
@@ -172,3 +183,27 @@ private extension DestinationView {
172
183
}
173
184
}
174
185
}
186
+
187
+ // MARK: - Shortcuts
188
+
189
+ extension OpenVPNModule . Builder : ModuleShortcutsProviding {
190
+ public var isVisible : Bool {
191
+ providerSelection != nil || configurationBuilder? . authUserPass == true
192
+ }
193
+
194
+ @ViewBuilder
195
+ public func moduleShortcutsView( editor: ProfileEditor , path: Binding < NavigationPath > ) -> some View {
196
+ if let providerSelection {
197
+ // ProviderNameRow(id: providerSelection.id)
198
+ NavigationLink ( value: ProfileRoute ( OpenVPNModule . Subroute. providerServer) ) {
199
+ ProviderServerRow ( selectedEntity: providerSelection. entity)
200
+ }
201
+ . uiAccessibility ( . Profile. providerServerLink)
202
+ }
203
+ if providerSelection != nil || configurationBuilder? . authUserPass == true {
204
+ NavigationLink ( value: ProfileRoute ( OpenVPNModule . Subroute. credentials) ) {
205
+ Text ( Strings . Modules. Openvpn. credentials)
206
+ }
207
+ }
208
+ }
209
+ }
0 commit comments