diff --git a/electron/log.js b/electron/log.js index 95eed588..72404d26 100644 --- a/electron/log.js +++ b/electron/log.js @@ -4,7 +4,7 @@ import util from 'util'; import fs from 'fs-extra'; import path from 'path'; import EnvPaths from 'env-paths'; -const envPaths = EnvPaths.default('plebbit', { suffix: false }); +const envPaths = EnvPaths('plebbit', { suffix: false }); // previous version created a file instead of folder // we should remove this at some point diff --git a/electron/main.js b/electron/main.js index 097d4a84..12705efa 100644 --- a/electron/main.js +++ b/electron/main.js @@ -1,7 +1,9 @@ import './log.js'; -import { app, BrowserWindow, Menu, MenuItem, Tray, screen as electronScreen, shell, dialog, nativeTheme } from 'electron'; +import { app, BrowserWindow, Menu, MenuItem, Tray, screen as electronScreen, shell, dialog, nativeTheme, ipcMain } from 'electron'; import isDev from 'electron-is-dev'; +import fs from 'fs'; import path from 'path'; +import EnvPaths from 'env-paths'; import startIpfs from './start-ipfs.js'; import './start-plebbit-rpc.js'; import { URL, fileURLToPath } from 'node:url'; @@ -19,6 +21,11 @@ startIpfs.onError = (error) => { } }; +// send plebbit rpc auth key to renderer +const plebbitDataPath = !isDev ? EnvPaths('plebbit', { suffix: false }).data : path.join(dirname, '..', '.plebbit'); +const plebbitRpcAuthKey = fs.readFileSync(path.join(plebbitDataPath, 'auth-key'), 'utf8'); +ipcMain.on('get-plebbit-rpc-auth-key', (event) => event.reply('plebbit-rpc-auth-key', plebbitRpcAuthKey)); + // use common user agent instead of electron so img, video, audio, iframe elements don't get blocked // https://www.whatismybrowser.com/guides/the-latest-version/chrome // https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome diff --git a/electron/preload.js b/electron/preload.js index dee2ae9f..dbfd7602 100644 --- a/electron/preload.js +++ b/electron/preload.js @@ -1,4 +1,4 @@ -const { contextBridge } = require('electron'); +const { contextBridge, ipcRenderer } = require('electron'); // dev uses http://localhost, prod uses file://...index.html const isDev = window.location.protocol === 'http:'; @@ -10,5 +10,9 @@ const defaultPlebbitOptions = { contextBridge.exposeInMainWorld('defaultPlebbitOptions', defaultPlebbitOptions); contextBridge.exposeInMainWorld('defaultMediaIpfsGatewayUrl', 'http://localhost:6473'); +// receive plebbit rpc auth key from main +ipcRenderer.on('plebbit-rpc-auth-key', (event, plebbitRpcAuthKey) => contextBridge.exposeInMainWorld('plebbitRpcAuthKey', plebbitRpcAuthKey)); +ipcRenderer.send('get-plebbit-rpc-auth-key'); + // uncomment for logs // localStorage.debug = 'plebbit-js:*,plebbit-react-hooks:*,seedit:*' diff --git a/electron/start-ipfs.js b/electron/start-ipfs.js index 787bc15a..cf447735 100644 --- a/electron/start-ipfs.js +++ b/electron/start-ipfs.js @@ -8,7 +8,7 @@ import tcpPortUsed from 'tcp-port-used'; import EnvPaths from 'env-paths'; import { fileURLToPath } from 'url'; const dirname = path.join(path.dirname(fileURLToPath(import.meta.url))); -const envPaths = EnvPaths.default('plebbit', { suffix: false }); +const envPaths = EnvPaths('plebbit', { suffix: false }); // use this custom function instead of spawnSync for better logging // also spawnSync might have been causing crash on start on windows diff --git a/electron/start-plebbit-rpc.js b/electron/start-plebbit-rpc.js index 5a4e7535..248929ee 100644 --- a/electron/start-plebbit-rpc.js +++ b/electron/start-plebbit-rpc.js @@ -7,7 +7,7 @@ import path from 'path'; import { fileURLToPath } from 'url'; import isDev from 'electron-is-dev'; const dirname = path.join(path.dirname(fileURLToPath(import.meta.url))); -const envPaths = EnvPaths.default('plebbit', { suffix: false }); +const envPaths = EnvPaths('plebbit', { suffix: false }); // PLEB, always run plebbit rpc on this port so all clients can use it const port = 9138;