diff --git a/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift b/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift index 4a85b6453f12d8c9cb413a8144e78f5b19510138..2de6237a3d94070a5218040b814af58a884a7171 100644 --- a/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift +++ b/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift @@ -26,9 +26,7 @@ class ComposeModel: ObservableObject { } recipientsModel.parentComposeModel = self } - - // TODO: Add security state functionality - + /// Generates mail and sends it. func sendMail() { generateMail().send() @@ -43,6 +41,13 @@ class ComposeModel: ObservableObject { for address in addresses { model.addNewAddress(address) } + let frc = PersistentDataProvider.dataProvider.generateFetchedAddresesWithKeyResultsController(addresses: addresses) + if let records = frc.fetchedObjects { + if encryptionOn && records.count != addresses.count { + encryptionOn = false + } + } + } /// Generates OutgoingMail with given email contents. diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift index 2979c8213f42105a4c4cd9af1e2ff282973f36ab..60215330f2281cb238b03750c82a9533c04fc5fe 100644 --- a/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift +++ b/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift @@ -70,6 +70,9 @@ class RecipientFieldModel: ObservableObject { /// - Parameter _: AddressRecord that gets added to array of recipients. func selectContact(_ addressRecord: AddressRecord) { selectedContacts.append(addressRecord) + if !addressRecord.hasPublicKey { + self.parentRecipientModel?.parentComposeModel?.encryptionOn = false + } text = "" suggestions = [] @@ -85,8 +88,12 @@ class RecipientFieldModel: ObservableObject { /// /// - Parameter at: Index of contact to be removed from array of recipients. func deselectContact(at index: Int) { - selectedContacts.remove(at: index) + let addr = selectedContacts[index] + selectedContacts.remove(at: index) + if !addr.hasPublicKey { + parentRecipientModel?.checkEncryption() + } // TODO: See TODO in selectContact. parentRecipientModel?.parentComposeModel?.subject += "" } @@ -120,6 +127,9 @@ class RecipientFieldModel: ObservableObject { if let addresses = frc.fetchedObjects, let addr = addresses.first { self.selectedContacts.append(addr) + if !addr.hasPublicKey { + self.parentRecipientModel?.parentComposeModel?.encryptionOn = false + } } } } diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift index 1e2c54290c9a45c60fd369f14bc32b89ef54f7f0..ea16a816c1e42ef135b194bbbf8eade47040e8c3 100644 --- a/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift +++ b/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift @@ -32,9 +32,7 @@ class RecipientsModel: ObservableObject { /// Used to show or hide Bcc field var isEditingCcOrBcc: Bool = false { didSet { - print("isEditingCcOrBcc: \(isEditingCcOrBcc)") updateShowBccField() - print("showBccField: \(showBccField)") } } @@ -79,6 +77,25 @@ class RecipientsModel: ObservableObject { || !bccModel.selectedContacts.isEmpty ccModel.type = showBccField ? .cc : .ccBcc } + + func checkEncryption() { + for addr in toModel.selectedContacts { + if !addr.hasPublicKey { + return + } + } + for addr in ccModel.selectedContacts { + if !addr.hasPublicKey { + return + } + } + for addr in bccModel.selectedContacts { + if !addr.hasPublicKey { + return + } + } + parentComposeModel?.encryptionOn = true + } } /// Type of recipient field (to, cc, bcc).