44 lines
1.5 KiB
TypeScript
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 };
|
|
}; |