1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-30 13:41:57 +02:00
onion/js/actions/edition_list_actions.js

61 lines
1.8 KiB
JavaScript
Raw Normal View History

'use strict';
import { alt } from '../alt';
2015-07-24 13:44:28 +02:00
import Q from 'q';
import EditionListFetcher from '../fetchers/edition_list_fetcher.js';
class EditionListActions {
constructor() {
this.generateActions(
2015-05-26 16:48:48 +02:00
'updateEditionList',
'refreshEditionList',
2015-06-01 15:12:31 +02:00
'selectEdition',
'clearAllEditionSelections',
'closeAllEditionLists',
'toggleEditionList'
);
}
fetchEditionList({pieceId, page, pageSize, orderBy, orderAsc, filterBy}) {
2015-08-04 16:58:36 +02:00
if((!orderBy && typeof orderAsc === 'undefined') || !orderAsc) {
orderBy = 'edition_number';
orderAsc = true;
}
2015-07-03 16:31:09 +02:00
// Taken from: http://stackoverflow.com/a/519157/1263876
2015-08-04 16:58:36 +02:00
if((typeof page === 'undefined' || !page) && (typeof pageSize === 'undefined' || !pageSize)) {
2015-07-03 16:31:09 +02:00
page = 1;
pageSize = 10;
}
2015-07-24 13:44:28 +02:00
return Q.Promise((resolve, reject) => {
EditionListFetcher
.fetch({pieceId, page, pageSize, orderBy, orderAsc, filterBy})
.then((res) => {
if(res && !res.editions) {
throw new Error('Piece has no editions to fetch.');
}
this.actions.updateEditionList({
pieceId,
2015-07-03 16:31:09 +02:00
page,
pageSize,
orderBy,
2015-07-06 15:56:14 +02:00
orderAsc,
filterBy,
2015-07-06 15:56:14 +02:00
'editionListOfPiece': res.editions,
'count': res.count
});
resolve(res);
})
.catch((err) => {
console.logGlobal(err);
reject(err);
2015-05-26 13:14:35 +02:00
});
});
}
2015-05-26 13:33:35 +02:00
}
2015-06-05 14:14:59 +02:00
export default alt.createActions(EditionListActions);