diff --git a/src/backend/extension/importer/index.ts b/src/backend/extension/importer/index.ts index dc76a64a1..c62feeee8 100644 --- a/src/backend/extension/importer/index.ts +++ b/src/backend/extension/importer/index.ts @@ -9,7 +9,11 @@ export const initExtension = async function (api: HyperPlayAPI) { try { const extensionImporter = await import('@hyperplay/extension-importer') const isInitialized = store.get('isInitialized', false) - extensionImporter.initExtension(api, getInjectedProviderSession(), isInitialized) + extensionImporter.initExtension( + api, + getInjectedProviderSession(), + isInitialized + ) } catch (err) { logError(`Error initializing extension ${err}`, LogPrefix.HyperPlay) } diff --git a/src/backend/extension/provider/index.ts b/src/backend/extension/provider/index.ts index ce31a90fe..3b3bbcffa 100644 --- a/src/backend/extension/provider/index.ts +++ b/src/backend/extension/provider/index.ts @@ -22,7 +22,7 @@ initExtensionProvider() providerRequests.on('request', (method, ...args) => { console.log('sending proivder request to injected browser window') const win = getInjectedBrowserWindow() - if (win === null){ + if (win === null) { throw 'tried to send a provider request to injected provider browser window but it is not initialized yet!' } win.webContents.send(method, ...args) diff --git a/src/backend/injected_provider_window.ts b/src/backend/injected_provider_window.ts index 549eb50a8..d6eaacd76 100644 --- a/src/backend/injected_provider_window.ts +++ b/src/backend/injected_provider_window.ts @@ -1,6 +1,6 @@ -import { app, BrowserWindow, session } from 'electron'; -import { publicDir } from './constants'; -import path from 'path'; +import { app, BrowserWindow, session } from 'electron' +import { publicDir } from './constants' +import path from 'path' let injectedBrowserWindow: BrowserWindow | null = null @@ -11,32 +11,32 @@ export const getInjectedBrowserWindow = () => { let injectedProviderSession: Electron.Session | null = null export const getInjectedProviderSession = () => { - if (injectedProviderSession === null){ - injectedProviderSession = session.fromPartition('persist:injectedProvider') - } - return injectedProviderSession + if (injectedProviderSession === null) { + injectedProviderSession = session.fromPartition('persist:injectedProvider') + } + return injectedProviderSession } -export function createInjectedProviderWindow(){ - const sessionForInjectedProviderWindow = getInjectedProviderSession() - injectedBrowserWindow = new BrowserWindow({ - show: false, - webPreferences: { - webviewTag: true, - contextIsolation: true, - nodeIntegration: true, - webSecurity: app.isPackaged, - session: sessionForInjectedProviderWindow, - preload: path.join(__dirname, '../preload/preload.js'), - } - }) +export function createInjectedProviderWindow() { + const sessionForInjectedProviderWindow = getInjectedProviderSession() + injectedBrowserWindow = new BrowserWindow({ + show: false, + webPreferences: { + webviewTag: true, + contextIsolation: true, + nodeIntegration: true, + webSecurity: app.isPackaged, + session: sessionForInjectedProviderWindow, + preload: path.join(__dirname, '../preload/preload.js') + } + }) - const devAppUrl = 'http://localhost:5173/?view=InjectedProviderApp' - const prodAppUrl = `file://${path.join( - publicDir, - '../build/index.html?view=InjectedProviderApp' - )}` - const url = app.isPackaged ? prodAppUrl : devAppUrl - injectedBrowserWindow.loadURL(url) - return injectedBrowserWindow + const devAppUrl = 'http://localhost:5173/?view=InjectedProviderApp' + const prodAppUrl = `file://${path.join( + publicDir, + '../build/index.html?view=InjectedProviderApp' + )}` + const url = app.isPackaged ? prodAppUrl : devAppUrl + injectedBrowserWindow.loadURL(url) + return injectedBrowserWindow } diff --git a/src/backend/main.ts b/src/backend/main.ts index d99524422..56c2b96b1 100644 --- a/src/backend/main.ts +++ b/src/backend/main.ts @@ -470,7 +470,10 @@ if (!gotTheLock) { createInjectedProviderWindow() - const providerPreloadPath = path.join(__dirname, '../preload/providerPreload.js') + const providerPreloadPath = path.join( + __dirname, + '../preload/providerPreload.js' + ) // inject window.ethereum into the main window and the overlay window session.defaultSession.setPreloads([providerPreloadPath]) @@ -2121,4 +2124,3 @@ ipcMain.handle('getHyperPlayListings', async () => { */ import './storeManagers/legendary/eos_overlay/ipc_handler' - diff --git a/src/backend/proxy/providerPreload.ts b/src/backend/proxy/providerPreload.ts index 0d522ce4a..adbbfb2d3 100644 --- a/src/backend/proxy/providerPreload.ts +++ b/src/backend/proxy/providerPreload.ts @@ -39,14 +39,14 @@ const listenToRendererCalls = ( } let prevAccounts: string[] = [] ipcRenderer[fxn]('providerApi' + topic, async (ev: any, ...args: any[]) => { - if (topic === 'accountsChanged' && args.length > 0){ + if (topic === 'accountsChanged' && args.length > 0) { const newAccts = args[0] /** * Our current implementation causes an infinite loop with wagmi here https://github.com/wevm/wagmi/blob/651aa72827a79f38a89f5a64209592816c8e6492/packages/connectors/src/metaMask.ts#L428-L452 * since we emit and "accountsChanged" event after a "eth_requestAccounts" request in our provider implementation. This causes onConnect to fire again in the MM connector. * @TODO fix our provider implementation so "accountsChanged" is only emitted when accounts do change */ - if (JSON.stringify(newAccts) === JSON.stringify(prevAccounts)){ + if (JSON.stringify(newAccts) === JSON.stringify(prevAccounts)) { return } prevAccounts = newAccts diff --git a/src/frontend/ExtensionManager/components/ExtensionContents/index.tsx b/src/frontend/ExtensionManager/components/ExtensionContents/index.tsx index b71bb4f47..6a8c2f525 100644 --- a/src/frontend/ExtensionManager/components/ExtensionContents/index.tsx +++ b/src/frontend/ExtensionManager/components/ExtensionContents/index.tsx @@ -38,7 +38,7 @@ export const ExtensionContents = observer(() => { * so we change the key to get it to reload when the url changes */ key={state} - partition='persist:injectedProvider' + partition="persist:injectedProvider" > ) }) diff --git a/src/frontend/InjectedProviderApp.tsx b/src/frontend/InjectedProviderApp.tsx index 188c404e9..01870b028 100644 --- a/src/frontend/InjectedProviderApp.tsx +++ b/src/frontend/InjectedProviderApp.tsx @@ -2,7 +2,10 @@ import React from 'react' import InjectedProviderHandler from './state/InjectedProviderHandler' import { observer } from 'mobx-react-lite' -export default observer(function(){ - console.log('eth listeners bound: ', InjectedProviderHandler.ethereumListenersBound) - return
-}) \ No newline at end of file +export default observer(function () { + console.log( + 'eth listeners bound: ', + InjectedProviderHandler.ethereumListenersBound + ) + return
+}) diff --git a/src/frontend/ViewManager.tsx b/src/frontend/ViewManager.tsx index 75a07525f..6a1648d0b 100644 --- a/src/frontend/ViewManager.tsx +++ b/src/frontend/ViewManager.tsx @@ -9,7 +9,7 @@ const Views = { InjectedProviderApp: } -type Keys = keyof T; +type Keys = keyof T type URLSearchParamsProxy = URLSearchParams & { view?: Keys & 'BrowserGame' diff --git a/src/frontend/screens/MetaMaskHome/index.tsx b/src/frontend/screens/MetaMaskHome/index.tsx index 721fe360c..05692a280 100644 --- a/src/frontend/screens/MetaMaskHome/index.tsx +++ b/src/frontend/screens/MetaMaskHome/index.tsx @@ -25,7 +25,7 @@ const MetaMaskHome = function ({ path = 'home.html' }: MetaMaskHomeProps) { )}`} allowpopups={trueAsStr} key={'metamask_home' + path + hash} - partition='persist:injectedProvider' + partition="persist:injectedProvider" /> diff --git a/src/frontend/store/index.tsx b/src/frontend/store/index.tsx index 24c0ed1a0..60fb0d92d 100644 --- a/src/frontend/store/index.tsx +++ b/src/frontend/store/index.tsx @@ -13,9 +13,9 @@ const StoreController = () => { for await (const storeKey of storeKeys) { try { const store = (await stores[storeKey]()).default - + await store.init?.() - } catch(err){ + } catch (err) { console.error(`Error initializing store ${storeKey} ${err}`) } }