11import { actionTypes } from 'redux-resource' ;
2- import {
3- createResources , readResources , updateResources , deleteResources
4- } from 'redux-resource-xhr' ;
2+ import { crudRequest } from 'redux-resource-xhr' ;
53import headers from '../../utils/headers' ;
64
5+ // This file heavily leverages the Redux Resource XHR library. To learn
6+ // more about its API, refer to the documentation:
7+ // https://redux-resource.js.org/docs/extras/redux-resource-xhr.html
8+
79// The Redux Resource XHR library only exports bulk actions, so we use this
810// function to turn single-resource responses from the server into arrays.
9- function transformSingular ( body ) {
11+ function singleResourceToArray ( body ) {
1012 return [ body ] ;
1113}
1214
1315export function createGist ( gist ) {
1416 const xhrOptions = {
17+ method : 'POST' ,
1518 url : 'https://api.github.com/gists' ,
1619 json : true ,
1720 body : gist ,
1821 headers
1922 } ;
2023
21- return dispatch => createResources ( {
22- resourceName : 'gists' ,
23- request : 'createGist' ,
24- list : 'createdGists' ,
25- transformData : transformSingular ,
24+ return dispatch => crudRequest ( 'create' , {
25+ actionDefaults : {
26+ resourceName : 'gists' ,
27+ request : 'createGist' ,
28+ list : 'createdGists' ,
29+ } ,
30+ transformData : singleResourceToArray ,
2631 xhrOptions,
2732 dispatch
2833 } ) ;
@@ -38,49 +43,58 @@ export function resetCreateGistStatus() {
3843
3944export function readGist ( gistId ) {
4045 const xhrOptions = {
46+ method : 'GET' ,
4147 url : `https://api.github.com/gists/${ gistId } ` ,
4248 json : true ,
4349 headers
4450 } ;
4551
46- return dispatch => readResources ( {
47- resourceName : 'gists' ,
48- resources : [ gistId ] ,
49- transformData : transformSingular ,
52+ return dispatch => crudRequest ( 'read' , {
53+ actionDefaults : {
54+ resourceName : 'gists' ,
55+ resources : [ gistId ] ,
56+ } ,
57+ transformData : singleResourceToArray ,
5058 xhrOptions,
5159 dispatch
5260 } ) ;
5361}
5462
5563export function readManyUsersGists ( username ) {
5664 const xhrOptions = {
65+ method : 'GET' ,
5766 url : `https://api.github.com/users/${ username } /gists` ,
5867 json : true ,
5968 headers
6069 } ;
6170
62- return dispatch => readResources ( {
63- resourceName : 'gists' ,
64- request : 'getUsersGists' ,
65- list : 'usersGists' ,
66- mergeListIds : false ,
71+ return dispatch => crudRequest ( 'read' , {
72+ actionDefaults : {
73+ resourceName : 'gists' ,
74+ request : 'getUsersGists' ,
75+ list : 'usersGists' ,
76+ mergeListIds : false ,
77+ } ,
6778 xhrOptions,
6879 dispatch
6980 } ) ;
7081}
7182
7283export function updateGist ( gistId , gist ) {
7384 const xhrOptions = {
85+ method : 'PATCH' ,
7486 url : `https://api.github.com/gists/${ gistId } ` ,
7587 json : true ,
7688 body : gist ,
7789 headers
7890 } ;
7991
80- return dispatch => updateResources ( {
81- resourceName : 'gists' ,
82- resources : [ gistId ] ,
83- transformData : transformSingular ,
92+ return dispatch => crudRequest ( 'update' , {
93+ actionDefaults : {
94+ resourceName : 'gists' ,
95+ resources : [ gistId ] ,
96+ } ,
97+ transformData : singleResourceToArray ,
8498 xhrOptions,
8599 dispatch
86100 } ) ;
@@ -96,13 +110,16 @@ export function resetUpdateGistStatus(gistId) {
96110
97111export function deleteGist ( gistId ) {
98112 const xhrOptions = {
113+ method : 'DELETE' ,
99114 url : `https://api.github.com/gists/${ gistId } ` ,
100115 headers
101116 } ;
102117
103- return dispatch => deleteResources ( {
104- resourceName : 'gists' ,
105- resources : [ gistId ] ,
118+ return dispatch => crudRequest ( 'delete' , {
119+ actionDefaults : {
120+ resourceName : 'gists' ,
121+ resources : [ gistId ] ,
122+ } ,
106123 xhrOptions,
107124 dispatch
108125 } ) ;
0 commit comments