import {Variant} from '@myparcel-pdk/common'; import {toArray} from '@myparcel/ts-utils'; import {createLogger} from '../logger'; import {createNotification} from '../createNotification'; import { type ActionParameters, type AdminInstance, type AnyActionDefinition, type MaybeAdminAction, type PdkNotification, } from '../../types'; import {NotificationCategory} from '../../data'; import {useAdminInstance} from '../../composables'; import {type ActionContext} from '../../actions'; import {getActionIdentifier} from './getActionIdentifier'; export const createActionContext = ( action: AnyActionDefinition, parameters?: ActionParameters, existingInstance?: AdminInstance, ): ActionContext => { const identifier = getActionIdentifier(action); const logger = createLogger(identifier); return { // @ts-expect-error todo action, // @ts-expect-error todo parameters: parameters ?? {}, instance: { ...(existingInstance ?? useAdminInstance()), logger, }, notifications: toArray(action.notifications ?? [Variant.Error]).reduce( (acc, variant) => ({ ...acc, [variant]: createNotification(variant, { tags: { action: identifier, }, }), }), {} as Record, ), }; };