import { createSelector } from '@wordpress/data';
import { uniqBy } from 'lodash';
import { camelCaseKeys, getCarrierPackages } from 'utils';
import { LabelPurchaseState } from '../../types';
import { Package } from 'types';
export const getPredefinedPackages = (
state: LabelPurchaseState,
carrierId?: string
): string[] | typeof state.packages.predefined => {
return carrierId
? state.packages.predefined?.[ carrierId ] ?? []
: state.packages.predefined ?? [];
};
export const getPackageUpdateErrors = (
state: LabelPurchaseState,
packageType = 'custom'
) => {
return state.packages.errors?.[ packageType ] ?? {};
};
const getCustomPackages = ( state: LabelPurchaseState ) => {
return ( state.packages.custom ?? [] ).map( camelCaseKeys );
};
export const getSavedPackages = createSelector(
( state: LabelPurchaseState ): Package[] => {
return [
...uniqBy(
Object.values(
getCarrierPackages( getPredefinedPackages( state ) )
).flat(),
'id'
),
...getCustomPackages( state ),
];
},
( state ) => [ state.packages.predefined, state.packages.custom ]
);