Files
bigcapital/packages/webapp/src/store/subscription/subscription.selectors.tsx
2023-02-03 01:02:31 +02:00

47 lines
1.4 KiB
TypeScript

// @ts-nocheck
import { createSelector } from '@reduxjs/toolkit';
import { includes } from 'lodash';
const subscriptionSelector = (slug) => (state, props) => {
const subscriptions = Object.values(state.subscriptions.data);
return subscriptions.find(
(subscription) => subscription.slug === (slug || props.subscriptionType),
);
};
const subscriptionsSelector = (state, props) => {
const subscriptions = Object.values(state.subscriptions.data);
return subscriptions.filter(
(subscription) =>
includes(props.subscriptionTypes, subscription.slug) ||
!props.subscriptionTypes,
);
};
export const isSubscriptionOnTrialFactory = (slug) =>
createSelector(
subscriptionSelector(slug),
(subscription) => !!subscription?.on_trial,
);
export const isSubscriptionActiveFactory = (slug) =>
createSelector(subscriptionSelector(slug), (subscription) => {
return !!subscription?.active;
});
export const isSubscriptionInactiveFactory = (slug) =>
createSelector(
subscriptionSelector(slug),
(subscription) => !!subscription?.inactive,
);
export const isSubscriptionsInactiveFactory = () =>
createSelector(subscriptionsSelector, (subscriptions) =>
subscriptions.some((subscription) => subscription?.inactive),
);
export const isSubscriptionsActiveFactory = () =>
createSelector(subscriptionsSelector, (subscriptions) =>
subscriptions.some((subscription) => subscription?.active),
);