@@ -56,13 +56,14 @@ class ShareOptionsView: NSView {
5656
5757 suggestionsTextFieldDelegate. suggestionsDataSource = ShareeSuggestionsDataSource ( account: account, kit: kit, log: controller. log)
5858
59- suggestionsTextFieldDelegate. confirmationHandler = { suggestion in
60- guard let sharee = suggestion? . data as? NKSharee else {
61- return
59+ suggestionsTextFieldDelegate. confirmationHandler = { [ weak self] suggestion in
60+ Task { @MainActor in
61+ guard let sharee = suggestion? . data as? NKSharee else {
62+ return
63+ }
64+ self ? . shareRecipientTextField. stringValue = sharee. shareWith
65+ self ? . logger? . debug ( " Chose sharee \( sharee. shareWith) " )
6266 }
63-
64- self . shareRecipientTextField. stringValue = sharee. shareWith
65- self . logger? . debug ( " Chose sharee \( sharee. shareWith) " )
6667 }
6768
6869 suggestionsTextFieldDelegate. targetTextField = shareRecipientTextField
@@ -190,7 +191,7 @@ class ShareOptionsView: NSView {
190191
191192 if let caps = dataSource? . capabilities? . filesSharing {
192193 uploadEditPermissionCheckbox. state =
193- caps. defaultPermissions & NKShare . PermissionValues . updateShare . rawValue != 0
194+ caps. defaultPermissions & NKShare . Permission . update . rawValue != 0
194195 ? . on : . off
195196
196197 switch type {
@@ -201,7 +202,7 @@ class ShareOptionsView: NSView {
201202 expirationDateCheckbox. state = caps. publicLink? . expireDateEnforced == true ? . on : . off
202203 expirationDateCheckbox. isEnabled = caps. publicLink? . expireDateEnforced == false
203204 expirationDatePicker. dateValue = Date (
204- timeIntervalSinceNow:
205+ timeIntervalSinceNow:
205206 TimeInterval ( ( caps. publicLink? . expireDateDays ?? 1 ) * 24 * 60 * 60 )
206207 )
207208 if caps. publicLink? . expireDateEnforced == true {
@@ -281,12 +282,15 @@ class ShareOptionsView: NSView {
281282 let password = passwordProtectCheckbox. state == . on
282283 ? passwordSecureField. stringValue
283284 : " "
285+
284286 let expireDate = expirationDateCheckbox. state == . on
285287 ? NKShare . formattedDateString ( date: expirationDatePicker. dateValue)
286288 : " "
289+
287290 let note = noteForRecipientCheckbox. state == . on
288291 ? noteTextField. stringValue
289292 : " "
293+
290294 let label = labelTextField. stringValue
291295 let hideDownload = hideDownloadCheckbox. state == . on
292296 let uploadAndEdit = uploadEditPermissionCheckbox. state == . on
@@ -305,14 +309,17 @@ class ShareOptionsView: NSView {
305309 let selectedShareType = pickedShareType ( )
306310 let shareWith = shareRecipientTextField. stringValue
307311
308- var permissions = NKShare . PermissionValues. all. rawValue
309- permissions = uploadAndEdit
310- ? permissions | NKShare . PermissionValues. updateShare. rawValue
311- : permissions & ~ NKShare. PermissionValues. updateShare. rawValue
312+ var permissions = NKShare . Permission. defaultPermission ( for: selectedShareType)
313+
314+ if uploadAndEdit {
315+ permissions. formUnion ( . create)
316+ permissions. formUnion ( . update)
317+ }
312318
313319 setAllFields ( enabled: false )
314320 deleteButton. isEnabled = false
315321 saveButton. isEnabled = false
322+
316323 let error = await ShareController . create (
317324 account: account,
318325 kit: kit,
@@ -322,17 +329,20 @@ class ShareOptionsView: NSView {
322329 password: password,
323330 expireDate: expireDate,
324331 permissions: permissions,
332+ publicUpload: permissions. contains ( . create) ,
325333 note: note,
326334 label: label,
327335 hideDownload: hideDownload
328336 )
337+
329338 if let error = error, error != . success {
330339 dataSource. uiDelegate? . showError ( String ( localized: " Error creating: \( error. errorDescription) " ) )
331340 setAllFields ( enabled: true )
332341 } else {
333342 dataSource. uiDelegate? . hideOptions ( self )
334343 await dataSource. reload ( )
335344 }
345+
336346 return
337347 }
338348
@@ -342,14 +352,16 @@ class ShareOptionsView: NSView {
342352 logger? . error ( " No valid share controller, cannot edit share. " )
343353 return
344354 }
355+
345356 let share = controller. share
346357 let permissions = uploadAndEdit
347- ? share. permissions | NKShare . PermissionValues . updateShare . rawValue
348- : share. permissions & ~ NKShare. PermissionValues . updateShare . rawValue
358+ ? share. permissions | NKShare . Permission . update . rawValue
359+ : share. permissions & ~ NKShare. Permission . update . rawValue
349360
350361 setAllFields ( enabled: false )
351362 deleteButton. isEnabled = false
352363 saveButton. isEnabled = false
364+
353365 let error = await controller. save (
354366 password: password,
355367 expireDate: expireDate,
@@ -358,6 +370,7 @@ class ShareOptionsView: NSView {
358370 label: label,
359371 hideDownload: hideDownload
360372 )
373+
361374 if let error = error, error != . success {
362375 dataSource? . uiDelegate? . showError ( " Error updating share: \( error. errorDescription) " )
363376 setAllFields ( enabled: true )
@@ -387,4 +400,3 @@ class ShareOptionsView: NSView {
387400 }
388401 }
389402}
390-
0 commit comments