desktop/navigation.ts
export function isLocalNavigation(url: string, origin: string) {
try {
const parsed = new URL(url);
return parsed.origin === origin && parsed.pathname === "/";
} catch {
return false;
}
}
export function swipeNavigation(direction: string): "back" | "forward" | undefined {
if (direction === "right") return "back";
if (direction === "left") return "forward";
}
export function isExternalLink(url: string, origin: string) {
try {
const parsed = new URL(url);
return parsed.origin === origin
? parsed.pathname === "/api/oauth/google"
: parsed.protocol === "https:" || parsed.protocol === "http:";
} catch {
return false;
}
}
export function trustedWindowSender(event: { sender: unknown; senderFrame: unknown }, contents: {
mainFrame: unknown; getURL: () => string;
}, origin: string) {
if (event.sender !== contents || event.senderFrame !== contents.mainFrame) return false;
try { const url = new URL(contents.getURL()); return url.origin === origin && url.pathname === "/"; }
catch { return false; }
}