50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
|
/**
|
||
|
* External dependencies
|
||
|
*/
|
||
|
import { cleanForSlug } from '@wordpress/url';
|
||
|
import { getSetting } from '@woocommerce/settings';
|
||
|
|
||
|
/**
|
||
|
* Internal dependencies
|
||
|
*/
|
||
|
import type {
|
||
|
PickupLocation,
|
||
|
SortablePickupLocation,
|
||
|
ShippingMethodSettings,
|
||
|
} from './types';
|
||
|
|
||
|
export const indexLocationsById = (
|
||
|
locations: PickupLocation[]
|
||
|
): SortablePickupLocation[] => {
|
||
|
return locations.map( ( value, index ) => {
|
||
|
return {
|
||
|
...value,
|
||
|
id: cleanForSlug( value.name ) + '-' + index,
|
||
|
};
|
||
|
} );
|
||
|
};
|
||
|
|
||
|
export const defaultSettings = {
|
||
|
enabled: 'yes',
|
||
|
title: '',
|
||
|
tax_status: 'taxable',
|
||
|
cost: '',
|
||
|
};
|
||
|
|
||
|
export const getInitialSettings = (): ShippingMethodSettings => {
|
||
|
const settings = getSetting(
|
||
|
'pickupLocationSettings',
|
||
|
defaultSettings
|
||
|
) as typeof defaultSettings;
|
||
|
|
||
|
return {
|
||
|
enabled: settings?.enabled === 'yes',
|
||
|
title: settings?.title || defaultSettings.title,
|
||
|
tax_status: settings?.tax_status || defaultSettings.tax_status,
|
||
|
cost: settings?.cost || defaultSettings.cost,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
export const getInitialPickupLocations = (): SortablePickupLocation[] =>
|
||
|
indexLocationsById( getSetting( 'pickupLocations', [] ) );
|