Skip to content

Commit 8db0ab8

Browse files
committed
Fix broken User.current fetch and installation
1 parent b480902 commit 8db0ab8

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

Sources/ParseSwift/Objects/ParseUser.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ extension ParseUser {
8585
internal static func deleteCurrentContainerFromKeychain() {
8686
try? ParseStorage.shared.delete(valueFor: ParseStorage.Keys.currentUser)
8787
try? KeychainStore.shared.delete(valueFor: ParseStorage.Keys.currentUser)
88-
try? ParseStorage.shared.delete(valueFor: ParseStorage.Keys.currentInstallation)
89-
try? KeychainStore.shared.delete(valueFor: ParseStorage.Keys.currentInstallation)
88+
BaseParseUser.currentUserContainer = nil
9089
}
9190

9291
/**
@@ -202,8 +201,9 @@ extension ParseUser {
202201
*/
203202
public static func logout(options: API.Options = [], callbackQueue: DispatchQueue = .main,
204203
completion: @escaping (ParseError?) -> Void) {
205-
logoutCommand().executeAsync(options: options) { result in
206-
callbackQueue.async {
204+
callbackQueue.async {
205+
logoutCommand().executeAsync(options: options) { result in
206+
207207
switch result {
208208

209209
case .success:
@@ -230,7 +230,7 @@ extension ParseUser {
230230
}
231231
//Always let user logout locally, no matter the error.
232232
deleteCurrentContainerFromKeychain()
233-
currentUserContainer = nil
233+
BaseParseInstallation.deleteCurrentContainerFromKeychain()
234234
guard let error = parseError else {
235235
return serverResponse
236236
}
@@ -522,6 +522,7 @@ extension ParseUser {
522522
callbackQueue.async {
523523
do {
524524
try Self.updateKeychainIfNeeded([foundResult])
525+
completion(.success(foundResult))
525526
} catch let error {
526527
let returnError: ParseError!
527528
if let parseError = error as? ParseError {
@@ -532,9 +533,10 @@ extension ParseUser {
532533
completion(.failure(returnError))
533534
}
534535
}
535-
}
536-
callbackQueue.async {
537-
completion(result)
536+
} else {
537+
callbackQueue.async {
538+
completion(result)
539+
}
538540
}
539541
}
540542
} catch let error as ParseError {

Tests/ParseSwiftTests/ParseUserTests.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -938,12 +938,10 @@ class ParseUserTests: XCTestCase { // swiftlint:disable:this type_body_length
938938
try User.logout()
939939
if let userFromKeychain = BaseParseUser.current {
940940
XCTFail("\(userFromKeychain) wasn't deleted from Keychain during logout")
941-
return
942941
}
943942

944943
if let installationFromKeychain = BaseParseInstallation.current {
945944
XCTFail("\(installationFromKeychain) wasn't deleted from Keychain during logout")
946-
return
947945
}
948946
} catch {
949947
XCTFail(error.localizedDescription)
@@ -959,6 +957,10 @@ class ParseUserTests: XCTestCase { // swiftlint:disable:this type_body_length
959957
if let userFromKeychain = BaseParseUser.current {
960958
XCTFail("\(userFromKeychain) wasn't deleted from Keychain during logout")
961959
}
960+
961+
if let installationFromKeychain = BaseParseInstallation.current {
962+
XCTFail("\(installationFromKeychain) wasn't deleted from Keychain during logout")
963+
}
962964
expectation1.fulfill()
963965
return
964966
}
@@ -969,6 +971,9 @@ class ParseUserTests: XCTestCase { // swiftlint:disable:this type_body_length
969971
}
970972

971973
func testLogoutAsyncMainQueue() {
974+
testLogin()
975+
MockURLProtocol.removeAll()
976+
972977
let logoutResponse = NoBody()
973978

974979
MockURLProtocol.mockRequests { _ in

0 commit comments

Comments
 (0)