Skip to content

Commit

Permalink
feat: establish channel between background and content
Browse files Browse the repository at this point in the history
  • Loading branch information
olistic committed Aug 28, 2022
1 parent c18a9a6 commit 76b8de4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
9 changes: 9 additions & 0 deletions packages/example/extension/src/background/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CONTENT_PORT_NAME, createChannel, createPortTransport, serializeMessage } from '../messages';
import { generateMnemonic } from './wallet';

chrome.runtime.onInstalled.addListener((details) => {
Expand All @@ -6,3 +7,11 @@ chrome.runtime.onInstalled.addListener((details) => {
chrome.storage.local.set({ mnemonic });
}
});

chrome.runtime.onConnect.addListener((port) => {
if (port.name === CONTENT_PORT_NAME) {
const transport = createPortTransport(port);

const channel = createChannel(transport);
}
});
10 changes: 10 additions & 0 deletions packages/example/extension/src/content/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
import { CONTENT_PORT_NAME } from '../messages';
import { inject } from './utils';

const windowScript = new URL('./window.ts', import.meta.url);
inject(windowScript.href);

// Proxy messages between website and background process.
const port = chrome.runtime.connect({ name: CONTENT_PORT_NAME });
window.addEventListener('message', (event) => {
port.postMessage(event.data);
});
port.onMessage.addListener((message) => {
window.postMessage(message);
});
10 changes: 9 additions & 1 deletion packages/example/extension/src/content/window.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
import type { WalletsWindow } from '@wallet-standard/standard';

import type { Channel } from '../messages';
import { createChannel, createWindowTransport } from '../messages';
import type { MultiChainWalletAccount } from './multiChainWallet';
import { MultiChainWallet } from './multiChainWallet';

declare const window: WalletsWindow<MultiChainWalletAccount>;
declare const window: WalletsWindow<MultiChainWalletAccount> & {
_channel: Channel;
};

const transport = createWindowTransport(window);
const channel = createChannel(transport);
window._channel = channel;

function register(): void {
window.navigator.wallets = window.navigator.wallets || [];
Expand Down

0 comments on commit 76b8de4

Please sign in to comment.