opds-web-client
Version:
290 lines (289 loc) • 12.3 kB
JavaScript
"use strict";
var ActionCreator = (function () {
function ActionCreator(fetcher) {
this.FETCH_COLLECTION_REQUEST = "FETCH_COLLECTION_REQUEST";
this.FETCH_COLLECTION_SUCCESS = "FETCH_COLLECTION_SUCCESS";
this.FETCH_COLLECTION_FAILURE = "FETCH_COLLECTION_FAILURE";
this.LOAD_COLLECTION = "LOAD_COLLECTION";
this.CLEAR_COLLECTION = "CLEAR_COLLECTION";
this.FETCH_PAGE_REQUEST = "FETCH_PAGE_REQUEST";
this.FETCH_PAGE_SUCCESS = "FETCH_PAGE_SUCCESS";
this.FETCH_PAGE_FAILURE = "FETCH_PAGE_FAILURE";
this.LOAD_PAGE = "LOAD_PAGE";
this.FETCH_BOOK_REQUEST = "FETCH_BOOK_REQUEST";
this.FETCH_BOOK_SUCCESS = "FETCH_BOOK_SUCCESS";
this.FETCH_BOOK_FAILURE = "FETCH_BOOK_FAILURE";
this.LOAD_BOOK = "LOAD_BOOK";
this.CLEAR_BOOK = "CLEAR_BOOK";
this.LOAD_SEARCH_DESCRIPTION = "LOAD_SEARCH_DESCRIPTION";
this.CLOSE_ERROR = "CLOSE_ERROR";
this.UPDATE_BOOK_REQUEST = "UPDATE_BOOK_REQUEST";
this.UPDATE_BOOK_SUCCESS = "UPDATE_BOOK_SUCCESS";
this.UPDATE_BOOK_FAILURE = "UPDATE_BOOK_FAILURE";
this.LOAD_UPDATE_BOOK_DATA = "LOAD_UPDATE_BOOK_DATA";
this.FULFILL_BOOK_REQUEST = "FULFILL_BOOK_REQUEST";
this.FULFILL_BOOK_SUCCESS = "FULFILL_BOOK_SUCCESS";
this.FULFILL_BOOK_FAILURE = "FULFILL_BOOK_FAILURE";
this.FETCH_LOANS_REQUEST = "FETCH_LOANS_REQUEST";
this.FETCH_LOANS_SUCCESS = "FETCH_LOANS_SUCCESS";
this.FETCH_LOANS_FAILURE = "FETCH_LOANS_FAILURE";
this.LOAD_LOANS = "LOAD_LOANS";
this.SHOW_AUTH_FORM = "SHOW_AUTH_FORM";
this.HIDE_AUTH_FORM = "HIDE_AUTH_FORM";
this.SAVE_AUTH_CREDENTIALS = "SAVE_AUTH_CREDENTIALS";
this.CLEAR_AUTH_CREDENTIALS = "CLEAR_AUTH_CREDENTIALS";
this.fetcher = fetcher;
}
ActionCreator.prototype.fetchCollection = function (url) {
var _this = this;
return function (dispatch) {
dispatch(_this.fetchCollectionRequest(url));
return new Promise(function (resolve, reject) {
_this.fetcher.fetchOPDSData(url).then(function (data) {
dispatch(_this.fetchCollectionSuccess());
dispatch(_this.loadCollection(data, url));
resolve(data);
}).catch(function (err) {
dispatch(_this.fetchCollectionFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.fetchPage = function (url) {
var _this = this;
return function (dispatch) {
dispatch(_this.fetchPageRequest(url));
return new Promise(function (resolve, reject) {
_this.fetcher.fetchOPDSData(url).then(function (data) {
dispatch(_this.fetchPageSuccess());
dispatch(_this.loadPage(data));
resolve(data);
}).catch(function (err) {
dispatch(_this.fetchPageFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.fetchBook = function (url) {
var _this = this;
return function (dispatch) {
dispatch(_this.fetchBookRequest(url));
return new Promise(function (resolve, reject) {
_this.fetcher.fetchOPDSData(url).then(function (data) {
dispatch(_this.fetchBookSuccess());
dispatch(_this.loadBook(data, url));
resolve(data);
}).catch(function (err) {
dispatch(_this.fetchBookFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.fetchSearchDescription = function (url) {
var _this = this;
return function (dispatch) {
return new Promise(function (resolve, reject) {
_this.fetcher.fetchSearchDescriptionData(url).then(function (data) {
dispatch(_this.loadSearchDescription(data));
resolve(data);
}).catch(function (err) { return reject(err); });
});
};
};
ActionCreator.prototype.fetchCollectionRequest = function (url) {
return { type: this.FETCH_COLLECTION_REQUEST, url: url };
};
ActionCreator.prototype.fetchCollectionSuccess = function () {
return { type: this.FETCH_COLLECTION_SUCCESS };
};
ActionCreator.prototype.fetchCollectionFailure = function (error) {
return { type: this.FETCH_COLLECTION_FAILURE, error: error };
};
ActionCreator.prototype.loadCollection = function (data, url) {
return { type: this.LOAD_COLLECTION, data: data, url: url };
};
ActionCreator.prototype.fetchPageRequest = function (url) {
return { type: this.FETCH_PAGE_REQUEST, url: url };
};
ActionCreator.prototype.fetchPageSuccess = function () {
return { type: this.FETCH_PAGE_SUCCESS };
};
ActionCreator.prototype.fetchPageFailure = function (error) {
return { type: this.FETCH_PAGE_FAILURE, error: error };
};
ActionCreator.prototype.loadPage = function (data) {
return { type: this.LOAD_PAGE, data: data };
};
ActionCreator.prototype.clearCollection = function () {
return { type: this.CLEAR_COLLECTION };
};
ActionCreator.prototype.loadSearchDescription = function (data) {
return { type: this.LOAD_SEARCH_DESCRIPTION, data: data };
};
ActionCreator.prototype.closeError = function () {
return { type: this.CLOSE_ERROR };
};
ActionCreator.prototype.fetchBookRequest = function (url) {
return { type: this.FETCH_BOOK_REQUEST, url: url };
};
ActionCreator.prototype.fetchBookSuccess = function () {
return { type: this.FETCH_BOOK_SUCCESS };
};
ActionCreator.prototype.fetchBookFailure = function (error) {
return { type: this.FETCH_BOOK_FAILURE, error: error };
};
ActionCreator.prototype.loadBook = function (data, url) {
return { type: this.LOAD_BOOK, data: data, url: url };
};
ActionCreator.prototype.clearBook = function () {
return { type: this.CLEAR_BOOK };
};
ActionCreator.prototype.updateBook = function (url) {
var _this = this;
return function (dispatch) {
dispatch(_this.updateBookRequest());
return new Promise(function (resolve, reject) {
_this.fetcher.fetchOPDSData(url).then(function (data) {
dispatch(_this.updateBookSuccess());
dispatch(_this.loadUpdateBookData(data));
resolve(data);
}).catch(function (err) {
dispatch(_this.updateBookFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.updateBookRequest = function () {
return { type: this.UPDATE_BOOK_REQUEST };
};
ActionCreator.prototype.updateBookSuccess = function () {
return { type: this.UPDATE_BOOK_SUCCESS };
};
ActionCreator.prototype.updateBookFailure = function (error) {
return { type: this.UPDATE_BOOK_FAILURE, error: error };
};
ActionCreator.prototype.loadUpdateBookData = function (data) {
return { type: this.LOAD_UPDATE_BOOK_DATA, data: data };
};
ActionCreator.prototype.fulfillBook = function (url) {
var _this = this;
return function (dispatch) {
return new Promise(function (resolve, reject) {
dispatch(_this.fulfillBookRequest());
_this.fetcher.fetch(url)
.then(function (response) {
if (response.ok) {
return response.blob();
}
else {
throw ({
status: response.status,
response: "Could not fulfill book",
url: url
});
}
})
.then(function (blob) {
dispatch(_this.fulfillBookSuccess());
resolve(blob);
})
.catch(function (err) {
dispatch(_this.fulfillBookFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.indirectFulfillBook = function (url, type) {
var _this = this;
return function (dispatch) {
return new Promise(function (resolve, reject) {
dispatch(_this.fulfillBookRequest());
_this.fetcher.fetchOPDSData(url).then(function (book) {
var link = book.fulfillmentLinks.find(function (link) {
return link.type === type;
});
if (link) {
dispatch(_this.fulfillBookSuccess());
resolve(link.url);
}
else {
throw ({
status: 200,
response: "Couldn't fulfill book",
url: url
});
}
}).catch(function (err) {
dispatch(_this.fulfillBookFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.fulfillBookRequest = function () {
return { type: this.FULFILL_BOOK_REQUEST };
};
ActionCreator.prototype.fulfillBookSuccess = function () {
return { type: this.FULFILL_BOOK_SUCCESS };
};
ActionCreator.prototype.fulfillBookFailure = function (error) {
return { type: this.FULFILL_BOOK_FAILURE, error: error };
};
ActionCreator.prototype.fetchLoans = function (url) {
var _this = this;
return function (dispatch) {
dispatch(_this.fetchLoansRequest(url));
return new Promise(function (resolve, reject) {
_this.fetcher.fetchOPDSData(url).then(function (data) {
dispatch(_this.fetchLoansSuccess());
dispatch(_this.loadLoans(data.books));
resolve(data);
}).catch(function (err) {
dispatch(_this.fetchLoansFailure(err));
reject(err);
});
});
};
};
ActionCreator.prototype.fetchLoansRequest = function (url) {
return { type: this.FETCH_LOANS_REQUEST, url: url };
};
ActionCreator.prototype.fetchLoansSuccess = function () {
return { type: this.FETCH_LOANS_SUCCESS };
};
ActionCreator.prototype.fetchLoansFailure = function (error) {
return { type: this.FETCH_LOANS_FAILURE, error: error };
};
ActionCreator.prototype.loadLoans = function (books) {
return { type: this.LOAD_LOANS, books: books };
};
ActionCreator.prototype.showAuthForm = function (callback, cancel, providers, title, error) {
return { type: this.SHOW_AUTH_FORM, callback: callback, cancel: cancel, providers: providers, title: title, error: error };
};
ActionCreator.prototype.closeErrorAndHideAuthForm = function () {
var _this = this;
return function (dispatch) {
dispatch(_this.closeError());
dispatch(_this.hideAuthForm());
};
};
ActionCreator.prototype.hideAuthForm = function () {
return { type: this.HIDE_AUTH_FORM };
};
ActionCreator.prototype.saveAuthCredentials = function (credentials) {
this.fetcher.setAuthCredentials(credentials);
return { type: this.SAVE_AUTH_CREDENTIALS, credentials: credentials };
};
ActionCreator.prototype.clearAuthCredentials = function () {
this.fetcher.clearAuthCredentials();
return { type: this.CLEAR_AUTH_CREDENTIALS };
};
return ActionCreator;
}());
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ActionCreator;