@flagship.io/react-sdk
Version:
Flagship REACT SDK
41 lines (40 loc) • 1.4 kB
JavaScript
'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();
}