import { create } from 'zustand'; interface TourState { currentTour: any; legs: any[]; publicTours: any[]; userRole: string | null; setTour: (tour: any) => void; updateLegs: (legs: any[]) => void; optimizeRouting: () => Promise; fetchTour: (id: string) => Promise; fetchPublicTours: () => Promise; } export const useTourStore = create((set, get) => ({ currentTour: null, legs: [], publicTours: [], userRole: null, setTour: (tour) => set({ currentTour: tour }), updateLegs: (legs) => set({ legs }), fetchTour: async (id: string) => { const API_BASE = `http://${window.location.hostname}:3001`; const response = await fetch(`${API_BASE}/api/v1/tours/${id}`); const data = await response.json(); // Lấy role từ danh sách participants (dữ liệu mẫu từ seed) const role = data.participants?.[0]?.role || 'VIEWER_ONLY'; set({ currentTour: data, legs: data.legs || [], userRole: role }); }, fetchPublicTours: async () => { const API_BASE = `http://${window.location.hostname}:3001`; const response = await fetch(`${API_BASE}/api/v1/tours/explore`); const data = await response.json(); set({ publicTours: data }); }, optimizeRouting: async () => { // Logic gọi API /api/v1/routing/optimize và cập nhật lại state }, }));