Files
EMLy/frontend/src/routes/(app)/+page.ts
2026-02-04 23:41:16 +01:00

44 lines
1.5 KiB
TypeScript

import { redirect } from '@sveltejs/kit';
import type { PageLoad } from './$types';
import { GetViewerData, GetStartupFile, ReadEML, ReadMSG } from '$lib/wailsjs/go/main/App';
import DOMPurify from 'dompurify';
import type { internal } from '$lib/wailsjs/go/models';
export const load: PageLoad = async () => {
try {
const viewerData = await GetViewerData();
if (viewerData) {
if (viewerData.imageData) {
throw redirect(302, "/image");
}
if (viewerData.pdfData) {
throw redirect(302, "/pdf");
}
}
// Check if opened with a file
const startupFile = await GetStartupFile();
if (startupFile) {
let emlContent: internal.EmailData;
if (startupFile.toLowerCase().endsWith(".msg")) {
emlContent = await ReadMSG(startupFile, true);
} else {
emlContent = await ReadEML(startupFile);
}
if (emlContent) {
emlContent.body = DOMPurify.sanitize(emlContent.body || "");
return { email: emlContent };
}
}
} catch (e) {
// If it's a redirect, re-throw it so SvelteKit handles it
if ((e as any)?.status === 302 || (e as any)?.status === 307 || (e as any)?.status === 303 || (e as any)?.location) {
throw e;
}
console.error("Error in load function:", e);
}
return { email: null };
};