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},
);
}