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: number) => 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: number) => { // Giả sử user hiện tại có ID là 1 (Lộc Phạm - OWNER) để test const currentUserId = 1; const response = await fetch(`http://localhost:3001/api/v1/tours/${id}`); const data = await response.json(); const role = data.members?.find((m: any) => m.userId === currentUserId)?.role || 'VIEWER_EXTERNAL'; set({ currentTour: data, legs: data.legs || [], userRole: role }); }, fetchPublicTours: async () => { const response = await fetch(`http://localhost:3001/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 }, }));