@openshift-assisted/ui-lib
Version:
React component library for the Assisted Installer UI
40 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.clustersReducer = exports.deleteCluster = exports.clustersSlice = exports.fetchClustersAsync = void 0;
const tslib_1 = require("tslib");
const toolkit_1 = require("@reduxjs/toolkit");
const resource_ui_state_1 = require("../../../../common/types/resource-ui-state");
const ClustersAPI_1 = tslib_1.__importDefault(require("../../../../common/api/assisted-service/ClustersAPI"));
const axiosClient_1 = require("../../../../common/api/axiosClient");
const utils_1 = require("../../../../common/api/utils");
exports.fetchClustersAsync = (0, toolkit_1.createAsyncThunk)('clusters/fetchClustersAsync', (value, { rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
try {
const { data } = yield ClustersAPI_1.default.list();
return data.filter((cluster) => (axiosClient_1.isInOcm ? cluster.kind === 'Cluster' : true));
}
catch (e) {
return (0, utils_1.handleApiError)(e, () => rejectWithValue(value));
}
}));
const initialState = { data: [], uiState: resource_ui_state_1.ResourceUIState.LOADING };
exports.clustersSlice = (0, toolkit_1.createSlice)({
initialState,
name: 'clusters',
reducers: {
deleteCluster: (state, action) => (Object.assign(Object.assign({}, state), { data: state.data.filter((item) => item.id !== action.payload) })),
},
extraReducers: (builder) => {
const { LOADED, LOADING, RELOADING, POLLING_ERROR } = resource_ui_state_1.ResourceUIState;
builder
.addCase(exports.fetchClustersAsync.pending, (state) => {
const uiState = state.uiState === LOADED ? RELOADING : LOADING;
return Object.assign(Object.assign({}, state), { uiState });
})
.addCase(exports.fetchClustersAsync.fulfilled, (state, action) => (Object.assign(Object.assign({}, state), { data: [...action.payload], uiState: LOADED })))
.addCase(exports.fetchClustersAsync.rejected, (state) => (Object.assign(Object.assign({}, state), { uiState: POLLING_ERROR })));
},
});
const { actions, reducer } = exports.clustersSlice;
exports.deleteCluster = actions.deleteCluster;
exports.clustersReducer = reducer;
//# sourceMappingURL=slice.js.map