opds-web-client
Version:
74 lines (73 loc) • 2.39 kB
JavaScript
"use strict";
var history_1 = require("./history");
var initialState = {
url: null,
data: null,
isFetching: false,
isFetchingPage: false,
error: null,
history: []
};
var collection = function (state, action) {
if (state === void 0) { state = initialState; }
switch (action.type) {
case "FETCH_COLLECTION_REQUEST":
return Object.assign({}, state, {
isFetching: true,
error: null
});
case "FETCH_COLLECTION_FAILURE":
return Object.assign({}, state, {
isFetching: false,
error: action.error
});
case "LOAD_COLLECTION":
return Object.assign({}, state, {
data: action.data,
url: action.url ? action.url : state.url,
isFetching: false,
error: null,
history: history_1.default(state, action)
});
case "CLEAR_COLLECTION":
return Object.assign({}, state, {
data: null,
url: null,
error: null,
history: state.history.slice(0, -1)
});
case "FETCH_PAGE_REQUEST":
return Object.assign({}, state, {
pageUrl: action.url,
isFetchingPage: true,
error: null
});
case "FETCH_PAGE_FAILURE":
return Object.assign({}, state, {
isFetchingPage: false,
error: action.error
});
case "LOAD_PAGE":
return Object.assign({}, state, {
data: Object.assign({}, state.data, {
books: Object.assign([], state.data.books).concat(action.data.books),
nextPageUrl: action.data.nextPageUrl
}),
isFetchingPage: false
});
case "LOAD_SEARCH_DESCRIPTION":
return Object.assign({}, state, {
data: Object.assign({}, state.data, {
search: action.data
})
});
case "CLOSE_ERROR":
return Object.assign({}, state, {
error: null
});
default:
return state;
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = collection;