more refactor complete
This commit is contained in:
parent
ddbc9d3a75
commit
77e602bf16
@ -227,7 +227,7 @@ impl Component for MultiStepResidentWizard {
|
||||
DigitalResidentFormData::default()
|
||||
};
|
||||
|
||||
// Create steps
|
||||
// Create initial steps (will be updated dynamically)
|
||||
let steps: Vec<Rc<dyn FormStep<DigitalResidentFormData>>> = vec![
|
||||
Rc::new(PersonalInfoStep),
|
||||
Rc::new(PaymentStep::new()),
|
||||
@ -251,6 +251,14 @@ impl Component for MultiStepResidentWizard {
|
||||
match msg {
|
||||
MultiStepResidentWizardMsg::FormDataChanged(new_data) => {
|
||||
self.form_data = new_data;
|
||||
|
||||
// If we don't have a client secret yet and the form has enough data for payment,
|
||||
// automatically create the payment intent
|
||||
if self.client_secret.is_none() && !self.form_data.full_name.is_empty() && !self.form_data.email.is_empty() {
|
||||
console::log_1(&"🔧 Form data updated with valid info, creating payment intent...".into());
|
||||
ctx.link().send_message(MultiStepResidentWizardMsg::CreatePaymentIntent);
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
MultiStepResidentWizardMsg::FormCompleted(final_data) => {
|
||||
@ -335,7 +343,7 @@ impl Component for MultiStepResidentWizard {
|
||||
on_form_change={on_form_change}
|
||||
on_complete={on_complete}
|
||||
on_cancel={Some(on_cancel)}
|
||||
steps={self.steps.clone()}
|
||||
steps={self.create_steps_with_client_secret()}
|
||||
validators={self.validators.clone()}
|
||||
show_progress={true}
|
||||
allow_skip_validation={false}
|
||||
@ -364,6 +372,16 @@ impl Component for MultiStepResidentWizard {
|
||||
}
|
||||
|
||||
impl MultiStepResidentWizard {
|
||||
fn create_steps_with_client_secret(&self) -> Vec<Rc<dyn FormStep<DigitalResidentFormData>>> {
|
||||
let mut payment_step = PaymentStep::new();
|
||||
payment_step.set_client_secret(self.client_secret.clone());
|
||||
|
||||
vec![
|
||||
Rc::new(PersonalInfoStep),
|
||||
Rc::new(payment_step),
|
||||
]
|
||||
}
|
||||
|
||||
fn create_payment_intent(&self, ctx: &Context<Self>) {
|
||||
let link = ctx.link().clone();
|
||||
let form_data = self.form_data.clone();
|
||||
|
@ -1,7 +1,7 @@
|
||||
use yew::prelude::*;
|
||||
use web_sys::HtmlInputElement;
|
||||
use crate::models::company::{DigitalResidentFormData, DigitalResident};
|
||||
use crate::components::entities::resident_registration::SimpleResidentWizard;
|
||||
use crate::components::entities::resident_registration::MultiStepResidentWizard;
|
||||
|
||||
#[derive(Properties, PartialEq)]
|
||||
pub struct ResidentLandingOverlayProps {
|
||||
@ -344,7 +344,7 @@ impl ResidentLandingOverlay {
|
||||
// Registration wizard content with fade-in animation
|
||||
<div class="flex-grow-1 overflow-auto"
|
||||
style="opacity: 0; animation: fadeIn 0.5s ease-in-out 0.25s forwards;">
|
||||
<SimpleResidentWizard
|
||||
<MultiStepResidentWizard
|
||||
on_registration_complete={link.callback(ResidentLandingMsg::RegistrationComplete)}
|
||||
on_back_to_parent={link.callback(|_| ResidentLandingMsg::BackToLanding)}
|
||||
success_resident_id={None}
|
||||
|
Loading…
Reference in New Issue
Block a user