diff --git a/ios/Shared/RocketChat/MMKV.swift b/ios/Shared/RocketChat/MMKV.swift index 057e9113f..69a1eb669 100644 --- a/ios/Shared/RocketChat/MMKV.swift +++ b/ios/Shared/RocketChat/MMKV.swift @@ -14,25 +14,25 @@ extension MMKV { return mmkv } - func userToken(for userId: String) -> String { + func userToken(for userId: String) -> String? { guard let userToken = string(forKey: "reactnativemeteor_usertoken-\(userId)") else { - fatalError("userToken is nil for userId \(userId)") + return nil } return userToken } - func userId(for server: String) -> String { + func userId(for server: String) -> String? { guard let userId = string(forKey: "reactnativemeteor_usertoken-\(server)") else { - fatalError("userId is nil for server \(server)") + return nil } return userId } - func privateKey(for server: String) -> String { + func privateKey(for server: String) -> String? { guard let privateKey = string(forKey: "\(server)-RC_E2E_PRIVATE_KEY") else { - fatalError("privateKey is nil for server \(server)") + return nil } return privateKey diff --git a/ios/Shared/RocketChat/Storage.swift b/ios/Shared/RocketChat/Storage.swift index a2e8a4e03..019c56419 100644 --- a/ios/Shared/RocketChat/Storage.swift +++ b/ios/Shared/RocketChat/Storage.swift @@ -1,23 +1,24 @@ import Foundation struct Credentials { - let userId: String - let userToken: String + let userId: String + let userToken: String } final class Storage { - static let shared = Storage() - - private let mmkv = MMKV.build() - - func getCredentials(server: String) -> Credentials { - let userId = mmkv.userId(for: server) - let userToken = mmkv.userToken(for: userId) - - return .init(userId: userId, userToken: userToken) - } - - func getPrivateKey(server: String) -> String { - mmkv.privateKey(for: server) - } + static let shared = Storage() + + private let mmkv = MMKV.build() + + func getCredentials(server: String) -> Credentials? { + guard let userId = mmkv.userId(for: server), let userToken = mmkv.userToken(for: userId) else { + return nil + } + + return .init(userId: userId, userToken: userToken) + } + + func getPrivateKey(server: String) -> String? { + mmkv.privateKey(for: server) + } } diff --git a/ios/Watch/WatchConnection.swift b/ios/Watch/WatchConnection.swift index 4a95cc58b..072287d24 100644 --- a/ios/Watch/WatchConnection.swift +++ b/ios/Watch/WatchConnection.swift @@ -41,8 +41,10 @@ final class WatchConnection: NSObject { let serversQuery = database.query(raw: "select * from servers") as [DBServer] let servers = serversQuery.compactMap { item -> WatchMessage.Server? in - let userId = mmkv.userId(for: item.identifier) - let userToken = mmkv.userToken(for: userId) + guard let userId = mmkv.userId(for: item.identifier), let userToken = mmkv.userToken(for: userId) else { + return nil + } + let clientSSL = mmkv.clientSSL(for: item.url) let usersQuery = database.query(raw: "select * from users where token == ? limit 1", [userToken]) as [DBUser]