Skip to content

Commit f1a7dff

Browse files
authored
0.6.0 testflight feedback crashes (#1371)
1 parent e498f63 commit f1a7dff

27 files changed

Lines changed: 234 additions & 176 deletions

File tree

FlowCrypt/App/AppContext.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class AppContext {
4848
let keyService = KeyService(
4949
storage: encryptedStorage,
5050
passPhraseService: passPhraseService,
51-
currentUserEmail: { encryptedStorage.activeUser?.email }
51+
currentUserEmail: { try? encryptedStorage.activeUser?.email }
5252
)
5353
let clientConfigurationService = ClientConfigurationService(
5454
local: LocalClientConfiguration(
@@ -58,10 +58,10 @@ class AppContext {
5858
return AppContext(
5959
encryptedStorage: encryptedStorage,
6060
session: nil, // will be set later. But would be nice to already set here, if available
61-
userAccountService: SessionService(
61+
userAccountService: try SessionService(
6262
encryptedStorage: encryptedStorage,
6363
googleService: GoogleUserService(
64-
currentUserEmail: encryptedStorage.activeUser?.email,
64+
currentUserEmail: try encryptedStorage.activeUser?.email,
6565
appDelegateGoogleSessionContainer: UIApplication.shared.delegate as? AppDelegate
6666
)
6767
),
@@ -98,7 +98,7 @@ class AppContext {
9898
@MainActor
9999
func getOptionalMailProvider() -> MailProvider? {
100100
guard
101-
let currentUser = encryptedStorage.activeUser,
101+
let currentUser = try? encryptedStorage.activeUser,
102102
let currentAuthType = currentUser.authType
103103
else { return nil }
104104

FlowCrypt/Controllers/Compose/ComposeViewController.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,13 @@ final class ComposeViewController: TableNodeViewController {
9696
filesManager: FilesManagerType = FilesManager(),
9797
photosManager: PhotosManagerType = PhotosManager(),
9898
keyMethods: KeyMethodsType = KeyMethods()
99-
) {
99+
) throws {
100100
self.appContext = appContext
101101
self.email = appContext.user.email
102102
self.notificationCenter = notificationCenter
103103
self.input = input
104104
self.decorator = decorator
105-
let clientConfiguration = appContext.clientConfigurationService.getSaved(for: appContext.user.email)
105+
let clientConfiguration = try appContext.clientConfigurationService.getSaved(for: appContext.user.email)
106106
self.contactsService = contactsService ?? ContactsService(
107107
localContactsProvider: LocalContactsProvider(
108108
encryptedStorage: appContext.encryptedStorage
@@ -944,10 +944,14 @@ extension ComposeViewController {
944944
extension ComposeViewController {
945945
private func searchEmail(with query: String) {
946946
Task {
947-
let localEmails = contactsService.searchLocalContacts(query: query)
948-
let cloudEmails = try? await service.searchContacts(query: query)
949-
let emails = Set([localEmails, cloudEmails].compactMap { $0 }.flatMap { $0 })
950-
updateState(with: .searchEmails(Array(emails)))
947+
do {
948+
let localEmails = try contactsService.searchLocalContacts(query: query)
949+
let cloudEmails = try? await service.searchContacts(query: query)
950+
let emails = Set([localEmails, cloudEmails].compactMap { $0 }.flatMap { $0 })
951+
updateState(with: .searchEmails(Array(emails)))
952+
} catch {
953+
showAlert(message: error.localizedDescription)
954+
}
951955
}
952956
}
953957

FlowCrypt/Controllers/Inbox/InboxViewController.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,13 @@ extension InboxViewController {
331331
}
332332

333333
private func btnComposeTap() {
334-
TapTicFeedback.generate(.light)
335-
let composeVc = ComposeViewController(appContext: appContext)
336-
navigationController?.pushViewController(composeVc, animated: true)
334+
do {
335+
TapTicFeedback.generate(.light)
336+
let composeVc = try ComposeViewController(appContext: appContext)
337+
navigationController?.pushViewController(composeVc, animated: true)
338+
} catch {
339+
showAlert(message: error.localizedDescription)
340+
}
337341
}
338342
}
339343

FlowCrypt/Controllers/MessageList Extension/MsgListViewController.swift

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,13 @@ extension MsgListViewController where Self: UIViewController {
3131

3232
// TODO: uncomment in "sent message from draft" feature
3333
private func openDraft(appContext: AppContextWithUser, with message: Message) {
34-
let controller = ComposeViewController(appContext: appContext)
35-
controller.update(with: message)
36-
navigationController?.pushViewController(controller, animated: true)
34+
do {
35+
let controller = try ComposeViewController(appContext: appContext)
36+
controller.update(with: message)
37+
navigationController?.pushViewController(controller, animated: true)
38+
} catch {
39+
showAlert(message: error.localizedDescription)
40+
}
3741
}
3842

3943
private func openMsg(appContext: AppContextWithUser, with message: Message, path: String) {
@@ -47,13 +51,17 @@ extension MsgListViewController where Self: UIViewController {
4751
}
4852

4953
private func openThread(with thread: MessageThread, appContext: AppContextWithUser) {
50-
let viewController = ThreadDetailsViewController(
51-
appContext: appContext,
52-
thread: thread
53-
) { [weak self] (action, message) in
54-
self?.handleMessageOperation(with: message, action: action)
54+
do {
55+
let viewController = try ThreadDetailsViewController(
56+
appContext: appContext,
57+
thread: thread
58+
) { [weak self] (action, message) in
59+
self?.handleMessageOperation(with: message, action: action)
60+
}
61+
navigationController?.pushViewController(viewController, animated: true)
62+
} catch {
63+
showAlert(message: error.localizedDescription)
5564
}
56-
navigationController?.pushViewController(viewController, animated: true)
5765
}
5866

5967
// MARK: Operation

FlowCrypt/Controllers/Settings/KeySettings/Key List/KeySettingsViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ final class KeySettingsViewController: TableNodeViewController {
2525
init(
2626
appContext: AppContextWithUser,
2727
decorator: KeySettingsViewDecorator = KeySettingsViewDecorator()
28-
) {
28+
) throws {
2929
self.appContext = appContext
3030
self.decorator = decorator
31-
self.isUsingKeyManager = appContext.clientConfigurationService.getSaved(for: appContext.user.email).isUsingKeyManager
31+
self.isUsingKeyManager = try appContext.clientConfigurationService.getSaved(for: appContext.user.email).isUsingKeyManager
3232
super.init(node: TableNode())
3333
}
3434

FlowCrypt/Controllers/Settings/Settings List/SettingsViewController.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ final class SettingsViewController: TableNodeViewController {
5151
init(
5252
appContext: AppContextWithUser,
5353
decorator: SettingsViewDecorator = SettingsViewDecorator()
54-
) {
54+
) throws {
5555
self.appContext = appContext
5656
self.decorator = decorator
57-
self.clientConfiguration = appContext.clientConfigurationService.getSaved(for: appContext.user.email)
57+
self.clientConfiguration = try appContext.clientConfigurationService.getSaved(for: appContext.user.email)
5858
self.rows = SettingsMenuItem.filtered(with: clientConfiguration)
5959
super.init(node: TableNode())
6060
}
@@ -113,7 +113,12 @@ extension SettingsViewController {
113113

114114
switch setting {
115115
case .keys:
116-
viewController = KeySettingsViewController(appContext: appContext)
116+
do {
117+
viewController = try KeySettingsViewController(appContext: appContext)
118+
} catch {
119+
viewController = nil
120+
showAlert(message: error.localizedDescription)
121+
}
117122
case .legal:
118123
viewController = LegalViewController()
119124
case .contacts:

FlowCrypt/Controllers/Setup/SetupGenerateKeyViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ final class SetupGenerateKeyViewController: SetupCreatePassphraseAbstractViewCon
2424
init(
2525
appContext: AppContextWithUser,
2626
decorator: SetupViewDecorator = SetupViewDecorator()
27-
) {
27+
) throws {
2828
self.attester = AttesterApi(
29-
clientConfiguration: appContext.clientConfigurationService.getSaved(for: appContext.user.email)
29+
clientConfiguration: try appContext.clientConfigurationService.getSaved(for: appContext.user.email)
3030
)
3131
self.service = Service(
3232
appContext: appContext,

FlowCrypt/Controllers/Setup/SetupInitialViewController.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ final class SetupInitialViewController: TableNodeViewController {
6363
appContext: AppContextWithUser,
6464
decorator: SetupViewDecorator = SetupViewDecorator(),
6565
emailKeyManagerApi: EmailKeyManagerApiType? = nil
66-
) {
66+
) throws {
6767
self.appContext = appContext
6868
self.service = ServiceActor(backupService: appContext.getBackupService())
6969
self.decorator = decorator
70-
let clientConfiguration = appContext.clientConfigurationService.getSaved(for: appContext.user.email)
70+
let clientConfiguration = try appContext.clientConfigurationService.getSaved(for: appContext.user.email)
7171
self.emailKeyManagerApi = emailKeyManagerApi ?? EmailKeyManagerApi(clientConfiguration: clientConfiguration)
7272
self.clientConfiguration = clientConfiguration
7373
super.init(node: TableNode())
@@ -331,8 +331,12 @@ extension SetupInitialViewController {
331331
}
332332

333333
private func proceedToCreatingNewKey() {
334-
let viewController = SetupGenerateKeyViewController(appContext: appContext)
335-
navigationController?.pushViewController(viewController, animated: true)
334+
do {
335+
let viewController = try SetupGenerateKeyViewController(appContext: appContext)
336+
navigationController?.pushViewController(viewController, animated: true)
337+
} catch {
338+
showAlert(message: error.localizedDescription)
339+
}
336340
}
337341

338342
private func proceedToSetupWithEKMKeys(keys: [KeyDetails]) {

FlowCrypt/Controllers/SideMenu/Menu/MyMenuViewController.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,14 @@ final class MyMenuViewController: ViewController {
5050
private var folders: [FolderViewModel] = []
5151
private var serviceItems: [FolderViewModel] { FolderViewModel.menuItems }
5252
private var accounts: [User] {
53-
appContext.encryptedStorage.getAllUsers()
54-
.filter { $0.email != appContext.user.email }
55-
.filter { appContext.encryptedStorage.doesAnyKeypairExist(for: $0.email) }
53+
do {
54+
return try appContext.encryptedStorage.getAllUsers()
55+
.filter { $0.email != appContext.user.email }
56+
.filter { try appContext.encryptedStorage.doesAnyKeypairExist(for: $0.email) }
57+
} catch {
58+
showAlert(message: error.localizedDescription)
59+
return []
60+
}
5661
}
5762

5863
private let tableNode: ASTableNode
@@ -294,7 +299,11 @@ extension MyMenuViewController {
294299
sideMenuController()?.sideMenu?.hideSideMenu()
295300
return
296301
}
297-
sideMenuController()?.setContentViewController(SettingsViewController(appContext: appContext))
302+
do {
303+
sideMenuController()?.setContentViewController(try SettingsViewController(appContext: appContext))
304+
} catch {
305+
showAlert(message: error.localizedDescription)
306+
}
298307
case .logOut:
299308
do {
300309
try appContext.globalRouter.signOut(appContext: appContext)

FlowCrypt/Controllers/Threads/ThreadDetailsViewController.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ final class ThreadDetailsViewController: TableNodeViewController {
5050
messageService: MessageService? = nil,
5151
thread: MessageThread,
5252
completion: @escaping MessageActionCompletion
53-
) {
53+
) throws {
5454
self.appContext = appContext
55-
let clientConfiguration = appContext.clientConfigurationService.getSaved(for: appContext.user.email)
55+
let clientConfiguration = try appContext.clientConfigurationService.getSaved(for: appContext.user.email)
5656
self.messageService = messageService ?? MessageService(
5757
contactsService: ContactsService(
5858
localContactsProvider: LocalContactsProvider(
@@ -259,10 +259,14 @@ extension ThreadDetailsViewController {
259259
}()
260260

261261
let composeInput = ComposeMessageInput(type: composeType)
262-
navigationController?.pushViewController(
263-
ComposeViewController(appContext: appContext, input: composeInput),
264-
animated: true
265-
)
262+
do {
263+
navigationController?.pushViewController(
264+
try ComposeViewController(appContext: appContext, input: composeInput),
265+
animated: true
266+
)
267+
} catch {
268+
showAlert(message: error.localizedDescription)
269+
}
266270
}
267271

268272
private func markAsRead(at index: Int) {

0 commit comments

Comments
 (0)