Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions FlowCrypt.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
9F6EE17B2598F9FA0059BA51 /* Gmail+Backup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F6EE17A2598F9FA0059BA51 /* Gmail+Backup.swift */; };
9F716308234FC73E0031645E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9F71630A234FC73E0031645E /* Localizable.strings */; };
9F7920F52667CEF100DA3D80 /* PassPraseSaveable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F7920F42667CEF100DA3D80 /* PassPraseSaveable.swift */; };
9F79228826696B0200DA3D80 /* PassPhraseStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F79228726696B0200DA3D80 /* PassPhraseStorage.swift */; };
9F79228826696B0200DA3D80 /* PassPhraseService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F79228726696B0200DA3D80 /* PassPhraseService.swift */; };
9F79229426696B9300DA3D80 /* KeyDataStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F79229326696B9300DA3D80 /* KeyDataStorage.swift */; };
9F7E5137267AA51B00CE37C3 /* AlertsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F7E5136267AA51B00CE37C3 /* AlertsFactory.swift */; };
9F8220D526336626004B2009 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8220D426336626004B2009 /* Logger.swift */; };
Expand Down Expand Up @@ -139,11 +139,11 @@
9FC4116526811861004C0A69 /* BackupServiceMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F4163EC266574CB00106194 /* BackupServiceMock.swift */; };
9FC4116B2681186D004C0A69 /* KeyMethodsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0157926565B7800CBBA05 /* KeyMethodsTest.swift */; };
9FC41171268118A7004C0A69 /* PassPhraseStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBA2266EB95300F3BF5D /* PassPhraseStorageTests.swift */; };
9FC41177268118AD004C0A69 /* LocalPassPhraseStorageMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBC8266EBE0F00F3BF5D /* LocalPassPhraseStorageMock.swift */; };
9FC4117D268118AE004C0A69 /* EncryptedPassPhraseStorageMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBCF266EBE1D00F3BF5D /* EncryptedPassPhraseStorageMock.swift */; };
9FC4117D268118AE004C0A69 /* PassPhraseStorageMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBCF266EBE1D00F3BF5D /* PassPhraseStorageMock.swift */; };
9FC41183268118B1004C0A69 /* EmailProviderMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBC1266EBE0100F3BF5D /* EmailProviderMock.swift */; };
9FC4120926811D00004C0A69 /* PromiseExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC411892681191D004C0A69 /* PromiseExtensions.swift */; };
9FC7EAB3266A404D00F3BF5D /* PassPhrase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EAB2266A404D00F3BF5D /* PassPhrase.swift */; };
9FC413182683C492004C0A69 /* InMemoryPassPhraseStorageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC413172683C491004C0A69 /* InMemoryPassPhraseStorageTest.swift */; };
9FC7EAB3266A404D00F3BF5D /* PassPhraseObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EAB2266A404D00F3BF5D /* PassPhraseObject.swift */; };
9FC7EB76266EB67B00F3BF5D /* EncryptedStorageProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EB75266EB67B00F3BF5D /* EncryptedStorageProtocols.swift */; };
9FC7EBAA266EBD3700F3BF5D /* InMemoryPassPhraseStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC7EBA9266EBD3700F3BF5D /* InMemoryPassPhraseStorage.swift */; };
9FD364862381EFCB00657302 /* SetupManuallyEnterPassPhraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD364852381EFCB00657302 /* SetupManuallyEnterPassPhraseViewController.swift */; };
Expand Down Expand Up @@ -485,7 +485,7 @@
9F71630B234FC7500031645E /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
9F72E866263ECE2A0039CF81 /* Trace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trace.swift; sourceTree = "<group>"; };
9F7920F42667CEF100DA3D80 /* PassPraseSaveable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPraseSaveable.swift; sourceTree = "<group>"; };
9F79228726696B0200DA3D80 /* PassPhraseStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassPhraseStorage.swift; sourceTree = "<group>"; };
9F79228726696B0200DA3D80 /* PassPhraseService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassPhraseService.swift; sourceTree = "<group>"; };
9F79229326696B9300DA3D80 /* KeyDataStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyDataStorage.swift; sourceTree = "<group>"; };
9F7E5136267AA51B00CE37C3 /* AlertsFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertsFactory.swift; sourceTree = "<group>"; };
9F8220D426336626004B2009 /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -523,13 +523,13 @@
9FC411342595EA94001180A8 /* Imap+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Imap+Search.swift"; sourceTree = "<group>"; };
9FC4114B25961CEA001180A8 /* MailServiceProviderType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailServiceProviderType.swift; sourceTree = "<group>"; };
9FC411892681191D004C0A69 /* PromiseExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromiseExtensions.swift; sourceTree = "<group>"; };
9FC7EAB2266A404D00F3BF5D /* PassPhrase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPhrase.swift; sourceTree = "<group>"; };
9FC413172683C491004C0A69 /* InMemoryPassPhraseStorageTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InMemoryPassPhraseStorageTest.swift; sourceTree = "<group>"; };
9FC7EAB2266A404D00F3BF5D /* PassPhraseObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPhraseObject.swift; sourceTree = "<group>"; };
9FC7EB75266EB67B00F3BF5D /* EncryptedStorageProtocols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedStorageProtocols.swift; sourceTree = "<group>"; };
9FC7EBA2266EB95300F3BF5D /* PassPhraseStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPhraseStorageTests.swift; sourceTree = "<group>"; };
9FC7EBA9266EBD3700F3BF5D /* InMemoryPassPhraseStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InMemoryPassPhraseStorage.swift; sourceTree = "<group>"; };
9FC7EBC1266EBE0100F3BF5D /* EmailProviderMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailProviderMock.swift; sourceTree = "<group>"; };
9FC7EBC8266EBE0F00F3BF5D /* LocalPassPhraseStorageMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalPassPhraseStorageMock.swift; sourceTree = "<group>"; };
9FC7EBCF266EBE1D00F3BF5D /* EncryptedPassPhraseStorageMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedPassPhraseStorageMock.swift; sourceTree = "<group>"; };
9FC7EBCF266EBE1D00F3BF5D /* PassPhraseStorageMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPhraseStorageMock.swift; sourceTree = "<group>"; };
9FD22A19230FD781005067A6 /* NavigationBarItemsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarItemsView.swift; sourceTree = "<group>"; };
9FD22A1B230FE7D0005067A6 /* Then.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Then.swift; sourceTree = "<group>"; };
9FD22A1E230FEFC6005067A6 /* NavigationBarActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarActionButton.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1190,7 +1190,7 @@
isa = PBXGroup;
children = (
9F79229326696B9300DA3D80 /* KeyDataStorage.swift */,
9F79228726696B0200DA3D80 /* PassPhraseStorage.swift */,
9F79228726696B0200DA3D80 /* PassPhraseService.swift */,
9FC7EBA9266EBD3700F3BF5D /* InMemoryPassPhraseStorage.swift */,
D2891AC124C59EFA008918E3 /* KeyService.swift */,
);
Expand Down Expand Up @@ -1247,9 +1247,9 @@
isa = PBXGroup;
children = (
9FC7EBA2266EB95300F3BF5D /* PassPhraseStorageTests.swift */,
9FC7EBC8266EBE0F00F3BF5D /* LocalPassPhraseStorageMock.swift */,
9FC7EBC1266EBE0100F3BF5D /* EmailProviderMock.swift */,
9FC7EBCF266EBE1D00F3BF5D /* EncryptedPassPhraseStorageMock.swift */,
9FC7EBCF266EBE1D00F3BF5D /* PassPhraseStorageMock.swift */,
9FC413172683C491004C0A69 /* InMemoryPassPhraseStorageTest.swift */,
);
path = PassPhraseStorageTests;
sourceTree = "<group>";
Expand Down Expand Up @@ -1492,7 +1492,7 @@
D212D36324C1AC4800035991 /* KeyId.swift */,
D212D35C24C1AACF00035991 /* PrvKeyInfo.swift */,
D2E26F6B24F25B1F00612AF1 /* KeyAlgo.swift */,
9FC7EAB2266A404D00F3BF5D /* PassPhrase.swift */,
9FC7EAB2266A404D00F3BF5D /* PassPhraseObject.swift */,
);
path = Models;
sourceTree = "<group>";
Expand Down Expand Up @@ -2307,14 +2307,14 @@
9FC41183268118B1004C0A69 /* EmailProviderMock.swift in Sources */,
9F976490267E11880058419D /* ImapHelperTest.swift in Sources */,
9FC4116526811861004C0A69 /* BackupServiceMock.swift in Sources */,
9FC413182683C492004C0A69 /* InMemoryPassPhraseStorageTest.swift in Sources */,
9F9764C5267E14AB0058419D /* GeneralConstantsTest.swift in Sources */,
9F976507267E165D0058419D /* ZBase32EncodingTests.swift in Sources */,
9FC4117D268118AE004C0A69 /* EncryptedPassPhraseStorageMock.swift in Sources */,
9FC4117D268118AE004C0A69 /* PassPhraseStorageMock.swift in Sources */,
9F97650E267E16620058419D /* WKDURLsConstructorTests.swift in Sources */,
9F976585267E194F0058419D /* FlowCryptCoreTests.swift in Sources */,
9FC4116B2681186D004C0A69 /* KeyMethodsTest.swift in Sources */,
9F97653D267E17C90058419D /* LocalStorageTests.swift in Sources */,
9FC41177268118AD004C0A69 /* LocalPassPhraseStorageMock.swift in Sources */,
9F9764F4267E15CC0058419D /* ExtensionTests.swift in Sources */,
9F976556267E186D0058419D /* DomainRulesTests.swift in Sources */,
9FC41171268118A7004C0A69 /* PassPhraseStorageTests.swift in Sources */,
Expand Down Expand Up @@ -2410,7 +2410,7 @@
D20D3C672520AB1000D4AA9A /* BackupViewController.swift in Sources */,
D2E26F6324F1698100612AF1 /* ContactsListViewController.swift in Sources */,
9F53CB7B2555E1E300C0157A /* GmailService+folders.swift in Sources */,
9F79228826696B0200DA3D80 /* PassPhraseStorage.swift in Sources */,
9F79228826696B0200DA3D80 /* PassPhraseService.swift in Sources */,
D2E26F6624F169B400612AF1 /* ContactsListDecorator.swift in Sources */,
D2FF6968243115F9007182F0 /* EmailProviderViewDecorator.swift in Sources */,
9F589F0D238C7A9B007FD759 /* LocalStorage.swift in Sources */,
Expand Down Expand Up @@ -2466,7 +2466,7 @@
D29AFFF92409767F00C1387D /* GoogleContactsResponse.swift in Sources */,
9F003D6125E1B4ED00EB38C0 /* TrashFolderProvider.swift in Sources */,
9FF0671025520D7100FCC9E6 /* MessageGateway.swift in Sources */,
9FC7EAB3266A404D00F3BF5D /* PassPhrase.swift in Sources */,
9FC7EAB3266A404D00F3BF5D /* PassPhraseObject.swift in Sources */,
9F31AB8C23298B3F00CF87EA /* Imap+retry.swift in Sources */,
9F79229426696B9300DA3D80 /* KeyDataStorage.swift in Sources */,
9F82D352256D74FA0069A702 /* InboxViewControllerContainer.swift in Sources */,
Expand Down
6 changes: 0 additions & 6 deletions FlowCrypt/Controllers/Msg/MessageViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,12 @@ final class MessageViewController: TableNodeViewController {
private let messageOperationsProvider: MessageOperationsProvider
private let trashFolderProvider: TrashFolderProviderType
private var processedMessage: ProcessedMessage = .empty
private let passPhraseStorage: PassPhraseStorageType

init(
messageService: MessageService = MessageService(),
messageOperationsProvider: MessageOperationsProvider = MailProvider.shared.messageOperationsProvider,
decorator: MessageViewDecorator = MessageViewDecorator(dateFormatter: DateFormatter()),
trashFolderProvider: TrashFolderProviderType = TrashFolderProvider(),
passPhraseStorage: PassPhraseStorageType = PassPhraseStorage(
storage: EncryptedStorage(),
emailProvider: DataService.shared
),
input: MessageViewController.Input,
completion: MsgViewControllerCompletion?
) {
Expand All @@ -76,7 +71,6 @@ final class MessageViewController: TableNodeViewController {
self.decorator = decorator
self.trashFolderProvider = trashFolderProvider
self.onCompletion = completion
self.passPhraseStorage = passPhraseStorage

super.init(node: TableNode())
}
Expand Down
2 changes: 1 addition & 1 deletion FlowCrypt/Controllers/Setup/PassPraseSaveable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ protocol PassPhraseSaveable {
var saveLocallyNode: CellNode { get }
var saveInMemoryNode: CellNode { get }

var passPhraseStorage: PassPhraseStorageType { get }
var passPhraseService: PassPhraseServiceType { get }

func handleSelectedPassPhraseOption()
func showPassPhraseErrorAlert()
Expand Down
11 changes: 4 additions & 7 deletions FlowCrypt/Controllers/Setup/SetupBackupsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ final class SetupBackupsViewController: TableNodeViewController, PassPhraseSavea
private let user: UserId
private let fetchedEncryptedKeys: [KeyDetails]
private let keyStorage: KeyStorageType
let passPhraseStorage: PassPhraseStorageType
let passPhraseService: PassPhraseServiceType

private var passPhrase: String?
private lazy var logger = Logger.nested(in: Self.self, with: .setup)
Expand All @@ -42,10 +42,7 @@ final class SetupBackupsViewController: TableNodeViewController, PassPhraseSavea
core: Core = Core.shared,
keyMethods: KeyMethodsType = KeyMethods(),
user: UserId,
passPhraseStorage: PassPhraseStorageType = PassPhraseStorage(
storage: EncryptedStorage(),
emailProvider: DataService.shared
)
passPhraseService: PassPhraseServiceType = PassPhraseService()
) {
self.fetchedEncryptedKeys = fetchedEncryptedKeys
self.router = router
Expand All @@ -54,7 +51,7 @@ final class SetupBackupsViewController: TableNodeViewController, PassPhraseSavea
self.core = core
self.keyMethods = keyMethods
self.user = user
self.passPhraseStorage = passPhraseStorage
self.passPhraseService = passPhraseService

super.init(node: TableNode())
}
Expand Down Expand Up @@ -140,7 +137,7 @@ extension SetupBackupsViewController {
PassPhrase(value: passPhrase, longid: $0.longid)
}
.forEach {
passPhraseStorage.savePassPhrase(with: $0, inStorage: shouldSaveLocally)
passPhraseService.savePassPhrase(with: $0, inStorage: shouldSaveLocally)
}

// save keys
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ final class SetupGenerateKeyViewController: TableNodeViewController, PassPhraseS
private let storage: DataServiceType
private let keyStorage: KeyStorageType
private let attester: AttesterApiType
let passPhraseStorage: PassPhraseStorageType
let passPhraseService: PassPhraseServiceType

var shouldSaveLocally = true {
didSet {
Expand All @@ -62,10 +62,7 @@ final class SetupGenerateKeyViewController: TableNodeViewController, PassPhraseS
storage: DataServiceType = DataService.shared,
keyStorage: KeyStorageType = KeyDataStorage(),
attester: AttesterApiType = AttesterApi(),
passPhraseStorage: PassPhraseStorageType = PassPhraseStorage(
storage: EncryptedStorage(),
emailProvider: DataService.shared
)
passPhraseService: PassPhraseServiceType = PassPhraseService()
) {
self.user = user
self.core = core
Expand All @@ -75,7 +72,7 @@ final class SetupGenerateKeyViewController: TableNodeViewController, PassPhraseS
self.storage = storage
self.attester = attester
self.keyStorage = keyStorage
self.passPhraseStorage = passPhraseStorage
self.passPhraseService = passPhraseService

super.init(node: TableNode())
}
Expand Down Expand Up @@ -149,7 +146,7 @@ extension SetupGenerateKeyViewController {
let passPhrase = PassPhrase(value: passPhrase, longid: encryptedPrv.key.longid)

self.keyStorage.addKeys(keyDetails: [encryptedPrv.key], source: .generated)
self.passPhraseStorage.savePassPhrase(with: passPhrase, inStorage: self.shouldSaveLocally)
self.passPhraseService.savePassPhrase(with: passPhrase, inStorage: self.shouldSaveLocally)

let updateKey = self.attester.updateKey(
email: userId.email,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ final class SetupManuallyEnterPassPhraseViewController: TableNodeViewController,
private let keysStorage: KeyStorageType
private let keyService: KeyServiceType
private let router: GlobalRouterType
let passPhraseStorage: PassPhraseStorageType
let passPhraseService: PassPhraseServiceType

private var passPhrase: String?

Expand All @@ -46,10 +46,7 @@ final class SetupManuallyEnterPassPhraseViewController: TableNodeViewController,
keysService: KeyStorageType = KeyDataStorage(),
router: GlobalRouterType = GlobalRouter(),
keyService: KeyServiceType = KeyService(),
passPhraseStorage: PassPhraseStorageType = PassPhraseStorage(
storage: EncryptedStorage(),
emailProvider: DataService.shared
),
passPhraseService: PassPhraseServiceType = PassPhraseService(),
email: String,
fetchedKeys: [KeyDetails]
) {
Expand All @@ -60,7 +57,7 @@ final class SetupManuallyEnterPassPhraseViewController: TableNodeViewController,
self.keysStorage = keysService
self.router = router
self.keyService = keyService
self.passPhraseStorage = passPhraseStorage
self.passPhraseService = passPhraseService

super.init(node: TableNode())
}
Expand Down Expand Up @@ -247,15 +244,15 @@ extension SetupManuallyEnterPassPhraseViewController {
PassPhrase(value: passPhrase, longid: $0.longid)
}
.forEach {
passPhraseStorage.updatePassPhrase(with: $0, inStorage: shouldSaveLocally)
passPhraseService.updatePassPhrase(with: $0, inStorage: shouldSaveLocally)
}

newKeysToAdd
.map {
PassPhrase(value: passPhrase, longid: $0.longid)
}
.forEach {
passPhraseStorage.savePassPhrase(with: $0, inStorage: shouldSaveLocally)
passPhraseService.savePassPhrase(with: $0, inStorage: shouldSaveLocally)
}

hideSpinner()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,6 @@
import Foundation
import RealmSwift

// Should be operated in app
struct PassPhrase: Codable, Hashable, Equatable {
let value: String
let longid: String

init(value: String, longid: String) {
self.value = value
self.longid = longid
}
}

extension PassPhrase {
init(object: PassPhraseObject) {
self.value = object.value
self.longid = object.longid
}
}

/// PassPhrase object to store in Realm
final class PassPhraseObject: Object {
@objc dynamic var longid: String = ""
Expand All @@ -42,8 +24,17 @@ final class PassPhraseObject: Object {
}
}

// MARK: - Convenience
extension PassPhraseObject {
convenience init(_ passPhrase: PassPhrase) {
self.init(longid: passPhrase.longid, value: passPhrase.value)
}
}

extension PassPhrase {
init(object: PassPhraseObject) {
self.value = object.value
self.longid = object.longid
self.date = nil
}
}
4 changes: 4 additions & 0 deletions FlowCrypt/Functionality/DataManager/DataService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import Foundation
import Promises
import RealmSwift

protocol EmailProviderType {
var email: String? { get }
}

protocol DataServiceType: EmailProviderType {
// data
var email: String? { get }
Expand Down
Loading