Skip to content
Snippets Groups Projects
Commit 5e79cdcb authored by Bruno Muniz's avatar Bruno Muniz :apple:
Browse files

Merge branch 'fix/resend-code' into 'dev'

Fix resend code missing implementation for onboarding and profile

See merge request elixxir/client-ios!89
parents 4d0518ad bff1322b
Branches
Tags
1 merge request!89Fix resend code missing implementation for onboarding and profile
Showing
with 57 additions and 19 deletions
...@@ -812,7 +812,7 @@ ...@@ -812,7 +812,7 @@
"onboarding.emailConfirmation.title" "onboarding.emailConfirmation.title"
= "Please enter the #code# sent to your email."; = "Please enter the #code# sent to your email.";
"onboarding.emailConfirmation.subtitle" "onboarding.emailConfirmation.subtitle"
= "We sent a verification code to %@."; = "We sent a verification code to %@";
"onboarding.emailConfirmation.input" "onboarding.emailConfirmation.input"
= "Code"; = "Code";
"onboarding.emailConfirmation.next" "onboarding.emailConfirmation.next"
...@@ -846,7 +846,7 @@ ...@@ -846,7 +846,7 @@
"onboarding.phoneConfirmation.title" "onboarding.phoneConfirmation.title"
= "Please enter the #code# sent to your phone through #SMS#."; = "Please enter the #code# sent to your phone through #SMS#.";
"onboarding.phoneConfirmation.subtitle" "onboarding.phoneConfirmation.subtitle"
= "We sent a verification code to %@."; = "We sent a verification code to %@";
"onboarding.phoneConfirmation.input" "onboarding.phoneConfirmation.input"
= "Code"; = "Code";
"onboarding.phoneConfirmation.next" "onboarding.phoneConfirmation.next"
......
...@@ -731,7 +731,7 @@ public enum Localized { ...@@ -731,7 +731,7 @@ public enum Localized {
public static func resend(_ p1: Any) -> String { public static func resend(_ p1: Any) -> String {
return Localized.tr("Localizable", "onboarding.emailConfirmation.resend", String(describing: p1)) return Localized.tr("Localizable", "onboarding.emailConfirmation.resend", String(describing: p1))
} }
/// We sent a verification code to %@. /// We sent a verification code to %@
public static func subtitle(_ p1: Any) -> String { public static func subtitle(_ p1: Any) -> String {
return Localized.tr("Localizable", "onboarding.emailConfirmation.subtitle", String(describing: p1)) return Localized.tr("Localizable", "onboarding.emailConfirmation.subtitle", String(describing: p1))
} }
...@@ -771,7 +771,7 @@ public enum Localized { ...@@ -771,7 +771,7 @@ public enum Localized {
public static func resend(_ p1: Any) -> String { public static func resend(_ p1: Any) -> String {
return Localized.tr("Localizable", "onboarding.phoneConfirmation.resend", String(describing: p1)) return Localized.tr("Localizable", "onboarding.phoneConfirmation.resend", String(describing: p1))
} }
/// We sent a verification code to %@. /// We sent a verification code to %@
public static func subtitle(_ p1: Any) -> String { public static func subtitle(_ p1: Any) -> String {
return Localized.tr("Localizable", "onboarding.phoneConfirmation.subtitle", String(describing: p1)) return Localized.tr("Localizable", "onboarding.phoneConfirmation.subtitle", String(describing: p1))
} }
......
...@@ -6,6 +6,7 @@ import AppResources ...@@ -6,6 +6,7 @@ import AppResources
import Dependencies import Dependencies
import AppNavigation import AppNavigation
import DrawerFeature import DrawerFeature
import CountryListFeature
import ScrollViewController import ScrollViewController
public final class OnboardingCodeController: UIViewController { public final class OnboardingCodeController: UIViewController {
...@@ -53,7 +54,9 @@ public final class OnboardingCodeController: UIViewController { ...@@ -53,7 +54,9 @@ public final class OnboardingCodeController: UIViewController {
screenView.setupSubtitle( screenView.setupSubtitle(
isEmail ? isEmail ?
Localized.Onboarding.EmailConfirmation.subtitle(content) : Localized.Onboarding.EmailConfirmation.subtitle(content) :
Localized.Onboarding.PhoneConfirmation.subtitle(content) Localized.Onboarding.PhoneConfirmation.subtitle(
"\(Country.findFrom(content).prefix)\(content.dropLast(2))"
)
) )
screenView.didTapInfo = { [weak self] in screenView.didTapInfo = { [weak self] in
......
...@@ -31,7 +31,7 @@ final class OnboardingCodeViewModel { ...@@ -31,7 +31,7 @@ final class OnboardingCodeViewModel {
private var timer: Timer? private var timer: Timer?
private let isEmail: Bool private let isEmail: Bool
private let content: String private let content: String
private let confirmationId: String private var confirmationId: String
private let stateSubject = CurrentValueSubject<ViewState, Never>(.init()) private let stateSubject = CurrentValueSubject<ViewState, Never>(.init())
init( init(
...@@ -60,6 +60,18 @@ final class OnboardingCodeViewModel { ...@@ -60,6 +60,18 @@ final class OnboardingCodeViewModel {
} }
self.stateSubject.value.resendDebouncer -= 1 self.stateSubject.value.resendDebouncer -= 1
} }
bgQueue.schedule { [weak self] in
guard let self else { return }
do {
self.confirmationId = try self.messenger.ud.tryGet()
.sendRegisterFact(.init(
type: self.isEmail ? .email : .phone,
value: self.content
))
} catch {
self.hudManager.show(.init(error: error))
}
}
} }
func didTapNext() { func didTapNext() {
...@@ -67,7 +79,7 @@ final class OnboardingCodeViewModel { ...@@ -67,7 +79,7 @@ final class OnboardingCodeViewModel {
bgQueue.schedule { [weak self] in bgQueue.schedule { [weak self] in
guard let self else { return } guard let self else { return }
do { do {
try self.messenger.ud.get()!.confirmFact( try self.messenger.ud.tryGet().confirmFact(
confirmationId: self.confirmationId, confirmationId: self.confirmationId,
code: self.stateSubject.value.input code: self.stateSubject.value.input
) )
......
...@@ -39,8 +39,11 @@ final class OnboardingEmailViewModel { ...@@ -39,8 +39,11 @@ final class OnboardingEmailViewModel {
bgQueue.schedule { [weak self] in bgQueue.schedule { [weak self] in
guard let self else { return } guard let self else { return }
do { do {
let confirmationId = try self.messenger.ud.get()!.sendRegisterFact( let confirmationId = try self.messenger.ud.tryGet()
.init(type: .email, value: self.stateSubject.value.input) .sendRegisterFact(.init(
type: .email,
value: self.stateSubject.value.input
)
) )
self.hudManager.hide() self.hudManager.hide()
self.stateSubject.value.confirmationId = confirmationId self.stateSubject.value.confirmationId = confirmationId
......
...@@ -48,8 +48,11 @@ final class OnboardingPhoneViewModel { ...@@ -48,8 +48,11 @@ final class OnboardingPhoneViewModel {
guard let self else { return } guard let self else { return }
let content = "\(self.stateSubject.value.input)\(self.stateSubject.value.country.code)" let content = "\(self.stateSubject.value.input)\(self.stateSubject.value.country.code)"
do { do {
let confirmationId = try self.messenger.ud.get()!.sendRegisterFact( let confirmationId = try self.messenger.ud.tryGet()
.init(type: .phone, value: content) .sendRegisterFact(.init(
type: .phone,
value: content
)
) )
self.hudManager.hide() self.hudManager.hide()
self.stateSubject.value.content = content self.stateSubject.value.content = content
......
...@@ -30,7 +30,7 @@ final class ProfileCodeViewModel { ...@@ -30,7 +30,7 @@ final class ProfileCodeViewModel {
private var timer: Timer? private var timer: Timer?
private let isEmail: Bool private let isEmail: Bool
private let content: String private let content: String
private let confirmationId: String private var confirmationId: String
private let stateSubject = CurrentValueSubject<ViewState, Never>(.init()) private let stateSubject = CurrentValueSubject<ViewState, Never>(.init())
init( init(
...@@ -59,6 +59,18 @@ final class ProfileCodeViewModel { ...@@ -59,6 +59,18 @@ final class ProfileCodeViewModel {
} }
self.stateSubject.value.resendDebouncer -= 1 self.stateSubject.value.resendDebouncer -= 1
} }
bgQueue.schedule { [weak self] in
guard let self else { return }
do {
self.confirmationId = try self.messenger.ud.tryGet()
.sendRegisterFact(.init(
type: self.isEmail ? .email : .phone,
value: self.content
))
} catch {
self.hudManager.show(.init(error: error))
}
}
} }
func didTapNext() { func didTapNext() {
...@@ -66,7 +78,7 @@ final class ProfileCodeViewModel { ...@@ -66,7 +78,7 @@ final class ProfileCodeViewModel {
bgQueue.schedule { [weak self] in bgQueue.schedule { [weak self] in
guard let self else { return } guard let self else { return }
do { do {
try self.messenger.ud.get()!.confirmFact( try self.messenger.ud.tryGet().confirmFact(
confirmationId: self.confirmationId, confirmationId: self.confirmationId,
code: self.stateSubject.value.input code: self.stateSubject.value.input
) )
......
...@@ -39,8 +39,11 @@ final class ProfileEmailViewModel { ...@@ -39,8 +39,11 @@ final class ProfileEmailViewModel {
bgQueue.schedule { [weak self] in bgQueue.schedule { [weak self] in
guard let self else { return } guard let self else { return }
do { do {
let confirmationId = try self.messenger.ud.get()!.sendRegisterFact( let confirmationId = try self.messenger.ud.tryGet()
.init(type: .email, value: self.stateSubject.value.input) .sendRegisterFact(.init(
type: .email,
value: self.stateSubject.value.input
)
) )
self.hudManager.hide() self.hudManager.hide()
self.stateSubject.value.confirmationId = confirmationId self.stateSubject.value.confirmationId = confirmationId
......
...@@ -48,10 +48,12 @@ final class ProfilePhoneViewModel { ...@@ -48,10 +48,12 @@ final class ProfilePhoneViewModel {
guard let self else { return } guard let self else { return }
let content = "\(self.stateSubject.value.input)\(self.stateSubject.value.country.code)" let content = "\(self.stateSubject.value.input)\(self.stateSubject.value.country.code)"
do { do {
let confirmationId = try self.messenger.ud.get()!.sendRegisterFact( let confirmationId = try self.messenger.ud.tryGet()
.init(type: .phone, value: content) .sendRegisterFact(.init(
type: .phone,
value: content
)
) )
self.hudManager.hide() self.hudManager.hide()
self.stateSubject.value.content = content self.stateSubject.value.content = content
self.stateSubject.value.confirmationId = confirmationId self.stateSubject.value.confirmationId = confirmationId
......
...@@ -91,7 +91,7 @@ final class ProfileViewModel { ...@@ -91,7 +91,7 @@ final class ProfileViewModel {
bgQueue.schedule { [weak self] in bgQueue.schedule { [weak self] in
guard let self else { return } guard let self else { return }
do { do {
try self.messenger.ud.get()!.removeFact( try self.messenger.ud.tryGet().removeFact(
.init( .init(
type: isEmail ? .email : .phone, type: isEmail ? .email : .phone,
value: isEmail ? self.emailStored! : self.phoneStored! value: isEmail ? self.emailStored! : self.phoneStored!
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment