@@ -17,7 +17,7 @@ class AccessoryController: ObservableObject {
17
17
var selfObserver : AnyCancellable ?
18
18
var listElementsObserver = [ AnyCancellable] ( )
19
19
let findMyController : FindMyController
20
-
20
+
21
21
weak var savePanel : NSSavePanel ?
22
22
23
23
init ( accessories: [ Accessory ] , findMyController: FindMyController ) {
@@ -99,13 +99,13 @@ class AccessoryController: ObservableObject {
99
99
func export( accessories: [ Accessory ] ) throws -> URL {
100
100
101
101
let savePanel = NSSavePanel ( )
102
- // savePanel.allowedFileTypes = ["plist", "json"]
102
+ // savePanel.allowedFileTypes = ["plist", "json"]
103
103
if #available( macOS 12 . 0 , * ) {
104
104
savePanel. allowedContentTypes = [ . propertyList]
105
- } else {
105
+ } else {
106
106
savePanel. allowedFileTypes = [ " plist " ]
107
107
}
108
-
108
+
109
109
savePanel. canCreateDirectories = true
110
110
savePanel. directoryURL = try FileManager . default. url ( for: . documentDirectory, in: . userDomainMask, appropriateFor: nil , create: false )
111
111
savePanel. message = " This export contains all private keys! Keep the file save to protect your location data "
@@ -114,31 +114,31 @@ class AccessoryController: ObservableObject {
114
114
savePanel. prompt = " Export "
115
115
savePanel. title = " Export accessories & keys "
116
116
savePanel. isExtensionHidden = false
117
-
117
+
118
118
let accessoryView = NSView ( )
119
119
let popUpButton = NSPopUpButton ( title: " File type " , target: self , action: #selector( exportFileTypeChanged ( button: ) ) )
120
120
popUpButton. addItems ( withTitles: [ " Property List " , " JSON " ] )
121
121
popUpButton. selectItem ( at: 0 )
122
122
popUpButton. stringValue = " File type "
123
123
popUpButton. translatesAutoresizingMaskIntoConstraints = false
124
124
accessoryView. addSubview ( popUpButton)
125
-
125
+
126
126
let popUpButtonLabel = NSTextField ( labelWithString: " File type " )
127
127
popUpButtonLabel. translatesAutoresizingMaskIntoConstraints = false
128
128
accessoryView. addSubview ( popUpButtonLabel)
129
129
accessoryView. translatesAutoresizingMaskIntoConstraints = false
130
-
131
- // popUpButtonLabel.leadingAnchor.constraint(greaterThanOrEqualTo: accessoryView.leadingAnchor, constant: 20.0).isActive = true
130
+
131
+ // popUpButtonLabel.leadingAnchor.constraint(greaterThanOrEqualTo: accessoryView.leadingAnchor, constant: 20.0).isActive = true
132
132
popUpButtonLabel. trailingAnchor. constraint ( equalTo: popUpButton. leadingAnchor, constant: - 8.0 ) . isActive = true
133
133
popUpButtonLabel. trailingAnchor. constraint ( lessThanOrEqualTo: accessoryView. centerXAnchor, constant: 0 ) . isActive = true
134
134
popUpButtonLabel. centerYAnchor. constraint ( equalTo: popUpButton. centerYAnchor, constant: 0 ) . isActive = true
135
- // popUpButton.trailingAnchor.constraint(lessThanOrEqualTo: accessoryView.trailingAnchor, constant: -20.0).isActive = true
135
+ // popUpButton.trailingAnchor.constraint(lessThanOrEqualTo: accessoryView.trailingAnchor, constant: -20.0).isActive = true
136
136
popUpButton. leadingAnchor. constraint ( lessThanOrEqualTo: accessoryView. centerXAnchor, constant: 0 ) . isActive = true
137
137
popUpButton. topAnchor. constraint ( equalTo: accessoryView. topAnchor, constant: 8.0 ) . isActive = true
138
138
popUpButton. bottomAnchor. constraint ( equalTo: accessoryView. bottomAnchor, constant: - 8.0 ) . isActive = true
139
139
popUpButton. heightAnchor. constraint ( greaterThanOrEqualToConstant: 20.0 ) . isActive = true
140
140
popUpButton. widthAnchor. constraint ( lessThanOrEqualToConstant: 200.0 ) . isActive = true
141
-
141
+
142
142
savePanel. accessoryView = accessoryView
143
143
self . savePanel = savePanel
144
144
@@ -148,15 +148,15 @@ class AccessoryController: ObservableObject {
148
148
var url = savePanel. url
149
149
{
150
150
let selectedItemIndex = popUpButton. indexOfSelectedItem
151
-
151
+
152
152
// Store the accessory file
153
153
if selectedItemIndex == 0 {
154
154
if url. pathExtension != " plist " {
155
155
url = url. appendingPathExtension ( " plist " )
156
156
}
157
157
let propertyList = try PropertyListEncoder ( ) . encode ( accessories)
158
158
try propertyList. write ( to: url)
159
- } else if selectedItemIndex == 1 {
159
+ } else if selectedItemIndex == 1 {
160
160
if url. pathExtension != " json " {
161
161
url = url. appendingPathExtension ( " json " )
162
162
}
@@ -168,18 +168,18 @@ class AccessoryController: ObservableObject {
168
168
}
169
169
throw ImportError . cancelled
170
170
}
171
-
171
+
172
172
@objc func exportFileTypeChanged( button: NSPopUpButton ) {
173
173
if button. indexOfSelectedItem == 0 {
174
174
if #available( macOS 12 . 0 , * ) {
175
175
self . savePanel? . allowedContentTypes = [ . propertyList]
176
- } else {
176
+ } else {
177
177
self . savePanel? . allowedFileTypes = [ " plist " ]
178
178
}
179
- } else {
179
+ } else {
180
180
if #available( macOS 12 . 0 , * ) {
181
181
self . savePanel? . allowedContentTypes = [ . json]
182
- } else {
182
+ } else {
183
183
self . savePanel? . allowedFileTypes = [ " json " ]
184
184
}
185
185
}
@@ -190,10 +190,10 @@ class AccessoryController: ObservableObject {
190
190
let openPanel = NSOpenPanel ( )
191
191
if #available( macOS 12 . 0 , * ) {
192
192
openPanel. allowedContentTypes = [ . json, . propertyList]
193
- } else {
193
+ } else {
194
194
openPanel. allowedFileTypes = [ " json " , " plist " ]
195
195
}
196
-
196
+
197
197
openPanel. canCreateDirectories = true
198
198
openPanel. directoryURL = try FileManager . default. url ( for: . documentDirectory, in: . userDomainMask, appropriateFor: nil , create: false )
199
199
openPanel. message = " Import an accessories file that includes the private keys "
@@ -208,10 +208,10 @@ class AccessoryController: ObservableObject {
208
208
var importedAccessories : [ Accessory ]
209
209
if url. pathExtension == " plist " {
210
210
importedAccessories = try PropertyListDecoder ( ) . decode ( [ Accessory ] . self, from: accessoryData)
211
- } else {
211
+ } else {
212
212
importedAccessories = try JSONDecoder ( ) . decode ( [ Accessory ] . self, from: accessoryData)
213
213
}
214
-
214
+
215
215
var updatedAccessories = self . accessories
216
216
// Filter out accessories with the same id (no duplicates)
217
217
importedAccessories = importedAccessories. filter ( { acc in !self . accessories. contains ( where: { acc. id == $0. id } ) } )
0 commit comments