107 lines
2.7 KiB
JavaScript
107 lines
2.7 KiB
JavaScript
import axios from "axios";
|
|
|
|
const API_URL = "http://192.168.0.130:9010";
|
|
|
|
export async function listLocations() {
|
|
try {
|
|
const response = await axios.get(`${API_URL}/locations/all`);
|
|
if (!response) {
|
|
return "No locations found";
|
|
}
|
|
|
|
console.log("Locations fetched successfully");
|
|
|
|
return response.data.map(location => ({
|
|
...location,
|
|
imageSource: normalizeImageSource(location.image)
|
|
}));
|
|
} catch (error) {
|
|
console.error("Error fetching locations:", error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
export const normalizeImageSource = (image) => {
|
|
if (!image) return null;
|
|
|
|
if (typeof image === 'string') {
|
|
if (image.startsWith('http://') || image.startsWith('https://')) {
|
|
return { uri: image };
|
|
}
|
|
|
|
if (image.startsWith('data:image')) {
|
|
return { uri: image };
|
|
} else if (image.length > 100) {
|
|
return { uri: `data:image/jpeg;base64,${image}` };
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
export async function getLocation(id) {
|
|
try {
|
|
const location = await axios.get(`${API_URL}/locations/${id}`);
|
|
if (!location) {
|
|
console.error("Could not find location");
|
|
return("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) {
|
|
console.log("Error adding location");
|
|
return("Failed to add location");
|
|
}
|
|
console.log("Location added successfully:", response.data);
|
|
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) {
|
|
console.log("Failed to update location");
|
|
return("Failed to update location");
|
|
}
|
|
console.log("Location updated successfully:", response.data);
|
|
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) {
|
|
console.log("Error deleting location");
|
|
return("Failed to delete location");
|
|
}
|
|
console.log("Location deleted successfully:", response.data);
|
|
return response.data;
|
|
} catch (error) {
|
|
console.error("Error while deleting location:", error);
|
|
throw error;
|
|
}
|
|
}
|