feat: retrieve organization subscriptions list api.

feat: subscriptions reducers.
This commit is contained in:
Ahmed Bouhuolia
2020-10-13 21:46:32 +02:00
parent d71845a4c4
commit 8b97673100
23 changed files with 289 additions and 55 deletions

View File

@@ -26,10 +26,12 @@ import vendors from './vendors/vendors.reducer';
import paymentReceives from './PaymentReceive/paymentReceive.reducer';
import paymentMades from './PaymentMades/paymentMade.reducer';
import organizations from './organizations/organizations.reducers';
import subscriptions from './subscription/subscription.reducer';
export default combineReducers({
authentication,
organizations,
subscriptions,
dashboard,
users,
accounts,
@@ -47,12 +49,11 @@ export default combineReducers({
exchangeRates,
globalErrors,
customers,
salesEstimates,
salesInvoices,
salesReceipts,
bills,
vendors,
paymentReceives,
paymentMades
paymentMades,
});

View File

@@ -0,0 +1,14 @@
import ApiService from 'services/ApiService';
import t from 'store/types';
export const fetchSubscriptions = () => (dispatch) => new Promise((resolve, reject) => {
ApiService.get('subscription').then((response) => {
dispatch({
type: t.SET_PLAN_SUBSCRIPTIONS_LIST,
payload: {
subscriptions: response.data.subscriptions,
},
});
resolve(response);
}).catch((error) => { reject(error); })
});

View File

@@ -0,0 +1,19 @@
import { createReducer } from '@reduxjs/toolkit';
import t from 'store/types';
const initialState = {
data: {},
};
export default createReducer(initialState, {
[t.SET_PLAN_SUBSCRIPTIONS_LIST]: (state, action) => {
const { subscriptions } = action.payload;
const _data = {};
subscriptions.forEach((subscription) => {
_data[subscription.id] = subscription;
});
state.data = _data;
},
});

View File

@@ -0,0 +1,23 @@
import { createSelector } from '@reduxjs/toolkit';
const subscriptionSelector = (slug) => (state, props) => {
const subscriptions = Object.values(state.subscriptions.data);
return subscriptions.find((subscription) => subscription.slug === slug);
};
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,
);

View File

@@ -0,0 +1,4 @@
export default {
SET_PLAN_SUBSCRIPTIONS_LIST: 'SET_PLAN_SUBSCRIPTIONS_LIST',
};

View File

@@ -25,6 +25,7 @@ import vendors from './vendors/vendors.types';
import paymentReceives from './PaymentReceive/paymentReceive.type';
import paymentMades from './PaymentMades/paymentMade.type';
import organizations from './organizations/organizations.types';
import subscription from './subscription/subscription.types';
export default {
...authentication,
@@ -54,4 +55,5 @@ export default {
...paymentReceives,
...paymentMades,
...organizations,
...subscription,
};