fix and update

This commit is contained in:
lendry
2026-06-30 09:11:55 +03:00
parent f1d6a5167f
commit 250976ca08
5 changed files with 94 additions and 142 deletions

View File

@@ -14,14 +14,38 @@ export function parsePopupOAuthParams(searchParams: URLSearchParams) {
}
}
export function postOneTapResult(popupOrigin: string, payload: Record<string, unknown>) {
if (!window.opener) {
export function postOneTapResult(popupOrigin: string, payload: Record<string, unknown>): boolean {
if (!window.opener || window.opener.closed) {
return false;
}
window.opener.postMessage({ type: ONE_TAP_MESSAGE_TYPE, ...payload }, popupOrigin);
window.close();
return true;
try {
window.opener.postMessage({ type: ONE_TAP_MESSAGE_TYPE, ...payload }, popupOrigin);
window.close();
return true;
} catch {
return false;
}
}
export function deliverOAuthPopupResult(
popupContext: { popupOrigin: string } | null,
redirectUrl: string
): 'popup' | 'redirect' {
if (!popupContext) {
return 'redirect';
}
const parsed = parseAuthorizationRedirect(redirectUrl);
const delivered = postOneTapResult(popupContext.popupOrigin, {
code: parsed.code ?? undefined,
state: parsed.state ?? undefined,
token: parsed.code ?? undefined,
error: parsed.error ?? undefined,
errorDescription: parsed.errorDescription ?? undefined
});
return delivered ? 'popup' : 'redirect';
}
export function parseAuthorizationRedirect(redirectUrl: string) {