import { useCallback, useEffect, useRef } from 'react';
type UsePreservedSipUriParams = {
sipUri?: string | null;
hasSipUri?: boolean | null;
};
type UsePreservedSipUriResult = {
getPreservedSipUri: () => string;
setPreservedSipUri: (value?: string | null) => void;
resetPreservedSipUri: () => void;
};
export const usePreservedSipUri = ({
sipUri,
hasSipUri,
}: UsePreservedSipUriParams): UsePreservedSipUriResult => {
const preservedSipUriRef = useRef('');
const setPreservedSipUri = useCallback((value?: string | null) => {
preservedSipUriRef.current = value ?? '';
}, []);
const resetPreservedSipUri = useCallback(() => {
setPreservedSipUri('');
}, [setPreservedSipUri]);
const getPreservedSipUri = useCallback(() => {
return preservedSipUriRef.current;
}, []);
useEffect(() => {
if (typeof sipUri !== 'string') {
return;
}
if (hasSipUri || sipUri !== '') {
setPreservedSipUri(sipUri);
}
}, [hasSipUri, sipUri, setPreservedSipUri]);
return {
getPreservedSipUri,
setPreservedSipUri,
resetPreservedSipUri,
};
};