diff --git a/client/homebrew/pages/archivePage/archivePage.jsx b/client/homebrew/pages/archivePage/archivePage.jsx index 365bb5f2a..07eae0311 100644 --- a/client/homebrew/pages/archivePage/archivePage.jsx +++ b/client/homebrew/pages/archivePage/archivePage.jsx @@ -243,27 +243,8 @@ const ArchivePage = createClass({ renderFoundBrews() { const { title, brewCollection, page, totalPages, error, searching } = this.state; - if(searching === false && title === '' && error === null) {return (

Whenever you want, just start typing...

);} - - if(searching === false && error === 'Error: Service Unavailable') { - return ( -
-

I'm sorry, your request didn't work

-

Your search is not specific enough. Too many brews meet this criteria for us to display them.

-
- ); - }; - console.log(searching, !brewCollection, error); - console.log('404: ', searching === false && (!brewCollection || error === 'Error: Not found')) - if(searching === false && (!brewCollection || error === 'Error: Not found')) { - return ( -
-

We haven't found brews meeting your request.

-
- ); - }; - - if(searching === true) { + + if(searching) { return (

Searching

...

@@ -271,6 +252,37 @@ const ArchivePage = createClass({ ); }; + if(title === '') {return (

Whenever you want, just start typing...

);} + + if (error) { + let errorMessage; + switch (error.errorCode) { + case '404': + errorMessage = "We didn't find any brew"; + break; + case '503': + errorMessage = 'Your search is not specific enough. Too many brews meet this criteria for us to display them.'; + break; + case '500': + default: + errorMessage = 'An unexpected error occurred'; + } + + return ( +
+

Error: {errorMessage}

+
+ ); + }; + + if (!brewCollection || brewCollection.length === 0) { + return ( +
+

No brews found

+
+ ); + }; + return (
Brews found: {this.state.totalBrews} diff --git a/server/archive.api.js b/server/archive.api.js index 1c00d7f0a..3a8dd41b2 100644 --- a/server/archive.api.js +++ b/server/archive.api.js @@ -46,6 +46,10 @@ const archive = { // No published documents found with the given title return res.status(404).json({ error: 'Published documents not found' }); } + if (!brews || brews.length === 0) { + return res.status(404).json({ errorCode: '404', message: 'Published documents not found' }); + } + const totalBrews = await HomebrewModel.countDocuments(titleQuery, projection); const totalPages = Math.ceil(totalBrews / pageSize); @@ -54,7 +58,11 @@ const archive = { return res.json({ brews, page, totalPages, totalBrews}); } catch (error) { console.error(error); - return res.status(500).json({ error: 'Internal Server Error' }); + if (error.response && error.response.status === 503) { + return res.status(503).json({ errorCode: '503', message: 'Service Unavailable' }); + } else { + return res.status(500).json({ errorCode: '500', message: 'Internal Server Error' }); + } } } };