export const ONE_TAP_MESSAGE_TYPE = 'lendry-sso-onetap'; export function parsePopupOAuthParams(searchParams: URLSearchParams) { const display = searchParams.get('display'); const popupOrigin = searchParams.get('popup_origin'); if (display !== 'popup' || !popupOrigin?.trim()) { return null; } try { return { popupOrigin: new URL(popupOrigin.trim()).origin }; } catch { return null; } } export function postOneTapResult(popupOrigin: string, payload: Record) { if (!window.opener) { return false; } window.opener.postMessage({ type: ONE_TAP_MESSAGE_TYPE, ...payload }, popupOrigin); window.close(); return true; } export function parseAuthorizationRedirect(redirectUrl: string) { const url = new URL(redirectUrl); return { code: url.searchParams.get('code'), state: url.searchParams.get('state'), error: url.searchParams.get('error'), errorDescription: url.searchParams.get('error_description') }; }