PluginProbe
Packeta / 2.1
Packeta v2.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / PacketaWidget / usePacketaShippingRate.js

usePacketaShippingRate.js in Packeta 2.1, at src/PacketaWidget/usePacketaShippingRate.js

58 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Shipping rate getter.
3 *
4 * @package Packetery
5 */
6
7 import { getShippingMethodOptionId } from "./getShippingMethodOptionId";
8
9 export const usePacketaShippingRate = ( shippingRates, carrierConfig ) => {
10 if ( ! shippingRates || shippingRates.length === 0 ) {
11 return null;
12 }
13 const { shipping_rates } = shippingRates[ 0 ];
14 if ( ! shipping_rates || shipping_rates.length === 0 ) {
15 return null;
16 }
17
18 const findShippingRate = ( callback ) => {
19 return shipping_rates.find(
20 ( { rate_id, selected } ) => {
21 if ( ! selected ) {
22 return false;
23 }
24
25 const rateId = getShippingMethodOptionId( rate_id );
26 const rateCarrierConfig = carrierConfig[ rateId ];
27 if ( ! rateCarrierConfig ) {
28 return false;
29 }
30
31 return callback( rateCarrierConfig );
32 }
33 );
34 };
35
36 const packetaPickupPointShippingRate = findShippingRate( rateCarrierConfig => {
37 const { is_pickup_points: isPickupPoints } = rateCarrierConfig;
38 return rateCarrierConfig && isPickupPoints;
39 } );
40
41 const packetaHomeDeliveryShippingRate = findShippingRate( rateCarrierConfig => {
42 const { is_pickup_points: isPickupPoints } = rateCarrierConfig;
43 return rateCarrierConfig && ! isPickupPoints;
44 } );
45
46 const chosenShippingRate = shipping_rates.find(
47 ( { selected } ) => {
48 return selected;
49 }
50 );
51
52 return {
53 packetaPickupPointShippingRate: packetaPickupPointShippingRate || null,
54 packetaHomeDeliveryShippingRate: packetaHomeDeliveryShippingRate || null,
55 chosenShippingRate: chosenShippingRate || null,
56 };
57 };
58