feat: add conditional signup values

This commit is contained in:
Christel Westerberg
2024-10-16 12:09:18 +02:00
parent 5870a31275
commit 74c2a9d1e1
18 changed files with 347 additions and 110 deletions

View File

@@ -22,7 +22,10 @@ interface EnterDetailsState {
activeSidePeek: SidePeekEnum | null
isValid: Record<StepEnum, boolean>
completeStep: (updatedData: Partial<EnterDetailsState["data"]>) => void
navigate: (step: StepEnum, searchParams?: Record<string, string>) => void
navigate: (
step: StepEnum,
searchParams?: Record<string, string | boolean>
) => void
openSidePeek: (key: SidePeekEnum | null) => void
closeSidePeek: () => void
}
@@ -37,26 +40,34 @@ export function initEditDetailsState(currentStep: StepEnum) {
breakfast: undefined,
countryCode: "",
email: "",
firstname: "",
lastname: "",
firstName: "",
lastName: "",
phoneNumber: "",
join: false,
zipCode: "",
dateOfBirth: undefined,
termsAccepted: false,
}
let inputData = {}
if (search?.size) {
const searchParams: Record<string, string> = {}
const searchParams: Record<string, string | boolean> = {}
search.forEach((value, key) => {
searchParams[key] = value
// Handle boolean values
if (value === "true" || value === "false") {
searchParams[key] = JSON.parse(value) as true | false
} else {
searchParams[key] = value
}
})
inputData = searchParams
} else if (sessionData) {
inputData = JSON.parse(sessionData)
}
const validPaths = [StepEnum.selectBed]
let initialData = defaultData
let initialData: EnterDetailsState["data"] = defaultData
const isValid = {
[StepEnum.selectBed]: false,
@@ -100,7 +111,7 @@ export function initEditDetailsState(currentStep: StepEnum) {
const query = new URLSearchParams(window.location.search)
if (searchParams) {
Object.entries(searchParams).forEach(([key, value]) => {
query.set(key, value)
query.set(key, value ? value.toString() : "")
})
}