import { createCounter } from "@scandic-hotels/common/telemetry" import * as api from "../../../api" import { toApiLang } from "../../../utils" import { getStaysSchema } from "../output" import type { Lang } from "@scandic-hotels/common/constants/language" export async function getUpcomingStays( accessToken: string, limit: number = 10, language: Lang, cursor?: string ) { const getUpcomingStaysCounter = createCounter("user.getUpcomingStays") const metricsGetUpcomingStays = getUpcomingStaysCounter.init({ limit, cursor, language, }) metricsGetUpcomingStays.start() const params: Record = { limit: String(limit), language: toApiLang(language), } if (cursor) { params.offset = cursor } const apiResponse = await api.get( api.endpoints.v1.Booking.Stays.future, { headers: { Authorization: `Bearer ${accessToken}`, }, }, params ) if (!apiResponse.ok) { await metricsGetUpcomingStays.httpError(apiResponse) return null } const apiJson = await apiResponse.json() const verifiedData = getStaysSchema.safeParse(apiJson) if (!verifiedData.success) { metricsGetUpcomingStays.validationError(verifiedData.error) return null } metricsGetUpcomingStays.success() return verifiedData.data }