UNPKG

@flagship.io/react-sdk

Version:
41 lines (40 loc) 1.4 kB
'use client'; import { useRef } from "react"; export function useLatestRef(value) { const ref = useRef(value); ref.current = value; return ref; } export function shouldRecreateVisitor(currentVisitor, visitorId, isAuthenticated) { if (!currentVisitor) { return true; } const hasIdChanged = currentVisitor.visitorId !== visitorId; return hasIdChanged && (!isAuthenticated || (isAuthenticated && !!currentVisitor.anonymousId)); } export function shouldUpdateConsent(currentVisitor, hasConsented) { return currentVisitor.hasConsented !== hasConsented; } export function getAuthenticationAction(currentVisitor, isAuthenticated) { if (!currentVisitor.anonymousId && isAuthenticated) { return "authenticate"; } if (currentVisitor.anonymousId && !isAuthenticated) { return "unauthenticate"; } return null; } export function updateVisitorData(visitor, visitorId, context, hasConsented, isAuthenticated) { if (shouldUpdateConsent(visitor, hasConsented)) { visitor.setConsent(hasConsented ?? true); } visitor.updateContext(context); const authAction = getAuthenticationAction(visitor, isAuthenticated); if (authAction === "authenticate") { visitor.authenticate(visitorId); } else if (authAction === "unauthenticate") { visitor.unauthenticate(); } visitor.fetchFlags(); }