Skip to content

Commit dbafd1e

Browse files
committed
[scramjet/core/fetch] actually dispatch set-cookie cookies to client
1 parent 2dd82c2 commit dbafd1e

File tree

1 file changed

+20
-14
lines changed
  • packages/scramjet/packages/core/src/fetch

1 file changed

+20
-14
lines changed

packages/scramjet/packages/core/src/fetch/index.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ async function doHandleFetch(
162162
parsed,
163163
response.rawHeaders
164164
);
165-
await handleCookies(context, parsed, responseHeaders);
165+
await handleCookies(handler, context, parsed, responseHeaders);
166166

167167
if (isRedirect(response)) {
168168
const redirectUrl = new URL(
@@ -446,24 +446,30 @@ async function handleBlobOrDataUrlFetch(
446446
}
447447

448448
async function handleCookies(
449+
handler: ScramjetFetchHandler,
449450
context: ScramjetFetchContext,
450451
parsed: ScramjetFetchParsed,
451452
responseHeaders: BareHeaders
452453
) {
453454
const maybeHeaders = responseHeaders["set-cookie"] || [];
454-
// if (Array.isArray(maybeHeaders))
455-
// for (const cookie in maybeHeaders) {
456-
// if (client) {
457-
// const promise = swtarget.dispatch(client, {
458-
// scramjet$type: "cookie",
459-
// cookie,
460-
// url: url.href,
461-
// });
462-
// if (destination !== "document" && destination !== "iframe") {
463-
// await promise;
464-
// }
465-
// }
466-
// }
455+
if (Array.isArray(maybeHeaders)) {
456+
for (const cookie of maybeHeaders) {
457+
const promise = handler.sendClientbound("setCookie", {
458+
cookie,
459+
url: parsed.url.href,
460+
});
461+
462+
if (
463+
context.destination !== "document" &&
464+
context.destination !== "iframe"
465+
) {
466+
await promise;
467+
468+
// TODO: fix with proper callback from client
469+
await new Promise((resolve) => setTimeout(resolve, 100));
470+
}
471+
}
472+
}
467473

468474
context.cookieStore.setCookies(
469475
maybeHeaders instanceof Array ? maybeHeaders : [maybeHeaders],

0 commit comments

Comments
 (0)