Skip to content

Commit 15673a7

Browse files
authored
Merge pull request #1530 from Conflux-Chain/dev
release 2.8.1
2 parents 5aa069c + 0cffbc1 commit 15673a7

File tree

245 files changed

+1071
-627
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

245 files changed

+1071
-627
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "helios",
33
"private": true,
4-
"version": "2.8.0",
4+
"version": "2.8.1",
55
"workspaces": [
66
"websites/*",
77
"packages/doc-ui/*",

packages/account/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fluent-wallet/account",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"type": "module",
55
"main": "index.js",
66
"dependencies": {

packages/addr-by-network/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@fluent-wallet/addr-by-network",
33
"type": "module",
44
"main": "index.js",
5-
"version": "0.0.4",
5+
"version": "0.0.5",
66
"dependencies": {
77
"@fluent-wallet/account": "workspace:packages/account",
88
"@fluent-wallet/base32-address": "workspace:packages/base32-address",

packages/background/package.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "helios-background",
3-
"version": "0.0.33",
3+
"version": "0.0.36",
44
"type": "module",
55
"main": "src/index.js",
66
"private": true,
@@ -58,7 +58,7 @@
5858
"@fluent-wallet/cfx_sign-tx-with-ledger-nano-s": "workspace:*",
5959
"@fluent-wallet/cfx_sign-typed-data_v4": "workspace:packages/rpcs/cfx_signTypedData_v4",
6060
"@fluent-wallet/consts": "workspace:packages/consts",
61-
"@fluent-wallet/db": "1.0.78",
61+
"@fluent-wallet/db": "1.0.79",
6262
"@fluent-wallet/eth_accounts": "workspace:packages/rpcs/eth_accounts",
6363
"@fluent-wallet/eth_block-number": "workspace:packages/rpcs/eth_blockNumber",
6464
"@fluent-wallet/eth_call": "workspace:packages/rpcs/eth_call",
@@ -133,6 +133,8 @@
133133
"@fluent-wallet/wallet_get-pending-auth-request": "workspace:packages/rpcs/wallet_getPendingAuthRequest",
134134
"@fluent-wallet/wallet_get-permissions": "workspace:packages/rpcs/wallet_getPermissions",
135135
"@fluent-wallet/wallet_get-preferences": "workspace:*",
136+
"@fluent-wallet/wallet_get-side-panel-enabled": "workspace:*",
137+
"@fluent-wallet/wallet_get-side-panel-supported": "workspace:*",
136138
"@fluent-wallet/wallet_handle-unfinished-cfx-tx": "workspace:*",
137139
"@fluent-wallet/wallet_handle-unfinished-eth-tx": "workspace:*",
138140
"@fluent-wallet/wallet_handle-unfinished-txs": "workspace:*",
@@ -158,6 +160,8 @@
158160
"@fluent-wallet/wallet_set-current-account": "workspace:packages/rpcs/wallet_setCurrentAccount",
159161
"@fluent-wallet/wallet_set-current-network": "workspace:packages/rpcs/wallet_setCurrentNetwork",
160162
"@fluent-wallet/wallet_set-preferences": "workspace:*",
163+
"@fluent-wallet/wallet_set-side-panel-behavior": "workspace:*",
164+
"@fluent-wallet/wallet_set-side-panel-enabled": "workspace:*",
161165
"@fluent-wallet/wallet_unlock": "workspace:packages/rpcs/wallet_unlock",
162166
"@fluent-wallet/wallet_unwatch-asset": "workspace:packages/rpcs/wallet_unwatchAsset",
163167
"@fluent-wallet/wallet_update-account": "workspace:packages/rpcs/wallet_updateAccount",

packages/background/src/rpc-engine-opts.js

+8
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ import * as ethGetBlockByHash from '@fluent-wallet/eth_get-block-by-hash'
3131
import * as ethGetBlockByNumber from '@fluent-wallet/eth_get-block-by-number'
3232
import * as walletSetPreferences from '@fluent-wallet/wallet_set-preferences'
3333
import * as walletGetPreferences from '@fluent-wallet/wallet_get-preferences'
34+
import * as walletSetSidePanelBehavior from '@fluent-wallet/wallet_set-side-panel-behavior'
35+
import * as walletSetSidePanelEnabled from '@fluent-wallet/wallet_set-side-panel-enabled'
36+
import * as walletGetSidePanelEnabled from '@fluent-wallet/wallet_get-side-panel-enabled'
37+
import * as walletGetSidePanelSupported from '@fluent-wallet/wallet_get-side-panel-supported'
3438
import * as walletUpdateNetwork from '@fluent-wallet/wallet_update-network'
3539
import * as cfxGetMaxGasLimit from '@fluent-wallet/cfx_get-max-gas-limit'
3640
import * as walletMetadataForPopup from '@fluent-wallet/wallet_metadata-for-popup'
@@ -367,6 +371,10 @@ export const rpcEngineOpts = {
367371
walletGetFluentMetadata,
368372
walletGetPreferences,
369373
walletSetPreferences,
374+
walletGetSidePanelEnabled,
375+
walletGetSidePanelSupported,
376+
walletSetSidePanelBehavior,
377+
walletSetSidePanelEnabled,
370378
walletUpsertMemo,
371379
walletDeleteMemo,
372380
walletGetBlockTime,

packages/background/src/service-worker.js

+27
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ async function initApp() {
137137
() => request({method: 'wallet_cleanupTx', _rpcStack: ['frombg']}),
138138
1000 * 60 * 60,
139139
)
140+
// set panel behavior
141+
request({method: 'wallet_setSidePanelBehavior', _rpcStack: ['frombg']})
140142
}
141143

142144
if (isManifestV3) {
@@ -147,3 +149,28 @@ async function initApp() {
147149
}
148150

149151
initApp()
152+
153+
let count = 0
154+
const registerInPageContentScript = async () => {
155+
count++
156+
try {
157+
await chrome.scripting.registerContentScripts([
158+
{
159+
id: 'fluent-inpage',
160+
matches: ['file://*/*', 'http://*/*', 'https://*/*'],
161+
js: ['inpage.js'],
162+
runAt: 'document_start',
163+
world: 'MAIN',
164+
allFrames: true,
165+
},
166+
])
167+
} catch (err) {
168+
console.error('registerInPageContentScript failed:', err)
169+
if (count < 3) {
170+
// retry
171+
registerInPageContentScript()
172+
}
173+
}
174+
}
175+
176+
registerInPageContentScript()

packages/base32-address/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@fluent-wallet/base32-address",
33
"type": "module",
44
"main": "index.js",
5-
"version": "0.1.4",
5+
"version": "0.1.5",
66
"dependencies": {
77
"@fluent-wallet/account": "workspace:packages/account",
88
"@fluent-wallet/consts": "workspace:packages/consts",

packages/browser-extension/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "browser-extension",
3-
"version": "0.0.33",
3+
"version": "0.0.40",
44
"main": "index.js",
55
"author": "yqrashawn <namy.19@gmail.com>",
66
"license": "MIT",

packages/consts/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const TESTNET = 'testnet'
88
export const LOCALHOST = 'localhost'
99
export const CUSTOM = 'custom'
1010
export const EXT_STORAGE = 'ext-storage'
11+
export const SIDE_PANEL_KEY = 'side-panel'
1112
export const NULL_HEX_ADDRESS = '0x0000000000000000000000000000000000000000'
1213
export const ADMINE_CONTROL_HEX_ADDRESS =
1314
'0x0888000000000000000000000000000000000000'

packages/consts/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"name": "@fluent-wallet/consts",
33
"type": "module",
44
"main": "index.js",
5-
"version": "0.0.24"
5+
"version": "0.0.25"
66
}

packages/content-script/indexTemplate.js

+5-20
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import browser from 'webextension-polyfill'
22
import {stream} from '@thi.ng/rstream'
33
import {getSiteMetadata} from '@fluent-wallet/site-metadata'
44

5-
let INPAGE_INJECTED = false
6-
75
function _retry() {
86
let retryTimeout = 100
97
if (CONNECT_RETRY_COUNT >= 10) {
@@ -23,22 +21,6 @@ function _retry() {
2321
setTimeout(setup, retryTimeout)
2422
}
2523

26-
function injectInpage(content) {
27-
try {
28-
const container = document.head || document.documentElement
29-
const scriptTag = document.createElement('script')
30-
scriptTag.setAttribute('async', 'false')
31-
if (content) scriptTag.textContent = content
32-
else scriptTag.src = browser.runtime.getURL('inpage.js')
33-
container.insertBefore(scriptTag, container.children[0])
34-
container.removeChild(scriptTag)
35-
INPAGE_INJECTED = true
36-
registerSite()
37-
} catch (error) {
38-
console.error('Fluent Wallet: Provider injection failed.', error)
39-
}
40-
}
41-
4224
let CONNECT_RETRY_COUNT = 0
4325
let s
4426

@@ -91,6 +73,10 @@ function setup() {
9173
typeof e.data.msg !== 'object'
9274
)
9375
return
76+
if (e.data.msg.event === '__INPAGE_INJECTED__') {
77+
registerSite()
78+
return
79+
}
9480
if (!e.data.msg.method) return
9581
if (e.data.msg.jsonrpc !== '2.0') return
9682
if (!Number.isInteger(e.data.msg.id)) return
@@ -125,7 +111,6 @@ function setup() {
125111
)
126112
})
127113

128-
if (INPAGE_INJECTED) registerSite()
114+
registerSite()
129115
}
130-
injectInpage()
131116
setup()

packages/content-script/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"main": "index.js",
55
"type": "module",
6-
"version": "1.0.3",
6+
"version": "1.0.4",
77
"dependencies": {
88
"@fluent-wallet/site-metadata": "workspace:packages/site-metadata",
99
"@thi.ng/rstream": "6.0.21",

packages/contract-method-name/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@fluent-wallet/contract-method-name",
33
"type": "module",
4-
"version": "2.0.2",
4+
"version": "2.0.3",
55
"main": "index.js",
66
"dependencies": {
77
"@ethersproject/abi": "5.6.3",

packages/db/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fluent-wallet/db",
3-
"version": "1.0.78",
3+
"version": "1.0.79",
44
"main": "index.js",
55
"type": "module",
66
"files": [

packages/detect-address-type/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"type": "module",
44
"main": "index.js",
55
"packageManager": "yarn@3.0.1",
6-
"version": "0.0.3",
6+
"version": "0.0.4",
77
"dependencies": {
88
"@fluent-wallet/base32-address": "workspace:packages/base32-address",
99
"@fluent-wallet/checks": "workspace:packages/checks"

packages/did/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@fluent-wallet/did",
33
"main": "index.js",
44
"type": "module",
5-
"version": "0.0.5",
5+
"version": "0.0.6",
66
"dependencies": {
77
"@ensdomains/eth-ens-namehash": "2.0.15",
88
"@fluent-wallet/base32-address": "workspace:packages/base32-address",

packages/estimate-tx/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"type": "module",
44
"main": "index.js",
55
"packageManager": "yarn@3.0.1",
6-
"version": "0.2.5",
6+
"version": "0.2.6",
77
"dependencies": {
88
"@fluent-wallet/consts": "workspace:*",
99
"@fluent-wallet/detect-address-type": "workspace:packages/detect-address-type",

packages/inpage/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "helios-inpage",
33
"type": "module",
4-
"version": "4.0.5",
4+
"version": "4.0.7",
55
"main": "index.js",
66
"author": "yqrashawn <namy.19@gmail.com>",
77
"private": true,

packages/inpage/setup-inpage-provider.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {rpcStream} from '@fluent-wallet/extension-runtime/rpc-stream.js'
22
import {initProvider} from '@fluent-wallet/provider-api'
3-
import {takeOver} from './take-over-portal'
43
import {announceProvider} from './eip-6963'
54
import {v4 as uuid} from 'uuid'
65

@@ -69,6 +68,10 @@ function setupProvider() {
6968
location.origin,
7069
)
7170

71+
post({
72+
event: '__INPAGE_INJECTED__',
73+
})
74+
7275
const {send: sendToBg, stream} = rpcStream({
7376
postMessage: post,
7477
onMessage: {
@@ -90,17 +93,17 @@ function setupProvider() {
9093
})
9194

9295
window.fluent = PROVIDER
93-
if (!window.ethereum) window.ethereum = PROVIDER
9496
Object.defineProperty(window, 'conflux', {value: PROVIDER, writable: false})
95-
takeOver(PROVIDER, 'cfx')
96-
97-
if (window.localStorage.getItem(FLUENT_OVERRIDE_WINDOW_DOT_ETHEREUM)) {
97+
if (
98+
!window.ethereum ||
99+
window.localStorage.getItem(FLUENT_OVERRIDE_WINDOW_DOT_ETHEREUM)
100+
) {
98101
try {
99102
Object.defineProperty(window, 'ethereum', {
100103
value: PROVIDER,
101104
writable: false,
105+
configurable: false,
102106
})
103-
takeOver(PROVIDER, 'eth')
104107
} catch (error) {
105108
console.log('Failed to override window.ethereum', error)
106109
}

packages/inpage/setup-inpage-provider.test.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import {expect, describe, it, vi} from 'vitest'
1+
import {expect, describe, it, vi, beforeEach} from 'vitest'
22
import {EIP6963EventNames} from './eip-6963.js'
3+
4+
beforeEach(async () => {
5+
window.ethereum = 1
6+
})
7+
38
describe('inpage', () => {
49
describe('setupProvider', () => {
510
it('should setup the provider on window.conflux', async () => {
@@ -16,9 +21,9 @@ describe('inpage', () => {
1621
expect(eventNames[1]).toBe(EIP6963EventNames.Request)
1722
expect(window.conflux).toBeDefined()
1823
})
19-
24+
})
25+
describe('setupProvider', () => {
2026
it('should not setup the provider on window.ethereum when already defined', async () => {
21-
window.ethereum = 1
2227
expect(window.ethereum).toBe(1)
2328
await import('./index.js')
2429
expect(window.ethereum).toBe(1)

packages/inpage/take-over-portal.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ function _takeOverEthereum(PROVIDER, resolve) {
2626
export async function takeOver(PROVIDER, type = 'cfx') {
2727
if (!PROVIDER) return
2828
const takeOverFn = type === 'cfx' ? _takeOverConflux : _takeOverEthereum
29-
return await new Promise(resolve => {
30-
TakeOverInterval[type] = setInterval(
31-
() => takeOverFn(PROVIDER, resolve),
32-
50,
33-
)
29+
return await new Promise((resolve, reject) => {
30+
TakeOverInterval[type] = setInterval(() => {
31+
try {
32+
takeOverFn(PROVIDER, resolve)
33+
} catch (error) {
34+
if (error?.message?.includes('Cannot redefine property')) {
35+
clearInterval(TakeOverInterval[type])
36+
reject(error)
37+
}
38+
}
39+
}, 50)
3440
})
3541
}
3642

packages/ledger/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@fluent-wallet/ledger",
33
"type": "module",
44
"main": "index.js",
5-
"version": "0.1.1",
5+
"version": "0.1.2",
66
"dependencies": {
77
"@fluent-wallet/base32-address": "workspace:packages/base32-address",
88
"@fluent-wallet/hw-app-conflux": "0.1.1",

packages/manifest/manifestv3.json

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@
6262
"default_title": "Fluent",
6363
"default_popup": "popup.html"
6464
},
65+
"side_panel": {
66+
"default_path": "sidePanel.html"
67+
},
6568
"content_scripts": [
6669
{
6770
"matches": ["file://*/*", "http://*/*", "https://*/*"],
@@ -78,7 +81,9 @@
7881
"unlimitedStorage",
7982
"clipboardWrite",
8083
"tabs",
84+
"scripting",
8185
"activeTab",
86+
"sidePanel",
8287
"notifications"
8388
],
8489
"host_permissions": [

packages/popup/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"private": true,
33
"name": "helios-popup",
44
"type": "module",
5-
"version": "0.1.15",
5+
"version": "0.1.19",
66
"main": "index.js",
77
"author": "yqrashawn <namy.19@gmail.com>",
88
"license": "MIT",

0 commit comments

Comments
 (0)