@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
47 lines • 2.21 kB
JavaScript
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