@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
47 lines • 2.31 kB
JavaScript
import { useMemo } from "react";
import useFeature from "../useFeature";
import { FEATURE_FLAG_KEYS } from "./types";
/**
* Hook for wallet4.0 configuration.
* Works for both desktop (lwdWallet40) and mobile (lwmWallet40).
*
* When adding platform-specific params in types-live:
* 1. Add the param to Feature_LwdWallet40 or Feature_LwmWallet40
* 2. Add the corresponding boolean getter in WalletFeaturesConfig
* 3. Add the logic in the useMemo below
*
* @param platform - The platform to get the feature flag for ("desktop" or "mobile")
* @returns Configuration object with boolean flags for each feature
*
* @example
* // Desktop usage
* const config = useWalletFeaturesConfig("desktop");
*
* @example
* // Mobile usage
* const config = useWalletFeaturesConfig("mobile");
*/
export const useWalletFeaturesConfig = (platform) => {
const featureFlagKey = FEATURE_FLAG_KEYS[platform];
const walletFeatureFlag = useFeature(featureFlagKey);
return useMemo(() => {
const isEnabled = walletFeatureFlag?.enabled ?? false;
const params = walletFeatureFlag?.params;
return {
isEnabled,
shouldDisplayMarketBanner: isEnabled && Boolean(params?.marketBanner),
shouldDisplayGraphRework: isEnabled && Boolean(params?.graphRework),
shouldDisplayQuickActionCtas: isEnabled && Boolean(params?.quickActionCtas),
shouldDisplayNewReceiveDialog: isEnabled && Boolean(params?.newReceiveDialog),
shouldDisplayWallet40MainNav: isEnabled && Boolean(params?.mainNavigation),
shouldUseLazyOnboarding: isEnabled && Boolean(params?.lazyOnboarding),
shouldDisplayBalanceRefreshRework: isEnabled && Boolean(params?.balanceRefreshRework),
shouldDisplayTour: isEnabled && Boolean(params?.tour),
shouldDisplayAssetSection: isEnabled && Boolean(params?.assetSection),
shouldDisplayOnboardingWidget: isEnabled && Boolean(params && "onboardingWidget" in params && params.onboardingWidget),
shouldDisplayBrazePlacement: isEnabled && Boolean(params?.brazePlacement),
shouldDisplayOperationsList: isEnabled && Boolean(params?.operationsList),
};
}, [walletFeatureFlag]);
};
//# sourceMappingURL=useWalletFeaturesConfig.js.map