@@ -2,7 +2,82 @@ import request from '../utils/request';
22import * as transforms from '../utils/transforms' ;
33
44/**
5- * Returns all recipes on the backend.
5+ * Returns single recipes from the backend by uuid.
6+ *
7+ * @param id
8+ * Drupal UUID of the recipe.
9+ *
10+ * @returns {Promise<any> }
11+ */
12+ export const get = id => new Promise ( ( resolve , reject ) => {
13+ request
14+ . get ( `/recipes/${ id } ` )
15+ . query ( {
16+ 'include' : 'category,tags,image,image.thumbnail' ,
17+ 'fields[recipes]' : 'id,title,image,category,difficulty,ingredients,instructions,numberOfServices,tags,totalTime' ,
18+ 'fields[categories]' : 'id,name' ,
19+ 'fields[tags]' : 'id,name' ,
20+ 'fields[images]' : 'thumbnail' ,
21+ 'fields[files]' : 'url' ,
22+ } )
23+ // Tell superagent to consider any valid Drupal response as successful.
24+ // Later we can capture error codes if needed.
25+ . ok ( resp => resp . statusCode )
26+ . then ( ( response ) => {
27+ resolve ( {
28+ recipe : response . statusCode === 200 ? transforms . recipe ( response . body . data ) : { } ,
29+ statusCode : response . statusCode ,
30+ } ) ;
31+ } )
32+ . catch ( ( error ) => {
33+ console . error ( 'Could not fetch the recipe.' , error ) ;
34+ reject ( error ) ;
35+ } ) ;
36+ } ) ;
37+
38+ /**
39+ * Returns all recipes from the backend.
40+ *
41+ * @param pageLimit
42+ * Recipes per page.
43+ *
44+ * @param pageOffset
45+ * Amount of recipes to skip from the beginning (for pagination).
46+ *
47+ * @returns {Promise<any> }
48+ */
49+ export const getAll = ( pageLimit = 24 , pageOffset = 0 ) => new Promise ( ( resolve , reject ) => {
50+ request
51+ . get ( '/recipes' )
52+ . query ( {
53+ 'include' : 'image,image.thumbnail' ,
54+ 'fields[recipes]' : 'id,title,image' ,
55+ 'fields[categories]' : 'name' ,
56+ 'fields[images]' : 'thumbnail' ,
57+ 'fields[files]' : 'url' ,
58+ 'sort' : '-created' ,
59+ 'page[limit]' : pageLimit ,
60+ 'page[offset]' : pageOffset ,
61+ } )
62+ // Tell superagent to consider any valid Drupal response as successful.
63+ // Later we can capture error codes if needed.
64+ . ok ( resp => resp . statusCode )
65+ . then ( ( response ) => {
66+ resolve ( {
67+ recipes : response . statusCode === 200 ? response . body . data . map ( recipe => transforms . recipe ( recipe ) ) : [ ] ,
68+ hasNextPage : ! ! response . body . links . next ,
69+ hasPrevPage : ! ! response . body . links . prev ,
70+ statusCode : response . statusCode ,
71+ } ) ;
72+ } )
73+ . catch ( ( error ) => {
74+ console . error ( 'Could not fetch list of recipes.' , error ) ;
75+ reject ( error ) ;
76+ } ) ;
77+ } ) ;
78+
79+ /**
80+ * Returns promoted recipes from the backend.
681 *
782 * @param pageLimit
883 * Recipes per page.
@@ -12,29 +87,34 @@ import * as transforms from '../utils/transforms';
1287 *
1388 * @returns {Promise<any> }
1489 */
15- export const getAll = ( pageLimit = 24 , pageOffset = 0 ) =>
16- new Promise ( ( resolve , reject ) => {
17- request
18- . get ( '/recipes' )
19- . query ( {
20- 'include ' : 'image, image.thumbnail ' ,
21- 'fields[recipes ]' : 'id,title,image ' ,
22- 'fields[categories ]' : 'name ' ,
23- 'fields[images ]' : 'thumbnail ' ,
24- 'fields[files] ' : 'url' ,
25- 'sort ' : '-created' ,
26- 'page[limit] ' : pageLimit ,
27- 'page[offset ]' : pageOffset ,
28- } )
29- . then ( response => {
30- resolve ( {
31- recipes : response . body . data . map ( recipe => transforms . recipe ( recipe ) ) ,
32- hasNextPage : ! ! response . body . links . next ,
33- hasPrevPage : ! ! response . body . links . prev ,
34- } ) ;
35- } )
36- . catch ( error => {
37- console . error ( 'Could not fetch current user.' , error ) ;
38- reject ( error ) ;
90+ export const getPromoted = ( pageLimit = 4 , pageOffset = 0 ) => new Promise ( ( resolve , reject ) => {
91+ request
92+ . get ( '/recipes' )
93+ . query ( {
94+ 'include' : 'category,image,image.thumbnail' ,
95+ 'fields[recipes] ' : 'id,category,title, image' ,
96+ 'fields[categories ]' : 'name ' ,
97+ 'fields[images ]' : 'thumbnail ' ,
98+ 'fields[files ]' : 'url ' ,
99+ 'filter[isPromoted][value] ' : 1 ,
100+ 'filter[isPublished][value] ' : 1 ,
101+ 'sort ' : '-created' ,
102+ 'page[limit ]' : pageLimit ,
103+ 'page[offset]' : pageOffset ,
104+ } )
105+ // Tell superagent to consider any valid Drupal response as successful.
106+ // Later we can capture error codes if needed.
107+ . ok ( resp => resp . statusCode )
108+ . then ( ( response ) => {
109+ resolve ( {
110+ recipes : response . statusCode === 200 ? response . body . data . map ( recipe => transforms . recipe ( recipe ) ) : [ ] ,
111+ hasNextPage : ! ! response . body . links . next ,
112+ hasPrevPage : ! ! response . body . links . prev ,
113+ statusCode : response . statusCode ,
39114 } ) ;
40- } ) ;
115+ } )
116+ . catch ( ( error ) => {
117+ console . error ( 'Could not fetch promoted recipes.' , error ) ;
118+ reject ( error ) ;
119+ } ) ;
120+ } ) ;
0 commit comments