UNPKG

@ledgerhq/live-common

Version:
47 lines 2.21 kB
import { useSelector } from "react-redux"; import { useMemo } from "react"; import { useFeatureFlags } from "../../featureFlags"; import { hubStateSelector } from "../reducer"; import { usePostOnboardingContext } from "./usePostOnboardingContext"; /** * @returns an object representing the state that should be rendered on the post * onboarding hub screen. * * This takes feature flagging into account so the logic is * resistant to flags getting enabled/disabled over time (for a given disabled * feature flag, the actions pointing to it will be excluded). * */ export function usePostOnboardingHubState() { const hubState = useSelector(hubStateSelector); const postOnboardingContext = usePostOnboardingContext(); const { getPostOnboardingAction } = postOnboardingContext; const { getFeature } = useFeatureFlags(); return useMemo(() => { if (!getPostOnboardingAction) return { deviceModelId: hubState.deviceModelId, lastActionCompleted: null, actionsState: [], postOnboardingInProgress: hubState.postOnboardingInProgress, }; const actionsState = hubState.actionsToComplete .map(actionId => ({ ...getPostOnboardingAction(actionId), completed: !!hubState.actionsCompleted[actionId], })) .filter(actionWithState => !actionWithState.featureFlagId || getFeature(actionWithState.featureFlagId)?.enabled); const lastActionCompleted = hubState.lastActionCompleted ? getPostOnboardingAction(hubState.lastActionCompleted) : null; const isLastActionCompletedEnabled = lastActionCompleted && (!lastActionCompleted.featureFlagId || getFeature(lastActionCompleted.featureFlagId)?.enabled); return { deviceModelId: hubState.deviceModelId, lastActionCompleted: isLastActionCompletedEnabled ? lastActionCompleted : null, actionsState, postOnboardingInProgress: hubState.postOnboardingInProgress, }; }, [getFeature, hubState, getPostOnboardingAction]); } //# sourceMappingURL=usePostOnboardingHubState.js.map