import type { MouseEvent } from 'react'; import { baseURI, serverURL } from '../../externals'; /** * Open an external URLs: specifically for a electron / browser case * If electron: ask main process to call a new browser window * If browser: open in new tab */ export function openLink(url: string) { if (window.process?.type === 'renderer') { window.ipcRenderer.send('send-to-link', url); } else { window.open(url); } } /** * Handles opening external links * serverUrl and baseURI are used for testing */ export function handleLinks( event: MouseEvent, location: string, externalServerUrl: string = serverURL, externalBaseURI: string = baseURI, ) { // we handle the link manually event.preventDefault(); const destination = new URL(externalServerUrl); destination.pathname = externalBaseURI ? `${externalBaseURI}/${location}` : location; openLink(destination.toString()); } export function linkToOtherHost( host: string, path?: string, externalServerUrl: string = serverURL, externalBaseURI: string = baseURI, ) { const destination = new URL(externalServerUrl); destination.hostname = host; if (path) { destination.pathname = externalBaseURI ? `${externalBaseURI}/${path}` : path; } return destination.toString(); }