From bc4e7f719b03e32f5f1e64af8ca7447689e59a0f Mon Sep 17 00:00:00 2001 From: Edie Lemoine Date: Thu, 7 Mar 2024 12:15:29 +0100 Subject: [PATCH] refactor: improve readability of long method --- apps/sandbox/src/form/availableInPlatform.ts | 40 +++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/apps/sandbox/src/form/availableInPlatform.ts b/apps/sandbox/src/form/availableInPlatform.ts index 12906447..5d4e6089 100644 --- a/apps/sandbox/src/form/availableInPlatform.ts +++ b/apps/sandbox/src/form/availableInPlatform.ts @@ -1,5 +1,5 @@ import {toValue} from 'vue'; -import {useMemoize} from '@vueuse/core'; +import {useMemoize, isDefined} from '@vueuse/core'; import { type ConfigKey, useLogger, @@ -17,6 +17,29 @@ import {getAllSandboxConfigOptions} from './getAllSandboxConfigOptions'; const ALWAYS_ENABLED_FIELDS: readonly string[] = Object.freeze([CarrierSetting.AllowDeliveryOptions]); +const isValidCarrier = (carrierIdentifier?: CarrierIdentifier): carrierIdentifier is CarrierIdentifier => { + return isDefined(carrierIdentifier) && isEnumValue(resolveCarrierName(carrierIdentifier), CarrierName); +}; + +const featureIsEnabled = ( + carrierIdentifier: CarrierIdentifier, + platformName: SupportedPlatformName, + field: ConfigKey, +): boolean => { + const {features} = useCarrier({carrierIdentifier, platformName}); + + const isEnabled = toValue(features).has(field); + + if (!isEnabled) { + const options = getAllSandboxConfigOptions(); + const match = options.find((option) => option.key === field); + + return match?.parents?.some((parent) => toValue(features).has(parent)) ?? false; + } + + return isEnabled; +}; + export const availableInCarrier = useMemoize((fieldName: string, platformName: SupportedPlatformName): boolean => { const logger = useLogger(); @@ -35,7 +58,7 @@ export const availableInCarrier = useMemoize((fieldName: string, platformName: S const carrierIdentifier = split?.[split.indexOf(KEY_CARRIER_SETTINGS) + 1] as CarrierIdentifier | undefined; - if (!carrierIdentifier || !isEnumValue(resolveCarrierName(carrierIdentifier), CarrierName)) { + if (!isValidCarrier(carrierIdentifier)) { return true; } @@ -45,16 +68,5 @@ export const availableInCarrier = useMemoize((fieldName: string, platformName: S return false; } - const {features} = useCarrier({carrierIdentifier, platformName}); - - const isEnabled = toValue(features).has(baseField); - - if (!isEnabled) { - const options = getAllSandboxConfigOptions(); - const match = options.find((option) => option.key === baseField); - - return match?.parents?.some((parent) => toValue(features).has(parent)) ?? false; - } - - return isEnabled; + return featureIsEnabled(carrierIdentifier, platformName, baseField); });