import {BasicParams, AppDistribution} from '../../../types'; import {appBridgeUrl} from '../../helpers/app-bridge-url'; import {addDocumentResponseHeaders} from '../../helpers/add-response-headers'; import {sanitizeRedirectUrl} from './validate-redirect-url'; import type {RedirectTarget} from '.'; export interface RedirectToOptions { url: string | URL; target?: RedirectTarget; } export function renderAppBridge( {config}: BasicParams, request: Request, redirectTo?: RedirectToOptions, ): never { let redirectToScript = ''; if (redirectTo) { const destination = sanitizeRedirectUrl(config.appUrl, redirectTo.url); const target = redirectTo.target ?? '_top'; redirectToScript = ``; } const responseHeaders = new Headers({ 'content-type': 'text/html;charset=utf-8', }); const isEmbeddedApp = config.distribution !== AppDistribution.ShopifyAdmin; addDocumentResponseHeaders( responseHeaders, isEmbeddedApp, new URL(request.url).searchParams.get('shop'), ); throw new Response( ` ${redirectToScript} `, {headers: responseHeaders}, ); }