import type { HttpContext } from '@angular/common/http'; import type { AfricaniesSdkHttpToasts } from '../config/africanies-sdk.config'; import { asShippingMode, withShippingMode, } from '../shipping/shipping-mode.context'; import type { ApiRequestOptions } from './api-client'; import { resolveHttpToastContext } from './resolve-http-toast-context'; /** * Build {@link HttpContext} for an {@link ApiClient} request. * * Merges SDK config toasts, per-request toast flags, and optional * {@link ApiRequestOptions.shippingMode} override. * * @param configMode - From {@link AfricaniesSdkConfig.httpToasts}. * @param options - Per-request {@link ApiClient} options. * @param method */ export function resolveApiRequestContext( configMode: AfricaniesSdkHttpToasts | undefined, options: ApiRequestOptions, method?: string, ): HttpContext | undefined { let context = resolveHttpToastContext(configMode, options.toast, method); const shippingMode = asShippingMode(options.shippingMode); if (shippingMode) { context = withShippingMode(shippingMode, context); } return context; } /** * Effective shipping mode for one {@link ApiClient} request. * * @param options - Per-request options (may include {@link ApiRequestOptions.shippingMode}). * @param activeMode - Current tab mode from {@link ShippingModeService}. */ export function resolveRequestShippingMode( options: ApiRequestOptions | undefined, activeMode: 'stn' | 'sfn', ): 'stn' | 'sfn' { return asShippingMode(options?.shippingMode) ?? activeMode; }