mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 22:00:31 +00:00
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
import { createSelector } from '@reduxjs/toolkit';
|
|
import {
|
|
pickItemsFromIds,
|
|
paginationLocationQuery,
|
|
defaultPaginationMeta,
|
|
} from 'store/selectors';
|
|
|
|
const vendorsTableQuery = (state) => state.vendors.tableQuery;
|
|
const vendorByIdSelector = (state, props) =>
|
|
state.vendors.items[props.vendorId];
|
|
const vendorsItemsSelector = (state) => state.vendors.items;
|
|
|
|
const vendorsPaginationSelector = (state, props) => {
|
|
const viewId = state.vendors.currentViewId;
|
|
return state.vendors.views?.[viewId];
|
|
};
|
|
|
|
export const getVendorsTableQuery = createSelector(
|
|
paginationLocationQuery,
|
|
vendorsTableQuery,
|
|
(locationQuery, tableQuery) => {
|
|
return {
|
|
...locationQuery,
|
|
...tableQuery,
|
|
};
|
|
},
|
|
);
|
|
|
|
const vendorsPageSelector = (state, props, query) => {
|
|
const viewId = state.vendors.currentViewId;
|
|
const currentView = state.vendors.views?.[viewId];
|
|
const currentPageId = currentView?.pages;
|
|
|
|
return currentView?.pages?.[currentPageId];
|
|
};
|
|
|
|
export const getVendorCurrentPageFactory = () =>
|
|
createSelector(
|
|
vendorsPageSelector,
|
|
vendorsItemsSelector,
|
|
(vendorPage, vendorItems) => {
|
|
return typeof vendorPage === 'object'
|
|
? pickItemsFromIds(vendorItems, vendorPage.ids) || []
|
|
: [];
|
|
},
|
|
);
|
|
|
|
export const getVendorsPaginationMetaFactory = () =>
|
|
createSelector(vendorsPaginationSelector, (vendorPage) => {
|
|
return {
|
|
...defaultPaginationMeta(),
|
|
...(vendorPage?.paginationMeta || {}),
|
|
};
|
|
});
|
|
|
|
export const getVendorByIdFactory = () =>
|
|
createSelector(vendorByIdSelector, (vendor) => {
|
|
return vendor;
|
|
});
|