189 lines
5.3 KiB
JavaScript
189 lines
5.3 KiB
JavaScript
import { useAuthStore } from './auth.store.js'
|
|
|
|
export function getInventaireImagePathOrDefault(path) {
|
|
return getImagePathOrGivenDefault(path, "../../image/defaultinventairebook.png")
|
|
}
|
|
|
|
export function getImagePathOrDefault(path) {
|
|
return getImagePathOrGivenDefault(path, "../image/defaultbook.png")
|
|
}
|
|
|
|
export function getImagePathOrGivenDefault(path, defaultpath) {
|
|
if (path == "" || typeof path === 'undefined') {
|
|
return defaultpath;
|
|
} else if (path.startsWith("https://")) {
|
|
return path;
|
|
} else {
|
|
return path;
|
|
}
|
|
}
|
|
|
|
function useFetch(data, error, url) {
|
|
const { user } = useAuthStore();
|
|
|
|
if (user != null) {
|
|
fetch(url, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Authorization': 'Bearer ' + user.token
|
|
}
|
|
})
|
|
.then((res) => res.json())
|
|
.then((json) => (data.value = json))
|
|
.catch((err) => (error.value = err));
|
|
}
|
|
}
|
|
|
|
export async function getAppInfo(appInfo, appInfoErr) {
|
|
return fetch('/ws/appinfo', {
|
|
method: 'GET'
|
|
}).then((res) => res.json())
|
|
.then((json) => appInfo.value = json)
|
|
.catch((err) => (appInfoErr.value = err))
|
|
}
|
|
|
|
export function getMyBooks(data, error, arg, limit, offset) {
|
|
const queryParams = new URLSearchParams({limit: limit, offset: offset});
|
|
return useFetch(data, error, '/ws/mybooks/' + arg + "?" + queryParams.toString());
|
|
}
|
|
|
|
export function getSearchBooks(data, error, searchterm, lang, searchInventaire, limit, offset) {
|
|
const queryParams = new URLSearchParams({lang: lang, inventaire: searchInventaire, limit: limit, offset: offset});
|
|
return useFetch(data, error, '/ws/search/' + encodeURIComponent(searchterm) + "?" + queryParams.toString());
|
|
}
|
|
|
|
export function getInventaireEditionBooks(data, error, inventaireId, lang, limit, offset) {
|
|
const queryParams = new URLSearchParams({lang: lang, limit: limit, offset: offset});
|
|
return useFetch(data, error, '/ws/inventaire/books/' + encodeURIComponent(inventaireId) + "?" + queryParams.toString());
|
|
}
|
|
|
|
export function getAuthor(data, error, id) {
|
|
return useFetch(data, error, '/ws/author/' + id);
|
|
}
|
|
|
|
export function getAuthorBooks(data, error, id, limit, offset) {
|
|
const queryParams = new URLSearchParams({limit: limit, offset: offset});
|
|
return useFetch(data, error, '/ws/author/' + id + "/books" + "?" + queryParams.toString());
|
|
}
|
|
|
|
export function getBook(data, error, id) {
|
|
return useFetch(data, error, '/ws/book/' + id);
|
|
}
|
|
|
|
export function postBook(book) {
|
|
return genericPayloadCall('/ws/book', book.value, 'POST')
|
|
}
|
|
|
|
export async function postImportBook(id, language) {
|
|
return genericPayloadCall('/ws/importbook', {inventaireid: id, lang: language}, 'POST');
|
|
}
|
|
|
|
export async function putReadBook(bookId) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/read", {read: true}, 'PUT')
|
|
}
|
|
|
|
export async function putUnreadBook(bookId) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/read", {read: false}, 'PUT')
|
|
}
|
|
|
|
export async function putEndReadDate(bookId, enddate) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/read", {read: true, endDate: enddate}, 'PUT')
|
|
}
|
|
|
|
export async function putEndReadDateUnset(bookId) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/read", {read: true, endDate: "null"}, 'PUT')
|
|
}
|
|
|
|
export async function putStartReadDateUnset(bookId) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/startread", {startDate: "null"}, 'PUT')
|
|
}
|
|
|
|
export async function putStartReadDate(bookId, startdate) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/startread", {startDate: startdate}, 'PUT')
|
|
}
|
|
|
|
export async function putWantReadBook(bookId, payload) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/wantread", payload, 'PUT')
|
|
}
|
|
|
|
export async function putRateBook(bookId, payload) {
|
|
return genericPayloadCall('/ws/book/' + bookId + "/rate", payload, 'PUT')
|
|
}
|
|
|
|
export function postLogin(user) {
|
|
return genericPostCallNoAuth('/ws/auth/login', user.value)
|
|
}
|
|
|
|
export function postSignUp(user) {
|
|
return genericPostCallNoAuth('/ws/auth/signup', user.value)
|
|
}
|
|
|
|
export function postImage(file) {
|
|
const { user } = useAuthStore();
|
|
const formData = new FormData();
|
|
formData.append('file', file);
|
|
if (user != null) {
|
|
return fetch("/ws/upload/cover", {
|
|
method: 'POST',
|
|
headers: {
|
|
'Authorization': 'Bearer ' + user.token
|
|
},
|
|
body: formData
|
|
})
|
|
} else {
|
|
return Promise.resolve();
|
|
}
|
|
}
|
|
|
|
export function genericPostCallNoAuth(apiRoute, object) {
|
|
return fetch(apiRoute, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(object)
|
|
})
|
|
}
|
|
|
|
export function genericPayloadCall(apiRoute, object, method) {
|
|
const { user } = useAuthStore();
|
|
|
|
if (user != null) {
|
|
return fetch(apiRoute, {
|
|
method: method,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Authorization': 'Bearer ' + user.token
|
|
},
|
|
body: JSON.stringify(object)
|
|
})
|
|
}
|
|
else {
|
|
return Promise.resolve();
|
|
}
|
|
}
|
|
|
|
export function extractFormErrorFromField(fieldName, errors) {
|
|
if (errors === null) {
|
|
return "";
|
|
}
|
|
if (errors.value == null) {
|
|
return "";
|
|
}
|
|
console.log(errors.value);
|
|
const titleErr = errors.find((e) => e["field"] === fieldName);
|
|
if (typeof titleErr !== 'undefined') {
|
|
return titleErr.error;
|
|
} else {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
export function extractGlobalFormError(errors) {
|
|
if (errors !== null && "error" in errors) {
|
|
return errors["error"];
|
|
} else {
|
|
return "";
|
|
}
|
|
}
|