import { protocol } from 'electron'; import { join } from 'path'; import { parse } from 'url'; import { ERROR_PROTOCOL, WEBUI_PROTOCOL } from '~/constants/files'; protocol.registerSchemesAsPrivileged([ { scheme: 'bluevchat', privileges: { bypassCSP: true, secure: true, standard: true, supportFetchAPI: true, allowServiceWorkers: true, corsEnabled: false, }, }, ]); export const registerProtocol = (session: Electron.Session) => { session.protocol.registerFileProtocol( ERROR_PROTOCOL, (request, callback: any) => { const parsed = parse(request.url); if (parsed.hostname === 'network-error') { return callback({ path: join(__dirname, '../static/pages/', `network-error.html`), }); } }, ); if (process.env.NODE_ENV !== 'development') { session.protocol.registerFileProtocol( WEBUI_PROTOCOL, (request, callback: any) => { const parsed = parse(request.url); if (parsed.path === '/') { return callback({ path: join(__dirname, `${parsed.hostname}.html`), }); } callback({ path: join(__dirname, parsed.path) }); }, ); } };