Skip to content
Merged
34 changes: 27 additions & 7 deletions FlowCrypt.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,14 @@
21FEE26626FDD91A00E3783F /* ComposeMessageAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21FEE26526FDD91A00E3783F /* ComposeMessageAttachment.swift */; };
2C08F6BE273FA7B900EE1610 /* Version5SchemaMigration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C08F6BD273FA7B900EE1610 /* Version5SchemaMigration.swift */; };
2C124DB42728809100A2EFA6 /* ApiCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C124DB32728809100A2EFA6 /* ApiCall.swift */; };
2C141B2C274572D50038A3F8 /* Recipient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C141B2B274572D50038A3F8 /* Recipient.swift */; };
2C141B2F274578C20038A3F8 /* KeyInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C141B2E274578C20038A3F8 /* KeyInfo.swift */; };
2C2A3B4B2719EE6100B7F27B /* KeyServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C2A3B4A2719EE6100B7F27B /* KeyServiceTests.swift */; };
2C2A3B4D2719EF7300B7F27B /* PassPhraseServiceMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C2A3B4C2719EF7300B7F27B /* PassPhraseServiceMock.swift */; };
2C595764273AC47400C7C055 /* RealmExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C595763273AC47400C7C055 /* RealmExtension.swift */; };
2C60AB0C272564D40040D7F2 /* InvalidStorageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C60AB0B272564D40040D7F2 /* InvalidStorageViewController.swift */; };
2CC12C3F273571B80021DDDF /* AttachmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CC12C3E273571B80021DDDF /* AttachmentManager.swift */; };
2CC50FAF27440B2C0051629A /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CC50FAE27440B2C0051629A /* Session.swift */; };
2CC50FB12744167A0051629A /* Folder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CC50FB02744167A0051629A /* Folder.swift */; };
32DCA00224982EDA88D69C6E /* AppErr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCA4B11D4531B3B04D01D1 /* AppErr.swift */; };
32DCA04CA0DAB79C39514782 /* CoreTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCAC732B988D9704658812 /* CoreTypes.swift */; };
32DCA1414EEA727B86C337D5 /* Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCA0C3D34A69851A238E87 /* Core.swift */; };
Expand Down Expand Up @@ -445,11 +448,14 @@
21FEE26526FDD91A00E3783F /* ComposeMessageAttachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeMessageAttachment.swift; sourceTree = "<group>"; };
2C08F6BD273FA7B900EE1610 /* Version5SchemaMigration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Version5SchemaMigration.swift; sourceTree = "<group>"; };
2C124DB32728809100A2EFA6 /* ApiCall.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiCall.swift; sourceTree = "<group>"; };
2C141B2B274572D50038A3F8 /* Recipient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Recipient.swift; sourceTree = "<group>"; };
2C141B2E274578C20038A3F8 /* KeyInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyInfo.swift; sourceTree = "<group>"; };
2C2A3B4A2719EE6100B7F27B /* KeyServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyServiceTests.swift; sourceTree = "<group>"; };
2C2A3B4C2719EF7300B7F27B /* PassPhraseServiceMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassPhraseServiceMock.swift; sourceTree = "<group>"; };
2C595763273AC47400C7C055 /* RealmExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RealmExtension.swift; sourceTree = "<group>"; };
2C60AB0B272564D40040D7F2 /* InvalidStorageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvalidStorageViewController.swift; sourceTree = "<group>"; };
2CC12C3E273571B80021DDDF /* AttachmentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentManager.swift; sourceTree = "<group>"; };
2CC50FAE27440B2C0051629A /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = "<group>"; };
2CC50FB02744167A0051629A /* Folder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Folder.swift; sourceTree = "<group>"; };
32DCA058652FD4616FB04FB6 /* SequenceExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SequenceExtensions.swift; sourceTree = "<group>"; };
32DCA0C3D34A69851A238E87 /* Core.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Core.swift; sourceTree = "<group>"; };
32DCA0E63F2F0473D0A8EDB0 /* StringExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -836,11 +842,10 @@
04B4728A1ECE29D200B8266F /* Models */ = {
isa = PBXGroup;
children = (
5180CB9227357B67001FC7EF /* RawClientConfiguration.swift */,
2C141B2D274572E40038A3F8 /* Common */,
9F9AAFFC2383E216000A00F1 /* Document.swift */,
9FD22A20230FF9BC005067A6 /* Inbox Models */,
9F1B49E02624E19D00420472 /* Realm Models */,
9F0C3C132316E69300299985 /* User.swift */,
9F9AAFFC2383E216000A00F1 /* Document.swift */,
);
path = Models;
sourceTree = "<group>";
Expand Down Expand Up @@ -942,6 +947,19 @@
path = Data;
sourceTree = "<group>";
};
2C141B2D274572E40038A3F8 /* Common */ = {
isa = PBXGroup;
children = (
2CC50FB02744167A0051629A /* Folder.swift */,
2C141B2E274578C20038A3F8 /* KeyInfo.swift */,
5180CB9227357B67001FC7EF /* RawClientConfiguration.swift */,
2C141B2B274572D50038A3F8 /* Recipient.swift */,
2CC50FAE27440B2C0051629A /* Session.swift */,
9F0C3C132316E69300299985 /* User.swift */,
);
path = Common;
sourceTree = "<group>";
};
2C2A3B492719EE4D00B7F27B /* Key Services */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -994,7 +1012,6 @@
D2D27B78248A8694007346FA /* BigIntExtension.swift */,
9F2F217226B3269D0044E144 /* CombineExtensions.swift */,
51E4F0B427348E310017DABB /* Error+Extension.swift */,
2C595763273AC47400C7C055 /* RealmExtension.swift */,
51B0C7702729861C00124663 /* String+Extension.swift */,
518389C92726D8F700131B2C /* UIApplicationExtension.swift */,
9F31AB9D232BF2A600CF87EA /* UIColorExtension.swift */,
Expand Down Expand Up @@ -2551,6 +2568,7 @@
9F5C2A99257E94E900DE9B4B /* Gmail+MessageOperations.swift in Sources */,
9F31AB932329950800CF87EA /* Imap+Backup.swift in Sources */,
9F589F15238C8249007FD759 /* KeyChainService.swift in Sources */,
2CC50FB12744167A0051629A /* Folder.swift in Sources */,
9F2F217326B3269D0044E144 /* CombineExtensions.swift in Sources */,
D2F41373243CC7990066AFB5 /* UserRealmObject.swift in Sources */,
F80E95362720B6640093F243 /* DraftsListProvider.swift in Sources */,
Expand All @@ -2559,7 +2577,6 @@
21489B80267CC39E00BDE4AC /* ClientConfigurationService.swift in Sources */,
D28655932423B4EE0066F52E /* MyMenuViewDecorator.swift in Sources */,
04B4728D1ECE29D200B8266F /* KeyInfoRealmObject.swift in Sources */,
2C595764273AC47400C7C055 /* RealmExtension.swift in Sources */,
04B4728D1ECE29D200B8266F /* KeyInfoRealmObject.swift in Sources */,
9F3EF32F23B172D300FA0CEF /* SearchViewController.swift in Sources */,
F191F621272511790053833E /* BlurViewController.swift in Sources */,
Expand All @@ -2570,6 +2587,7 @@
9FE1B3802563F85400D6D086 /* MessagesListProvider.swift in Sources */,
32DCA1B95DDC04D671F662F8 /* URLSessionExtension.swift in Sources */,
214A023A26A3029700C24066 /* EmailKeyManagerApi.swift in Sources */,
2C141B2F274578C20038A3F8 /* KeyInfo.swift in Sources */,
D2E26F7424F2705B00612AF1 /* ContactDetailDecorator.swift in Sources */,
2C60AB0C272564D40040D7F2 /* InvalidStorageViewController.swift in Sources */,
2C124DB42728809100A2EFA6 /* ApiCall.swift in Sources */,
Expand Down Expand Up @@ -2616,6 +2634,7 @@
9F5C2A92257E94DF00DE9B4B /* Imap+MessageOperations.swift in Sources */,
D27B911F24EFE828002DF0A1 /* RecipientWithSortedPubKeys.swift in Sources */,
32DCA1414EEA727B86C337D5 /* Core.swift in Sources */,
2CC50FAF27440B2C0051629A /* Session.swift in Sources */,
9FB22CF725715DC50026EE64 /* KeyServiceErrorHandler.swift in Sources */,
9F0C3C1A231819C500299985 /* MessageKindProviderType.swift in Sources */,
21C7DF09266C0D8F00C44800 /* EnterpriseServerApi.swift in Sources */,
Expand All @@ -2634,6 +2653,7 @@
D2891AC224C59EFA008918E3 /* KeyService.swift in Sources */,
D269E02724103A20000495C3 /* ComposeViewControllerInput.swift in Sources */,
9FAFD75D2714A06400321FA4 /* InboxProviders.swift in Sources */,
2C141B2C274572D50038A3F8 /* Recipient.swift in Sources */,
9F0C3C142316E69300299985 /* User.swift in Sources */,
2155E9EF26E3628C008FB033 /* Refreshable.swift in Sources */,
9F3EF32523B15C1400FA0CEF /* ImapHelper.swift in Sources */,
Expand Down
19 changes: 11 additions & 8 deletions FlowCrypt/Controllers/SetupImap/SetupImapViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ final class SetupImapViewController: TableNodeViewController {
private let decorator: SetupImapViewDecorator
private let sessionCredentials: SessionCredentialsProvider
private let imap: Imap
private var user = UserRealmObject.empty
private var user = User.empty

init(
globalRouter: GlobalRouterType = GlobalRouter(),
Expand Down Expand Up @@ -360,7 +360,7 @@ extension SetupImapViewController {

private func updateForEmailChanges(with text: String?) {
guard let email = text, email.isNotEmpty else {
user = UserRealmObject.empty
user = User.empty
node.reloadData()
return
}
Expand Down Expand Up @@ -412,7 +412,8 @@ extension SetupImapViewController {

switch settings {
case let .failure(.notFound(defaultPort)):
user.imap?.port = user.imap?.port ?? defaultPort
let port = user.imap?.port ?? defaultPort
user.imap?.port = port
case let .success(imapSetting):
updateUser(imap: imapSetting)
}
Expand All @@ -427,7 +428,8 @@ extension SetupImapViewController {

switch settings {
case let .failure(.notFound(defaultPort)):
user.smtp?.port = user.smtp?.port ?? defaultPort
let port = user.smtp?.port ?? defaultPort
user.smtp?.port = port
case let .success(imapSetting):
updateUser(smtp: imapSetting)
}
Expand Down Expand Up @@ -500,8 +502,9 @@ extension SetupImapViewController {
private func checkImapSession() {
showSpinner()

guard let imapSessionToCheck = IMAPSession(userObject: user),
let smtpSession = SMTPSession(userObject: user)
guard
let imapSessionToCheck = IMAPSession(user: user),
let smtpSession = SMTPSession(user: user)
else {
fatalError("Should be able to create session at this momment")
}
Expand Down Expand Up @@ -529,8 +532,8 @@ extension SetupImapViewController {
globalRouter.signIn(with: .other(.session(user)))
}

private func checkCurrentUser() -> Result<UserRealmObject, UserError> {
guard user != UserRealmObject.empty, user.email != UserRealmObject.empty.email else {
private func checkCurrentUser() -> Result<User, UserError> {
guard user != User.empty, user.email != User.empty.email else {
return .failure(.empty)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ struct SetupImapViewDecorator {
)
}

func stringFor(user: UserRealmObject, for section: SetupImapViewController.Section) -> NSAttributedString? {
func stringFor(user: User, for section: SetupImapViewController.Section) -> NSAttributedString? {
switch section {
case let .account(part):
switch part {
Expand All @@ -165,7 +165,7 @@ struct SetupImapViewDecorator {
case let .imap(part):
switch part {
case .port:
guard let port = user.imap?.port, port != UserRealmObject.empty.imap?.port else {
guard let port = user.imap?.port, port != User.empty.imap?.port else {
return nil
}
return "\(port)".attributed()
Expand All @@ -185,7 +185,7 @@ struct SetupImapViewDecorator {
case let .smtp(part):
switch part {
case .port:
guard let port = user.smtp?.port, port != UserRealmObject.empty.smtp?.port else {
guard let port = user.smtp?.port, port != User.empty.smtp?.port else {
return nil
}
return "\(port)".attributed()
Expand Down
4 changes: 2 additions & 2 deletions FlowCrypt/Core/Models/PrvKeyInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ struct PrvKeyInfo: Encodable, Equatable {
}

extension PrvKeyInfo {
init(keyInfo: KeyInfoRealmObject, passphrase: String?) {
init(keyInfo: KeyInfo, passphrase: String?) {
self.private = keyInfo.private
self.longid = keyInfo.primaryLongid
self.passphrase = keyInfo.passphrase ?? passphrase
self.fingerprints = Array(keyInfo.allFingerprints)
self.fingerprints = keyInfo.allFingerprints
}

func copy(with passphrase: String) -> PrvKeyInfo {
Expand Down
51 changes: 0 additions & 51 deletions FlowCrypt/Extensions/RealmExtension.swift

This file was deleted.

22 changes: 8 additions & 14 deletions FlowCrypt/Functionality/DataManager/DataService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ protocol ImapSessionProvider {

enum SessionType: CustomStringConvertible {
case google(_ email: String, name: String, token: String)
case session(_ userObject: UserRealmObject)
case session(_ user: User)

var description: String {
switch self {
Expand Down Expand Up @@ -66,10 +66,6 @@ final class DataService {

// MARK: - DataServiceType
extension DataService: DataServiceType {
var storage: Realm {
encryptedStorage.storage
}

var isSetupFinished: Bool {
isLoggedIn && doesAnyKeyExistForCurrentUser
}
Expand All @@ -90,21 +86,20 @@ extension DataService: DataServiceType {
}

// helper to get current user object from DB
private var currentUserObject: UserRealmObject? {
private var activeUser: User? {
encryptedStorage.activeUser
}

var users: [User] {
encryptedStorage.getAllUsers()
.map(User.init)
}

var currentUser: User? {
users.first(where: \.isActive)
encryptedStorage.getAllUsers().first(where: \.isActive)
}

var currentAuthType: AuthType? {
currentUserObject?.authType
activeUser?.authType
}

var token: String? {
Expand All @@ -120,7 +115,6 @@ extension DataService: DataServiceType {
encryptedStorage.getAllUsers()
.filter { encryptedStorage.doesAnyKeyExist(for: $0.email) }
.filter { $0.email != currentUser?.email }
.map(User.init)
}
}

Expand All @@ -135,12 +129,12 @@ extension DataService: DBMigration {
// MARK: - SessionProvider
extension DataService: ImapSessionProvider {
func imapSession() -> IMAPSession? {
guard let user = currentUserObject else {
guard let user = activeUser else {
assertionFailure("Can't get IMAP Session without user data")
return nil
}

guard let imapSession = IMAPSession(userObject: user) else {
guard let imapSession = IMAPSession(user: user) else {
assertionFailure("couldn't create IMAP Session with this parameters")
return nil
}
Expand All @@ -149,12 +143,12 @@ extension DataService: ImapSessionProvider {
}

func smtpSession() -> SMTPSession? {
guard let user = currentUserObject else {
guard let user = activeUser else {
assertionFailure("Can't get SMTP Session without user data")
return nil
}

guard let smtpSession = SMTPSession(userObject: user) else {
guard let smtpSession = SMTPSession(user: user) else {
assertionFailure("couldn't create SMTP Session with this parameters")
return nil
}
Expand Down
Loading