@@ -443,43 +443,38 @@ struct AddCertificateView: View {
443443
444444 private func saveCertificate( ) {
445445 guard let p12URL = p12File? . url, let provURL = provFile? . url else { return }
446-
446+
447447 isChecking = true
448448 errorMessage = " "
449-
449+
450450 let workItem : DispatchWorkItem = DispatchWorkItem {
451451 do {
452452 var p12Data : Data
453453 var provData : Data
454- if editingCertificate != nil {
454+ if self . editingCertificate != nil {
455455 p12Data = try Data ( contentsOf: p12URL)
456456 provData = try Data ( contentsOf: provURL)
457457 } else {
458- guard p12URL. startAccessingSecurityScopedResource ( ) ,
459- provURL. startAccessingSecurityScopedResource ( ) else {
460- DispatchQueue . main. async {
461- isChecking = false
462- errorMessage = " Security-scoped resource access failed. "
463- }
464- return
465- }
458+ // Call start, but don't guard—proceed to read anyway
459+ let p12Scoped = p12URL. startAccessingSecurityScopedResource ( )
460+ let provScoped = provURL. startAccessingSecurityScopedResource ( )
466461 defer {
467- p12URL. stopAccessingSecurityScopedResource ( )
468- provURL. stopAccessingSecurityScopedResource ( )
462+ if p12Scoped { p12URL. stopAccessingSecurityScopedResource ( ) }
463+ if provScoped { provURL. stopAccessingSecurityScopedResource ( ) }
469464 }
470465 p12Data = try Data ( contentsOf: p12URL)
471466 provData = try Data ( contentsOf: provURL)
472467 }
473-
474- let checkResult = CertificatesManager . check ( p12Data: p12Data, password: password, mobileProvisionData: provData)
468+
469+ let checkResult = CertificatesManager . check ( p12Data: p12Data, password: self . password, mobileProvisionData: provData)
475470 var dispatchError : String ?
476-
471+
477472 switch checkResult {
478473 case . success( . success) :
479- if let folder = editingCertificate? . folderName {
480- try CertificateFileManager . shared. updateCertificate ( folderName: folder, p12Data: p12Data, provData: provData, password: password, displayName: displayName)
474+ if let folder = self . editingCertificate? . folderName {
475+ try CertificateFileManager . shared. updateCertificate ( folderName: folder, p12Data: p12Data, provData: provData, password: self . password, displayName: self . displayName)
481476 } else {
482- _ = try CertificateFileManager . shared. saveCertificate ( p12Data: p12Data, provData: provData, password: password, displayName: displayName)
477+ _ = try CertificateFileManager . shared. saveCertificate ( p12Data: p12Data, provData: provData, password: self . password, displayName: self . displayName)
483478 }
484479 case . success( . incorrectPassword) :
485480 dispatchError = " Incorrect Password "
@@ -488,19 +483,19 @@ struct AddCertificateView: View {
488483 case . failure( let error) :
489484 dispatchError = " Error: \( error. localizedDescription) "
490485 }
491-
486+
492487 DispatchQueue . main. async {
493- isChecking = false
488+ self . isChecking = false
494489 if let err = dispatchError {
495- errorMessage = err
490+ self . errorMessage = err
496491 } else {
497- dismiss ( )
492+ self . dismiss ( )
498493 }
499494 }
500495 } catch {
501496 DispatchQueue . main. async {
502- isChecking = false
503- errorMessage = " Failed to read files or save: \( error. localizedDescription) "
497+ self . isChecking = false
498+ self . errorMessage = " Failed to read files or save: \( error. localizedDescription) "
504499 }
505500 }
506501 }
0 commit comments