Advertisement
Guest User

packagesSlice.js

a guest
Apr 9th, 2020
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { createSlice } from '@reduxjs/toolkit';
  2.  
  3. import * as api from 'api/packages';
  4.  
  5. const startLoading = state => {
  6.   state.isLoading = true;
  7. };
  8.  
  9. const loadingFailed = (state, action) => {
  10.   state.isLoading = false;
  11.   state.error = action.payload;
  12. };
  13.  
  14. const packagesSlice = createSlice({
  15.   name: 'packages',
  16.   initialState: {
  17.     packages: [],
  18.     isLoading: false,
  19.     error: null,
  20.   },
  21.   reducers: {
  22.     getPackagesStart: startLoading,
  23.     updatePackageStart: startLoading,
  24.     getPackagesSuccess(state, action) {
  25.       state.packages = action.payload;
  26.       state.error = null;
  27.     },
  28.     updatePackageSuccess(state, action) {
  29.       const updatedPackage = action.payload;
  30.       state.packages = state.packages.map(package =>
  31.         package.id === updatedPackage.id ? updatedPackage : package,
  32.       );
  33.       state.error = null;
  34.     },
  35.     getPackagesFailed: loadingFailed,
  36.     updatePackageFailed: loadingFailed,
  37.   },
  38. });
  39.  
  40. export const {
  41.   getPackagesStart,
  42.   getPackagesSuccess,
  43.   getPackagesFailed,
  44.   updatePackageStart,
  45.   updatePackageSuccess,
  46.   updatePackageFailed,
  47. } = packagesSlice.actions;
  48.  
  49. export default packagesSlice.reducer;
  50.  
  51. export const fetchPackages = page => async dispatch => {
  52.   try {
  53.     dispatch(getPackagesStart());
  54.     const packages = await api.getPackages(page);
  55.     dispatch(getPackagesSuccess(packages));
  56.   } catch (error) {
  57.     dispatch(getPackagesFailed(error.toString()));
  58.   }
  59. };
  60.  
  61. export const updatePackage = (id, package) => async dispatch => {
  62.   try {
  63.     dispatch(updatePackageStart());
  64.     const updatedPackage = await api.updatePackage(package);
  65.     dispatch(updatePackageSuccess(updatedPackage));
  66.   } catch (error) {
  67.     dispatch(updatePackageFailed(error.toString()));
  68.   }
  69. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement