visitory-sdk
Version:
Feature flags and analytics SDK for Visitory
42 lines (41 loc) • 1.52 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useEffect, useState } from 'react';
const VisitoryContext = createContext(null);
export function useVisitory() {
const context = useContext(VisitoryContext);
if (!context) {
throw new Error('useVisitory must be used within a VisitoryProvider');
}
return context;
}
export function VisitoryProvider({ children, config, }) {
const [isInitialized, setIsInitialized] = useState(false);
const logEvent = async (eventName, properties) => {
try {
const response = await fetch('https://qualified-hound-398.convex.site/api/analytics/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
apiKey: config.apiKey,
eventName,
properties,
userId: config.userId,
projectId: config.projectId,
}),
});
if (!response.ok) {
throw new Error(`Failed to track event: ${response.statusText}`);
}
}
catch (error) {
console.error('Error tracking event:', error);
}
};
useEffect(() => {
// Initialize analytics
setIsInitialized(true);
}, []);
return (_jsx(VisitoryContext.Provider, { value: { logEvent, isInitialized }, children: children }));
}