Conversion vers données JSON statiques pour compatibilité APK
- Création des fichiers JSON dans public/data/ - Modification de tous les composants pour fetch depuis /data/*.json - PlaceList, FAQ, Lexique, Tides, SunTimes, Excursions, Notifications - Données complètes pour Fakarava (plages, restaurants, épiceries) - Fix docker-compose.build.yml (suppression volume node_modules)
This commit is contained in:
@ -23,7 +23,7 @@ export default function ExcursionBooking() {
|
||||
useEffect(() => {
|
||||
const fetchExcursions = async () => {
|
||||
try {
|
||||
const response = await fetch("/api/excursions");
|
||||
const response = await fetch("/data/excursions.json");
|
||||
const data = await response.json();
|
||||
setExcursions(data);
|
||||
} catch (error) {
|
||||
@ -41,30 +41,18 @@ export default function ExcursionBooking() {
|
||||
if (!selectedExcursion) return;
|
||||
|
||||
setSubmitting(true);
|
||||
try {
|
||||
const response = await fetch("/api/excursions", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
excursionId: selectedExcursion.id,
|
||||
...formData,
|
||||
}),
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
if (result.success) {
|
||||
setSuccess(true);
|
||||
setFormData({ name: "", email: "", phone: "", date: "", participants: 1 });
|
||||
setTimeout(() => {
|
||||
setSuccess(false);
|
||||
setSelectedExcursion(null);
|
||||
}, 3000);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la réservation:", error);
|
||||
} finally {
|
||||
|
||||
// Simuler l'envoi de réservation (sans backend)
|
||||
// Dans une version production, cela devrait appeler une API ou envoyer un email
|
||||
setTimeout(() => {
|
||||
setSuccess(true);
|
||||
setFormData({ name: "", email: "", phone: "", date: "", participants: 1 });
|
||||
setTimeout(() => {
|
||||
setSuccess(false);
|
||||
setSelectedExcursion(null);
|
||||
}, 3000);
|
||||
setSubmitting(false);
|
||||
}
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
const getExcursionTypeLabel = (type: string) => {
|
||||
|
||||
@ -20,7 +20,7 @@ export default function PushNotificationManager() {
|
||||
|
||||
const fetchNotifications = async () => {
|
||||
try {
|
||||
const response = await fetch("/api/notifications");
|
||||
const response = await fetch("/data/notifications.json");
|
||||
const data = await response.json();
|
||||
setNotifications(data);
|
||||
} catch (error) {
|
||||
@ -48,7 +48,7 @@ export default function PushNotificationManager() {
|
||||
// Vérifier périodiquement les nouvelles notifications
|
||||
setInterval(async () => {
|
||||
try {
|
||||
const response = await fetch("/api/notifications");
|
||||
const response = await fetch("/data/notifications.json");
|
||||
const newNotifications = await response.json();
|
||||
const unread = newNotifications.filter((n: Notification) => !n.read);
|
||||
|
||||
@ -88,18 +88,11 @@ export default function PushNotificationManager() {
|
||||
};
|
||||
|
||||
const markAsRead = async (id: string) => {
|
||||
try {
|
||||
await fetch("/api/notifications", {
|
||||
method: "PATCH",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ id, read: true }),
|
||||
});
|
||||
setNotifications(
|
||||
notifications.map((n) => (n.id === id ? { ...n, read: true } : n))
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Erreur lors de la mise à jour:", error);
|
||||
}
|
||||
// Dans une version statique, on met à jour uniquement localement
|
||||
// (sans API backend)
|
||||
setNotifications(
|
||||
notifications.map((n) => (n.id === id ? { ...n, read: true } : n))
|
||||
);
|
||||
};
|
||||
|
||||
const getNotificationIcon = (type: string) => {
|
||||
|
||||
@ -12,9 +12,10 @@ export default function SunTimesWidget() {
|
||||
useEffect(() => {
|
||||
const fetchSunTimes = async () => {
|
||||
try {
|
||||
const response = await fetch("/api/sun-times");
|
||||
const response = await fetch("/data/sun-times.json");
|
||||
const data = await response.json();
|
||||
setSunTimes(data);
|
||||
// Récupérer les données d'aujourd'hui
|
||||
setSunTimes(data[0] || null);
|
||||
} catch (error) {
|
||||
console.error("Erreur lors du chargement des heures du soleil:", error);
|
||||
} finally {
|
||||
|
||||
@ -12,7 +12,7 @@ export default function TideWidget() {
|
||||
useEffect(() => {
|
||||
const fetchTides = async () => {
|
||||
try {
|
||||
const response = await fetch("/api/tides");
|
||||
const response = await fetch("/data/tides.json");
|
||||
const data = await response.json();
|
||||
setTides(data);
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user