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
16 changes: 0 additions & 16 deletions FlowCrypt.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@
9F003D6D25EA8F3200EB38C0 /* SessionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F003D6C25EA8F3200EB38C0 /* SessionService.swift */; };
9F003DB625EA92BC00EB38C0 /* LogOutHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F003DB525EA92BC00EB38C0 /* LogOutHandler.swift */; };
9F0C3C102316DD5B00299985 /* GoogleUserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0C3C0F2316DD5B00299985 /* GoogleUserService.swift */; };
9F0C3C122316DDA500299985 /* DataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0C3C112316DDA500299985 /* DataService.swift */; };
9F0C3C142316E69300299985 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0C3C132316E69300299985 /* User.swift */; };
9F0C3C1A231819C500299985 /* MessageKindProviderType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0C3C19231819C500299985 /* MessageKindProviderType.swift */; };
9F0C3C2623194E0A00299985 /* FolderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0C3C2523194E0A00299985 /* FolderViewModel.swift */; };
Expand Down Expand Up @@ -237,7 +236,6 @@
9FBD69F8277B1E66002FC602 /* MBProgressHUD in Frameworks */ = {isa = PBXBuildFile; productRef = 9FBD69F7277B1E66002FC602 /* MBProgressHUD */; };
9FBD69FA277B1E6C002FC602 /* Toast in Frameworks */ = {isa = PBXBuildFile; productRef = 9FBD69F9277B1E6C002FC602 /* Toast */; };
9FBEAE5525D41BFF009E98D4 /* UserMailSessionProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBEAE5425D41BFF009E98D4 /* UserMailSessionProvider.swift */; };
9FBEAF3125DFB8E1009E98D4 /* DBMigrationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBEAF3025DFB8E1009E98D4 /* DBMigrationService.swift */; };
9FC41090268100B6004C0A69 /* CoreTypesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D254733324C597CD00DEE698 /* CoreTypesTest.swift */; };
9FC411212595EA12001180A8 /* MessageSearchProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC411202595EA12001180A8 /* MessageSearchProvider.swift */; };
9FC4112E2595EA8B001180A8 /* Gmail+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC4112D2595EA8B001180A8 /* Gmail+Search.swift */; };
Expand Down Expand Up @@ -561,7 +559,6 @@
9F003D9D25EA910B00EB38C0 /* LocalStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalStorageTests.swift; sourceTree = "<group>"; };
9F003DB525EA92BC00EB38C0 /* LogOutHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogOutHandler.swift; sourceTree = "<group>"; };
9F0C3C0F2316DD5B00299985 /* GoogleUserService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoogleUserService.swift; sourceTree = "<group>"; };
9F0C3C112316DDA500299985 /* DataService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataService.swift; sourceTree = "<group>"; };
9F0C3C132316E69300299985 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
9F0C3C19231819C500299985 /* MessageKindProviderType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageKindProviderType.swift; sourceTree = "<group>"; };
9F0C3C2523194E0A00299985 /* FolderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolderViewModel.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -685,7 +682,6 @@
9FB22CEF25715D960026EE64 /* BackupServiceError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupServiceError.swift; sourceTree = "<group>"; };
9FB22CF625715DC50026EE64 /* KeyServiceErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyServiceErrorHandler.swift; sourceTree = "<group>"; };
9FBEAE5425D41BFF009E98D4 /* UserMailSessionProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserMailSessionProvider.swift; sourceTree = "<group>"; };
9FBEAF3025DFB8E1009E98D4 /* DBMigrationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DBMigrationService.swift; sourceTree = "<group>"; };
9FC411202595EA12001180A8 /* MessageSearchProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageSearchProvider.swift; sourceTree = "<group>"; };
9FC4112D2595EA8B001180A8 /* Gmail+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Gmail+Search.swift"; sourceTree = "<group>"; };
9FC411342595EA94001180A8 /* Imap+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Imap+Search.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1528,14 +1524,6 @@
path = "UsersMailSession Provider";
sourceTree = "<group>";
};
9FBEAF3725DFB8EB009E98D4 /* Migration */ = {
isa = PBXGroup;
children = (
9FBEAF3025DFB8E1009E98D4 /* DBMigrationService.swift */,
);
path = Migration;
sourceTree = "<group>";
};
9FC411272595EA28001180A8 /* SearchMessage Provider */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1789,7 +1777,6 @@
9FC4114A25961CD6001180A8 /* Mail Provider */,
9FB22CB425715C860026EE64 /* Error Handling */,
9F0C3C1F23191F2000299985 /* Services */,
9FBEAF3725DFB8EB009E98D4 /* Migration */,
);
path = Functionality;
sourceTree = "<group>";
Expand Down Expand Up @@ -2004,7 +1991,6 @@
D29AFFEE24092F4900C1387D /* DataManager */ = {
isa = PBXGroup;
children = (
9F0C3C112316DDA500299985 /* DataService.swift */,
9F589F1A238C85B0007FD759 /* Encrypted Storage */,
9F589F19238C82A1007FD759 /* Local Storage */,
9F003D6C25EA8F3200EB38C0 /* SessionService.swift */,
Expand Down Expand Up @@ -2779,7 +2765,6 @@
9FFC7E5A260C946100282FCE /* CloudContactsProvider.swift in Sources */,
D2F6D1332433753100DB4065 /* IMAPConnectionParameters.swift in Sources */,
9F003DB625EA92BC00EB38C0 /* LogOutHandler.swift in Sources */,
9F0C3C122316DDA500299985 /* DataService.swift in Sources */,
D20D3C6E2520AB3900D4AA9A /* BackupViewDecorator.swift in Sources */,
9F268891237DC55600428A94 /* SetupManuallyImportKeyViewController.swift in Sources */,
D2E26F7024F266F300612AF1 /* ContactDetailViewController.swift in Sources */,
Expand All @@ -2800,7 +2785,6 @@
9F88391927270A1A00669B56 /* MessagesThreadOperationsProvider.swift in Sources */,
9F53CB872555E7F300C0157A /* Imap+Other.swift in Sources */,
D2F6D1352433753B00DB4065 /* SMTPSession.swift in Sources */,
9FBEAF3125DFB8E1009E98D4 /* DBMigrationService.swift in Sources */,
9F17976D2368EEBD002BF770 /* SetupViewDecorator.swift in Sources */,
5ADEDCC023A43B0800EC495E /* KeyDetailInfoViewDecorator.swift in Sources */,
D227C0E6250538780070F805 /* RemoteFoldersProvider.swift in Sources */,
Expand Down
19 changes: 6 additions & 13 deletions FlowCrypt/App/AppContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ class AppContext {
let session: SessionType?
// todo - session service should have maybe `.currentSession` on it, then we don't have to have `session` above?
let userAccountService: SessionServiceType
let dataService: DataServiceType
let keyService: KeyServiceType
let passPhraseService: PassPhraseServiceType
let clientConfigurationService: ClientConfigurationServiceType
Expand All @@ -25,7 +24,6 @@ class AppContext {
encryptedStorage: EncryptedStorageType,
session: SessionType?,
userAccountService: SessionServiceType,
dataService: DataServiceType,
keyService: KeyServiceType,
passPhraseService: PassPhraseServiceType,
clientConfigurationService: ClientConfigurationServiceType,
Expand All @@ -34,7 +32,6 @@ class AppContext {
self.encryptedStorage = encryptedStorage
self.session = session
self.userAccountService = userAccountService
self.dataService = dataService
self.keyService = keyService
self.passPhraseService = passPhraseService
self.clientConfigurationService = clientConfigurationService
Expand All @@ -47,12 +44,11 @@ class AppContext {
let encryptedStorage = EncryptedStorage(
storageEncryptionKey: try keyChainService.getStorageEncryptionKey()
)
let dataService = DataService(encryptedStorage: encryptedStorage)
let passPhraseService = PassPhraseService(encryptedStorage: encryptedStorage)
let keyService = KeyService(
storage: encryptedStorage,
passPhraseService: passPhraseService,
currentUserEmail: { dataService.email }
currentUserEmail: { encryptedStorage.activeUser?.email }
)
let clientConfigurationService = ClientConfigurationService(
local: LocalClientConfiguration(
Expand All @@ -64,13 +60,11 @@ class AppContext {
session: nil, // will be set later. But would be nice to already set here, if available
userAccountService: SessionService(
encryptedStorage: encryptedStorage,
dataService: dataService,
googleService: GoogleUserService(
currentUserEmail: dataService.currentUser?.email,
currentUserEmail: encryptedStorage.activeUser?.email,
appDelegateGoogleSessionContainer: UIApplication.shared.delegate as? AppDelegate
)
),
dataService: dataService,
keyService: keyService,
passPhraseService: passPhraseService,
clientConfigurationService: clientConfigurationService,
Expand All @@ -83,7 +77,6 @@ class AppContext {
encryptedStorage: encryptedStorage,
session: session,
userAccountService: userAccountService,
dataService: dataService,
keyService: keyService,
passPhraseService: passPhraseService,
clientConfigurationService: clientConfigurationService,
Expand All @@ -105,8 +98,8 @@ class AppContext {
@MainActor
func getOptionalMailProvider() -> MailProvider? {
guard
let currentUser = dataService.currentUser,
let currentAuthType = dataService.currentAuthType
let currentUser = encryptedStorage.activeUser,
let currentAuthType = currentUser.authType
else { return nil }

return MailProvider(
Expand Down Expand Up @@ -137,12 +130,12 @@ class AppContext {
class AppContextWithUser: AppContext {
let authType: AuthType
let user: User
let userId: UserId

init(
encryptedStorage: EncryptedStorageType,
session: SessionType?,
userAccountService: SessionServiceType,
dataService: DataServiceType,
keyService: KeyServiceType,
passPhraseService: PassPhraseServiceType,
clientConfigurationService: ClientConfigurationServiceType,
Expand All @@ -152,12 +145,12 @@ class AppContextWithUser: AppContext {
) {
self.authType = authType
self.user = user
self.userId = UserId(email: user.email, name: user.name)

super.init(
encryptedStorage: encryptedStorage,
session: session,
userAccountService: userAccountService,
dataService: dataService,
keyService: keyService,
passPhraseService: passPhraseService,
clientConfigurationService: clientConfigurationService,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,18 @@ final class BackupViewController: TableNodeViewController {
}
}

private let appContext: AppContext
private let appContext: AppContextWithUser
private let decorator: BackupViewDecorator
private let service: ServiceActor
private let userId: UserId
private var state: State = .idle { didSet { updateState() } }

init(
appContext: AppContext,
decorator: BackupViewDecorator = BackupViewDecorator(),
userId: UserId
appContext: AppContextWithUser,
decorator: BackupViewDecorator = BackupViewDecorator()
) {
self.appContext = appContext
self.decorator = decorator
self.service = ServiceActor(backupService: appContext.getBackupService())
self.userId = userId
super.init(node: TableNode())
}

Expand Down Expand Up @@ -79,7 +76,7 @@ extension BackupViewController {
private func fetchBackups() {
Task {
do {
let keys = try await service.fetchBackupsFromInbox(for: userId)
let keys = try await service.fetchBackupsFromInbox(for: appContext.userId)
state = keys.isEmpty
? .noBackups
: .backups(keys)
Expand Down Expand Up @@ -135,7 +132,7 @@ extension BackupViewController: ASTableDelegate, ASTableDataSource {
let optionsScreen = BackupOptionsViewController(
appContext: appContext,
backups: state.backups,
userId: userId
userId: appContext.userId
)
navigationController?.pushViewController(optionsScreen, animated: true)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,7 @@ extension SettingsViewController {
viewController = nil
return
}
let userId = UserId(email: appContext.user.email, name: appContext.user.email)
viewController = BackupViewController(appContext: appContext, userId: userId)
viewController = BackupViewController(appContext: appContext)
default:
viewController = nil
}
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 @@ -21,10 +21,9 @@ final class SetupBackupsViewController: TableNodeViewController, PassPhraseSavea
}

private lazy var logger = Logger.nested(in: Self.self, with: .setup)
private let appContext: AppContext
private let appContext: AppContextWithUser
private let decorator: SetupViewDecorator
private let keyMethods: KeyMethodsType
private let user: UserId
private let fetchedEncryptedKeys: [KeyDetails]

private var passPhrase: String?
Expand All @@ -41,17 +40,15 @@ final class SetupBackupsViewController: TableNodeViewController, PassPhraseSavea
}

init(
appContext: AppContext,
appContext: AppContextWithUser,
fetchedEncryptedKeys: [KeyDetails],
decorator: SetupViewDecorator = SetupViewDecorator(),
keyMethods: KeyMethodsType = KeyMethods(),
user: UserId
keyMethods: KeyMethodsType = KeyMethods()
) {
self.appContext = appContext
self.fetchedEncryptedKeys = fetchedEncryptedKeys
self.decorator = decorator
self.keyMethods = keyMethods
self.user = user

super.init(node: TableNode())
}
Expand Down Expand Up @@ -141,7 +138,7 @@ extension SetupBackupsViewController {
keyDetails: Array(matchingKeyBackups),
passPhrase: storageMethod == .persistent ? passPhrase : nil,
source: .backup,
for: user.email
for: appContext.user.email
)
moveToMainFlow()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ class SetupCreatePassphraseAbstractViewController: TableNodeViewController, Pass
Parts.allCases
}

let appContext: AppContext
let appContext: AppContextWithUser
let decorator: SetupViewDecorator
let user: UserId
let fetchedKeysCount: Int

var storageMethod: StorageMethod = .persistent {
Expand All @@ -47,14 +46,12 @@ class SetupCreatePassphraseAbstractViewController: TableNodeViewController, Pass
private lazy var logger = Logger.nested(in: Self.self, with: .setup)

init(
appContext: AppContext,
user: UserId,
appContext: AppContextWithUser,
fetchedKeysCount: Int = 0,
router: GlobalRouterType = GlobalRouter(),
decorator: SetupViewDecorator = SetupViewDecorator()
) {
self.appContext = appContext
self.user = user
self.fetchedKeysCount = fetchedKeysCount
self.decorator = decorator
super.init(node: TableNode())
Expand Down
6 changes: 2 additions & 4 deletions FlowCrypt/Controllers/Setup/SetupEKMKeyViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,13 @@ final class SetupEKMKeyViewController: SetupCreatePassphraseAbstractViewControll
private let keys: [KeyDetails]

init(
appContext: AppContext,
user: UserId,
appContext: AppContextWithUser,
keys: [KeyDetails] = [],
decorator: SetupViewDecorator = SetupViewDecorator()
) {
self.keys = keys
super.init(
appContext: appContext,
user: user,
fetchedKeysCount: keys.count,
decorator: decorator
)
Expand Down Expand Up @@ -93,7 +91,7 @@ extension SetupEKMKeyViewController {
keyDetails: parsedKey.keyDetails,
passPhrase: self.storageMethod == .persistent ? passPhrase : nil,
source: .ekm,
for: self.user.email
for: self.appContext.user.email
)
allFingerprintsOfAllKeys.append(contentsOf: parsedKey.keyDetails.map(\.fingerprints))
}
Expand Down
Loading