refactor(stores): tighten chat and payment boundaries
This commit is contained in:
@@ -41,6 +41,45 @@ export function getDefaultPlanId(plans: readonly PaymentPlan[]): string {
|
||||
);
|
||||
}
|
||||
|
||||
export function hydratePlansState(
|
||||
plans: PaymentPlan[],
|
||||
selectedPlanId: string,
|
||||
): Pick<PaymentState, "plans" | "selectedPlanId" | "autoRenew" | "errorMessage"> {
|
||||
const nextSelectedPlanId = selectedPlanId || getDefaultPlanId(plans);
|
||||
return {
|
||||
plans,
|
||||
selectedPlanId: nextSelectedPlanId,
|
||||
autoRenew: defaultAutoRenewForPlan(nextSelectedPlanId, plans),
|
||||
errorMessage: null,
|
||||
};
|
||||
}
|
||||
|
||||
export function refreshPlansState(
|
||||
plans: PaymentPlan[],
|
||||
selectedPlanId: string,
|
||||
): Pick<PaymentState, "plans" | "selectedPlanId" | "autoRenew" | "errorMessage"> {
|
||||
const nextSelectedPlanId = plans.some((plan) => plan.planId === selectedPlanId)
|
||||
? selectedPlanId
|
||||
: getDefaultPlanId(plans);
|
||||
return {
|
||||
plans,
|
||||
selectedPlanId: nextSelectedPlanId,
|
||||
autoRenew: defaultAutoRenewForPlan(nextSelectedPlanId, plans),
|
||||
errorMessage: null,
|
||||
};
|
||||
}
|
||||
|
||||
export function selectPlanState(
|
||||
planId: string,
|
||||
plans: readonly PaymentPlan[],
|
||||
): Partial<PaymentState> {
|
||||
return {
|
||||
...resetOrderState(),
|
||||
selectedPlanId: planId,
|
||||
autoRenew: defaultAutoRenewForPlan(planId, plans),
|
||||
};
|
||||
}
|
||||
|
||||
export function resetOrderState(): Partial<PaymentState> {
|
||||
return {
|
||||
currentOrderId: null,
|
||||
|
||||
Reference in New Issue
Block a user