import { CartUserInputError } from '@graphcommerce/graphql-mesh'
import { filterNonNullableKeys } from '@graphcommerce/next-ui'
import { AddProductsToCartMutation } from './AddProductsToCart.gql'

export function toUserErrors(data?: AddProductsToCartMutation | null): CartUserInputError[] {
  const cartItemErrors = filterNonNullableKeys(data?.addProductsToCart?.cart.items)
    .map((i) => i.errors)
    .flat(1)
    .map((e) => e?.message)
  return filterNonNullableKeys(data?.addProductsToCart?.user_errors).filter(
    (ue) => !cartItemErrors.includes(ue.message),
  )
}
