mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 09:23:13 +01:00
67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
import { alt } from '../alt';
|
|
import Q from 'q';
|
|
|
|
import PieceListFetcher from '../fetchers/piece_list_fetcher';
|
|
|
|
|
|
class PieceListActions {
|
|
constructor() {
|
|
this.generateActions(
|
|
'updatePieceList',
|
|
'updatePieceListRequestActions',
|
|
'updatePropertyForPiece'
|
|
);
|
|
}
|
|
|
|
fetchPieceList({ page, pageSize, search, orderBy, orderAsc, filterBy }) {
|
|
// To prevent flickering on a pagination request,
|
|
// we overwrite the piecelist with an empty list before
|
|
// pieceListCount === -1 defines the loading state
|
|
this.actions.updatePieceList({
|
|
page,
|
|
pageSize,
|
|
orderBy,
|
|
orderAsc,
|
|
filterBy,
|
|
search: '',
|
|
pieceList: [],
|
|
pieceListCount: -1,
|
|
unfilteredPieceListCount: -1
|
|
});
|
|
|
|
// afterwards, we can load the list
|
|
return Q.Promise((resolve, reject) => {
|
|
PieceListFetcher
|
|
.fetch({ page, pageSize, search, orderBy, orderAsc, filterBy })
|
|
.then((res) => {
|
|
this.actions.updatePieceList({
|
|
page,
|
|
pageSize,
|
|
search,
|
|
orderBy,
|
|
orderAsc,
|
|
filterBy,
|
|
pieceList: res.pieces,
|
|
pieceListCount: res.count,
|
|
unfilteredPieceListCount: res.unfiltered_count
|
|
});
|
|
resolve();
|
|
})
|
|
.catch((err) => reject(err));
|
|
});
|
|
}
|
|
|
|
fetchPieceRequestActions() {
|
|
PieceListFetcher
|
|
.fetchRequestActions()
|
|
.then((res) => {
|
|
this.actions.updatePieceListRequestActions(res);
|
|
})
|
|
.catch((err) => console.logGlobal(err));
|
|
}
|
|
}
|
|
|
|
export default alt.createActions(PieceListActions);
|