Files
frontend-app-learner-dashboard/src/data/redux/requests/selectors.js
Leangseu Kim 84446fe5cd feat: make maquerade stateful
feat: implement loading screen

chore: update selector test

chore: fiter/sort padding

chore: update fail masquerade state

chore: update unit test

chore: Update src/containers/MasqueradeBar/index.jsx

Co-authored-by: Ben Warzeski <bwarzeski@edx.org>

chore: update test

Co-authored-by: Ben Warzeski <bwarzeski@edx.org>

chore: update snapshot
2022-10-04 16:48:16 -04:00

41 lines
1.5 KiB
JavaScript

import { StrictDict } from 'utils';
import { RequestStates, RequestKeys } from 'data/constants/requests';
// import * as module from './selectors';
export const requestStatus = (state, { requestKey }) => state.requests[requestKey];
const statusSelector = (fn) => (requestKey) => (state) => fn(state.requests[requestKey]);
export const isInactive = ({ status }) => status === RequestStates.inactive;
export const isPending = ({ status }) => status === RequestStates.pending;
export const isCompleted = ({ status }) => status === RequestStates.completed;
export const isFailed = ({ status }) => status === RequestStates.failed;
export const error = (request) => request.error;
export const errorStatus = (request) => request.error?.response?.status;
export const errorCode = (request) => request.error?.response?.data;
export const data = (request) => request.data;
export const masquerade = (state) => {
const request = requestStatus(state, { requestKey: RequestKeys.masquerade });
return {
isMasquerading: isCompleted(request),
isMasqueradingFailed: isFailed(request),
isMasqueradingPending: isPending(request),
masqueradeError: error(request),
};
};
export default StrictDict({
requestStatus,
isInactive: statusSelector(isInactive),
isPending: statusSelector(isPending),
isCompleted: statusSelector(isCompleted),
isFailed: statusSelector(isFailed),
error: statusSelector(error),
errorCode: statusSelector(errorCode),
errorStatus: statusSelector(errorStatus),
data: statusSelector(data),
masquerade,
});