104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
import axios from "axios";
|
||
|
||
const API_URL = "https://hopp.zikor.pl";
|
||
|
||
export async function listLocations() {
|
||
try {
|
||
const response = await axios.get(`${API_URL}/locations/all`);
|
||
if (!response) {
|
||
return "No locations found";
|
||
}
|
||
|
||
// Нормализуем изображения в полученных данных
|
||
return response.data.map(location => ({
|
||
...location,
|
||
imageSource: normalizeImageSource(location.image)
|
||
}));
|
||
} catch (error) {
|
||
console.error("Error fetching locations:", error);
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
const normalizeImageSource = (image) => {
|
||
if (!image) return null;
|
||
|
||
// Проверка, является ли изображение URL
|
||
if (typeof image === 'string') {
|
||
// Если строка начинается с http или https, это URL
|
||
if (image.startsWith('http://') || image.startsWith('https://')) {
|
||
return { uri: image };
|
||
}
|
||
|
||
// Проверка на base64
|
||
if (image.startsWith('data:image')) {
|
||
return { uri: image };
|
||
} else if (image.length > 100) {
|
||
// Предполагаем, что это base64 без префикса
|
||
return { uri: `data:image/jpeg;base64,${image}` };
|
||
}
|
||
}
|
||
|
||
// Возвращаем null для неправильного формата
|
||
return null;
|
||
}
|
||
|
||
export async function getLocation(id) {
|
||
try {
|
||
const location = await axios.get(`${API_URL}/locations/${id}`);
|
||
if (!location) {
|
||
throw new Error("Location not found");
|
||
}
|
||
|
||
return [...location.data, {image: normalizeImageSource(location.image)}];
|
||
} catch (error) {
|
||
console.error("Error fetching location:", error);
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
export async function addLocation(location) {
|
||
try {
|
||
const response = await axios.post(`${API_URL}/locations/add`, location, {
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
});
|
||
if (!response) {
|
||
throw new Error("Failed to add location");
|
||
}
|
||
return response.data;
|
||
} catch (error) {
|
||
console.error("Error adding location:", error);
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
export async function updateLocation(id, location) {
|
||
try {
|
||
const response = await axios.put(`${API_URL}/locations/${id}`, location, {
|
||
headers: { "Content-Type": "application/json" },
|
||
});
|
||
if (!response) {
|
||
throw new Error("Failed to add location");
|
||
}
|
||
return response.data;
|
||
} catch (error) {
|
||
console.error("Error while updating location:", error);
|
||
throw error;
|
||
}
|
||
}
|
||
|
||
export async function deleteLocation(id) {
|
||
try {
|
||
const response = await axios.delete(`${API_URL}/locations/${id}`);
|
||
if (!response) {
|
||
throw new Error("Failed to delete location");
|
||
}
|
||
return response.data;
|
||
} catch (error) {
|
||
console.error("Error while deleting location:", error);
|
||
throw error;
|
||
}
|
||
}
|