feat(sw-452): updated typing on util

This commit is contained in:
Pontus Dreij
2024-10-17 10:10:28 +02:00
parent a967431672
commit fce9ef1b61
5 changed files with 31 additions and 23 deletions

View File

@@ -47,8 +47,8 @@ export default function FlexibilityOption({
function onChange() {
const rate = {
roomTypeCode: roomTypeCode,
roomType: roomType,
roomTypeCode,
roomType,
priceName: name,
public: publicPrice,
member: memberPrice,

View File

@@ -4,7 +4,7 @@ import { useState } from "react"
import RateSummary from "./RateSummary"
import RoomCard from "./RoomCard"
import { getHotelReservationQueryParams } from "./utils"
import getHotelReservationQueryParams from "./utils"
import styles from "./roomSelection.module.css"

View File

@@ -1,23 +1,28 @@
import { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
function getHotelReservationQueryParams(searchParams: URLSearchParams) {
const searchParamsObject: SelectRateSearchParams = Array.from(
const searchParamsObject: Record<string, unknown> = Array.from(
searchParams.entries()
).reduce((acc, [key, value]) => {
const keys = key.replace(/\]/g, "").split(/\[|\./) // Split keys by '[' or '.'
keys.reduce((nestedAcc, k, i) => {
if (i === keys.length - 1) {
nestedAcc[k] = value // Assign value at the last key
} else {
if (!nestedAcc[k]) {
nestedAcc[k] = isNaN(Number(keys[i + 1])) ? {} : [] // Initialize as array or object
).reduce<Record<string, unknown>>(
(acc, [key, value]) => {
const keys = key.replace(/\]/g, "").split(/\[|\./) // Split keys by '[' or '.'
keys.reduce((nestedAcc, k, i) => {
if (i === keys.length - 1) {
// Convert value to number if the key is 'adults' or 'age'
;(nestedAcc as Record<string, unknown>)[k] =
k === "adults" || k === "age" ? Number(value) : value
} else {
if (!nestedAcc[k]) {
nestedAcc[k] = isNaN(Number(keys[i + 1])) ? {} : [] // Initialize as object or array
}
}
}
return nestedAcc[k]
}, acc)
return acc
}, {} as SelectRateSearchParams)
return searchParamsObject
return nestedAcc[k] as Record<string, unknown>
}, acc)
return acc
},
{} as Record<string, unknown>
)
return searchParamsObject as SelectRateSearchParams
}
export { getHotelReservationQueryParams }
export default getHotelReservationQueryParams