diff --git a/Docs/XXMessengerClient.md b/Docs/XXMessengerClient.md index 971aefd97c91f7b210ea1bdeb456a257cb89ae71..efbb9de768ea89616473b3df51837785ee880dd4 100644 --- a/Docs/XXMessengerClient.md +++ b/Docs/XXMessengerClient.md @@ -148,7 +148,11 @@ let result = try messenger.restoreBackup( backupPassphrase: "backup-passphrase" ) -// handle restoration result +// handle restoration result: +let restoredUsername = result.restoredParams.username +let facts = try messenger.ud.tryGet().getFacts() +let restoredEmail = facts.get(.email)?.value +let restoredPhone = facts.get(.phone)?.value ``` If no error was thrown during restoration, the `Messenger` is already loaded, started, connected, and logged in. \ No newline at end of file diff --git a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift index d1872840470448de3dccfb2e9af2b2f4ad135324..66d7df2f0cb2ffc960270caad1aecf6c2da1100a 100644 --- a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift +++ b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift @@ -132,11 +132,12 @@ public let restoreReducer = Reducer<RestoreState, RestoreAction, RestoreEnvironm backupData: backupData, backupPassphrase: backupPassphrase ) + let facts = try env.messenger.ud.tryGet().getFacts() try env.db().saveContact(Contact( id: try env.messenger.e2e.tryGet().getContact().getId(), username: result.restoredParams.username, - email: result.restoredParams.email, - phone: result.restoredParams.phone, + email: facts.get(.email)?.value, + phone: facts.get(.phone)?.value, createdAt: env.now() )) return .success(.finished) diff --git a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift index 4e55f78bf14a04fe0aea7885f2f86d3783e6b04c..9b0a7b87928e8568acf78c8f63077920a8c9fd2e 100644 --- a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift +++ b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift @@ -79,17 +79,18 @@ final class RestoreFeatureTests: XCTestCase { func testRestore() { let backupData = "backup-data".data(using: .utf8)! let backupPassphrase = "backup-passphrase" + let restoredFacts = [ + Fact(type: .email, value: "restored-email"), + Fact(type: .phone, value: "restored-phone"), + ] let restoreResult = MessengerRestoreBackup.Result( - restoredParams: BackupParams.init( - username: "restored-username", - email: "restored-email", - phone: "restored-phone" - ), + restoredParams: BackupParams(username: "restored-username"), restoredContacts: [] ) let now = Date() let contactId = "contact-id".data(using: .utf8)! + var udFacts: [Fact] = [] var didRestoreWithData: [Data] = [] var didRestoreWithPassphrase: [String] = [] var didSaveContact: [XXModels.Contact] = [] @@ -108,6 +109,7 @@ final class RestoreFeatureTests: XCTestCase { store.environment.messenger.restoreBackup.run = { data, passphrase in didRestoreWithData.append(data) didRestoreWithPassphrase.append(passphrase) + udFacts = restoredFacts return restoreResult } store.environment.messenger.e2e.get = { @@ -119,6 +121,11 @@ final class RestoreFeatureTests: XCTestCase { } return e2e } + store.environment.messenger.ud.get = { + var ud: UserDiscovery = .unimplemented + ud.getFacts.run = { udFacts } + return ud + } store.environment.db.run = { var db: Database = .unimplemented db.saveContact.run = { contact in @@ -141,8 +148,8 @@ final class RestoreFeatureTests: XCTestCase { XCTAssertNoDifference(didSaveContact, [Contact( id: contactId, username: restoreResult.restoredParams.username, - email: restoreResult.restoredParams.email, - phone: restoreResult.restoredParams.phone, + email: restoredFacts.get(.email)?.value, + phone: restoredFacts.get(.phone)?.value, createdAt: now )]) diff --git a/Sources/XXMessengerClient/Utils/BackupParams.swift b/Sources/XXMessengerClient/Utils/BackupParams.swift index c3bd8fc0f8e566348bb1d731bf8606c2f8bea5ce..8bf39a5189049f234ec9ab991c63ecdf59b0f1ce 100644 --- a/Sources/XXMessengerClient/Utils/BackupParams.swift +++ b/Sources/XXMessengerClient/Utils/BackupParams.swift @@ -2,18 +2,12 @@ import Foundation public struct BackupParams: Equatable { public init( - username: String, - email: String?, - phone: String? + username: String ) { self.username = username - self.email = email - self.phone = phone } public var username: String - public var email: String? - public var phone: String? } extension BackupParams: Codable { diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerBackupParamsTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerBackupParamsTests.swift index e0af7129f1f82f9c5fbce7b67d2ea4c3ff05060e..b65a34b9fbac97ab2a3fc629a7bce09552ae39b1 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerBackupParamsTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerBackupParamsTests.swift @@ -15,16 +15,11 @@ final class MessengerBackupParamsTests: XCTestCase { return backup } let backup: MessengerBackupParams = .live(env) - let params = BackupParams( - username: "test-username", - email: "test-email", - phone: "test-phone" - ) - try backup(params) + try backup(.stub) XCTAssertNoDifference(didAddJSON, [ - String(data: try params.encode(), encoding: .utf8)! + String(data: try BackupParams.stub.encode(), encoding: .utf8)! ]) } @@ -32,9 +27,8 @@ final class MessengerBackupParamsTests: XCTestCase { var env: MessengerEnvironment = .unimplemented env.backup.get = { nil } let backup: MessengerBackupParams = .live(env) - let params = BackupParams(username: "test", email: nil, phone: nil) - XCTAssertThrowsError(try backup(params)) { error in + XCTAssertThrowsError(try backup(.stub)) { error in XCTAssertNoDifference( error as NSError, MessengerBackupParams.Error.notRunning as NSError @@ -50,9 +44,8 @@ final class MessengerBackupParamsTests: XCTestCase { return backup } let backup: MessengerBackupParams = .live(env) - let params = BackupParams(username: "test", email: nil, phone: nil) - XCTAssertThrowsError(try backup(params)) { error in + XCTAssertThrowsError(try backup(.stub)) { error in XCTAssertNoDifference( error as NSError, MessengerBackupParams.Error.notRunning as NSError diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift index 67663feebde5554f9810dc36260bd2055c15a66f..672adc37550225bdab6a9ea7953c2b5a0b86b248 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift @@ -10,11 +10,7 @@ final class MessengerRestoreBackupTests: XCTestCase { let ndfData = "ndf-data".data(using: .utf8)! let password = "password".data(using: .utf8)! let backupContacts: [Data] = (1...3).map { "contact-\($0)" }.map { $0.data(using: .utf8)! } - let backupParams = BackupParams( - username: "backup-username", - email: "backup-email", - phone: "backup-phone" - ) + let backupParams = BackupParams.stub let backupReport = BackupReport( restoredContacts: backupContacts, params: String(data: try! JSONEncoder().encode(backupParams), encoding: .utf8)! diff --git a/Tests/XXMessengerClientTests/TestHelpers/TestDoubles.swift b/Tests/XXMessengerClientTests/TestHelpers/TestDoubles.swift index 4d57e29363d3f22bdbb836622d7bfa92b014b683..c9a90bde352a9da4ac0c359c26fed8e1a89d9f8f 100644 --- a/Tests/XXMessengerClientTests/TestHelpers/TestDoubles.swift +++ b/Tests/XXMessengerClientTests/TestHelpers/TestDoubles.swift @@ -20,8 +20,6 @@ extension Message { extension BackupParams { static let stub = BackupParams( - username: "stub-username", - email: "stub-email", - phone: "stub-phone" + username: "stub-username" ) }