perf: run async operations in parallel in server load functions

This commit is contained in:
Elias Schneider
2025-04-04 11:38:09 +02:00
parent 2f7646105e
commit 1762629596
2 changed files with 22 additions and 19 deletions

View File

@@ -4,23 +4,21 @@ import UserService from '$lib/services/user-service';
import type { LayoutServerLoad } from './$types';
export const load: LayoutServerLoad = async ({ cookies }) => {
const userService = new UserService(cookies.get(ACCESS_TOKEN_COOKIE_NAME));
const appConfigService = new AppConfigService(cookies.get(ACCESS_TOKEN_COOKIE_NAME));
const accessToken = cookies.get(ACCESS_TOKEN_COOKIE_NAME);
const userService = new UserService(accessToken);
const appConfigService = new AppConfigService(accessToken);
const user = await userService
.getCurrent()
.then((user) => user)
.catch(() => null);
const userPromise = userService.getCurrent().catch(() => null);
const appConfigPromise = appConfigService.list().catch((e) => {
console.error(
`Failed to get application configuration: ${e.response?.data.error || e.message}`
);
return null;
});
const [user, appConfig] = await Promise.all([userPromise, appConfigPromise]);
const appConfig = await appConfigService
.list()
.then((config) => config)
.catch((e) => {
console.error(
`Failed to get application configuration: ${e.response?.data.error || e.message}`
);
return null;
});
return {
user,
appConfig

View File

@@ -4,10 +4,15 @@ import WebAuthnService from '$lib/services/webauthn-service';
import type { PageServerLoad } from './$types';
export const load: PageServerLoad = async ({ cookies }) => {
const webauthnService = new WebAuthnService(cookies.get(ACCESS_TOKEN_COOKIE_NAME));
const userService = new UserService(cookies.get(ACCESS_TOKEN_COOKIE_NAME));
const account = await userService.getCurrent();
const passkeys = await webauthnService.listCredentials();
const accessToken = cookies.get(ACCESS_TOKEN_COOKIE_NAME);
const webauthnService = new WebAuthnService(accessToken);
const userService = new UserService(accessToken);
const [account, passkeys] = await Promise.all([
userService.getCurrent(),
webauthnService.listCredentials()
]);
return {
account,
passkeys