Skip to content

Commit

Permalink
Merge pull request #260 from eurofurence/issue-259-bugfix
Browse files Browse the repository at this point in the history
also reset ticket level on type change
  • Loading branch information
Jumpy-Squirrel authored Jan 6, 2025
2 parents 189d8c4 + e6a405b commit ac690a5
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 9 deletions.
6 changes: 4 additions & 2 deletions src/apis/attsrv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,12 @@ const attendeeDtoFromRegistrationInfo = (registrationInfo: RegistrationInfo): At
packagesMap.set('sponsor', registrationInfo.ticketLevel.level === 'sponsor' ? 1 : 0)
packagesMap.set('sponsor2', registrationInfo.ticketLevel.level === 'super-sponsor' ? 1 : 0)
packagesMap.set('stage',
!(config.ticketLevels[registrationInfo.ticketLevel.level].includes?.includes('stage-pass') ?? false)
registrationInfo.ticketLevel.level // it cannot be null here
&& !(config.ticketLevels[registrationInfo.ticketLevel.level].includes?.includes('stage-pass') ?? false)
&& registrationInfo.ticketLevel.addons['stage-pass'].selected ? 1 : 0)
packagesMap.set('tshirt',
!(config.ticketLevels[registrationInfo.ticketLevel.level].includes?.includes('tshirt') ?? false)
registrationInfo.ticketLevel.level // it cannot be null here
&& !(config.ticketLevels[registrationInfo.ticketLevel.level].includes?.includes('tshirt') ?? false)
&& registrationInfo.ticketLevel.addons.tshirt.selected ? 1 : 0)
packagesMap.set('early', registrationInfo.ticketLevel.addons.early.selected ? 1 : 0)
packagesMap.set('late', registrationInfo.ticketLevel.addons.late.selected ? 1 : 0)
Expand Down
2 changes: 1 addition & 1 deletion src/state/models/register.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export type TicketLevelAddons = {
}

export type TicketLevel = {
readonly level: keyof TicketLevelConfig
readonly level: keyof TicketLevelConfig | null
readonly addons: TicketLevelAddons
}

Expand Down
8 changes: 4 additions & 4 deletions src/state/reducers/register.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ const transformPersonalInfo = (payload: GetAction<SubmitFormActionBundle<'regist
}
}

const resetAddonsInState = (state: Partial<RegistrationInfo>, ticketType: 'day' | 'full'): Partial<RegistrationInfo> => {
const resetAddonsAndLevelInState = (state: Partial<RegistrationInfo>, ticketType: 'day' | 'full'): Partial<RegistrationInfo> => {
if (state.ticketLevel) {
return { ...state,
ticketLevel: {
level: state.ticketLevel.level,
level: null,
addons: determineDefaultAddons(ticketType),
} }
} else {
Expand All @@ -77,10 +77,10 @@ const registrationInfoReducer = (state: Partial<RegistrationInfo>, action: GetAc
// here we can force reset ticket addons to defaults (different hidden packages, different defaults)
if (action.payload.type === 'day') {
// not setting ticketType - it is set when choosing a day
return resetAddonsInState(state, 'day')
return resetAddonsAndLevelInState(state, 'day')
}

const stateWithAddonsReset = resetAddonsInState(state, 'full')
const stateWithAddonsReset = resetAddonsAndLevelInState(state, 'full')

return { ...stateWithAddonsReset, ticketType: { type: action.payload.type! } }
}
Expand Down
4 changes: 2 additions & 2 deletions src/state/selectors/register.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export const getInvoice = createSelector(getTicketType(), getTicketLevel(), getP
return undefined
}

const ticketLevelConfig = config.ticketLevels[ticketLevel.level]
const ticketLevelConfig = config.ticketLevels[ticketLevel.level ?? 'standard'] // cannot be null here, just making ts happy

const convertCount = (countOptions: AddonCountOptions): number => {
const code = countOptions.count ?? '1'
Expand Down Expand Up @@ -62,7 +62,7 @@ export const getInvoice = createSelector(getTicketType(), getTicketLevel(), getP
.map(([addonId, addon]) => ({
id: `register-ticket-addons-${addonId}`,
amount: convertCount(addon.options as AddonCountOptions),
unitPrice: config.ticketLevels[ticketLevel.level].includes?.includes(addonId) ?? false ? 0 : config.addons[addonId].price,
unitPrice: config.ticketLevels[ticketLevel.level ?? 'standard'].includes?.includes(addonId) ?? false ? 0 : config.addons[addonId].price,
options: addon.options,
}))

Expand Down

0 comments on commit ac690a5

Please sign in to comment.