Skip to content

Commit 1b03e9d

Browse files
committed
refactor: better selected loaders logic
1 parent 0bc9bc5 commit 1b03e9d

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

packages/qwik-router/src/middleware/request-handler/resolve-request-handlers.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import type {
3838
RequestHandler,
3939
} from './types';
4040
import { IsQData, QDATA_JSON } from './user-response';
41+
import { _UNINITIALIZED } from 'packages/qwik/core-internal';
4142

4243
export const resolveRequestHandlers = (
4344
serverPlugins: RouteModule[] | undefined,
@@ -244,19 +245,11 @@ export function loadersMiddleware(routeLoaders: LoaderInternal[]): RequestHandle
244245
let currentLoaders: LoaderInternal[] = [];
245246
if (requestEv.query.has(QLOADER_KEY)) {
246247
const selectedLoaderIds = requestEv.query.getAll(QLOADER_KEY);
247-
const skippedLoaders: LoaderInternal[] = [];
248248
for (const loader of routeLoaders) {
249249
if (selectedLoaderIds.includes(loader.__id)) {
250250
currentLoaders.push(loader);
251-
} else {
252-
skippedLoaders.push(loader);
253251
}
254252
}
255-
256-
// mark skipped loaders as null
257-
for (const skippedLoader of skippedLoaders) {
258-
loaders[skippedLoader.__id] = null;
259-
}
260253
} else {
261254
currentLoaders = routeLoaders;
262255
}
@@ -600,13 +593,16 @@ export async function renderQData(requestEv: RequestEvent) {
600593
requestEv.request.headers.forEach((value, key) => (requestHeaders[key] = value));
601594
requestEv.headers.set('Content-Type', 'application/json; charset=utf-8');
602595

603-
const allLoaders = getRequestLoaders(requestEv);
604-
const loaders: Record<string, unknown> = {};
605-
for (const loaderId in allLoaders) {
606-
const loader = allLoaders[loaderId];
607-
if (loader !== null) {
608-
loaders[loaderId] = loader;
596+
let loaders = getRequestLoaders(requestEv);
597+
const selectedLoaderIds = requestEv.query.getAll(QLOADER_KEY);
598+
599+
if (selectedLoaderIds.length > 0) {
600+
const selectedLoaders: Record<string, unknown> = {};
601+
for (const loaderId of selectedLoaderIds) {
602+
const loader = loaders[loaderId];
603+
selectedLoaders[loaderId] = loader;
609604
}
605+
loaders = selectedLoaders;
610606
}
611607

612608
const qData: ClientPageData = {

packages/qwik-router/src/runtime/src/types.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,16 @@ export interface EndpointResponse {
325325
action?: string;
326326
}
327327

328-
export interface ClientPageData
329-
extends Omit<EndpointResponse, 'status' | 'loadersSerializationStrategy'> {
330-
status: number;
328+
export interface ClientPageData extends Omit<EndpointResponse, 'loadersSerializationStrategy'> {
331329
href: string;
332330
redirect?: string;
333331
isRewrite?: boolean;
334332
}
335333

334+
export interface LoaderData {
335+
loaders: Record<string, unknown>;
336+
}
337+
336338
/** @public */
337339
export type StaticGenerateHandler = ({
338340
env,

0 commit comments

Comments
 (0)