Skip to content

Commit 581e162

Browse files
authored
Merge pull request #769 from enkryptcom/feat/provider-names
feat: add provider names to swap
2 parents 93e5180 + 6fa4721 commit 581e162

34 files changed

Lines changed: 855 additions & 242 deletions

File tree

packages/extension/src/libs/background/index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
} from './internal';
2929
import { handlePersistentEvents } from './external';
3030
import SettingsState from '../settings-state';
31+
import { isGeoRestricted } from '../utils/screening';
3132

3233
class BackgroundHandler {
3334
#keyring: KeyRingBase;
@@ -36,6 +37,7 @@ class BackgroundHandler {
3637
#persistentEvents: PersistentEvents;
3738
#domainState: DomainState;
3839
#settingsState: SettingsState;
40+
#geoRestricted: boolean | undefined;
3941

4042
constructor() {
4143
this.#keyring = new KeyRingBase();
@@ -51,6 +53,10 @@ class BackgroundHandler {
5153
[ProviderName.massa]: {},
5254
};
5355
this.#providers = Providers;
56+
this.#geoRestricted = undefined;
57+
isGeoRestricted().then(restricted => {
58+
this.#geoRestricted = restricted;
59+
});
5460
}
5561
async init(): Promise<void> {
5662
await handlePersistentEvents.bind(this)();
@@ -83,6 +89,9 @@ class BackgroundHandler {
8389
method === InternalMethods.newWindowUnload
8490
) {
8591
this.#persistentEvents.deleteEvents(_tabid);
92+
isGeoRestricted().then(restricted => {
93+
this.#geoRestricted = restricted;
94+
});
8695
return {
8796
result: JSON.stringify(true),
8897
};
@@ -97,6 +106,15 @@ class BackgroundHandler {
97106
error: JSON.stringify(getCustomError('Enkrypt: not implemented')),
98107
};
99108
}
109+
if (this.#geoRestricted !== undefined && this.#geoRestricted) {
110+
return {
111+
error: JSON.stringify(
112+
getCustomError(
113+
'Enkrypt: Geo restricted https://www.myetherwallet.com/blocked',
114+
),
115+
),
116+
};
117+
}
100118
const tabInfo = TabInfo(await Browser.tabs.get(_tabid));
101119
if (!this.#tabProviders[_provider][_tabid]) {
102120
const toWindow = (message: string) => {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const isGeoRestricted = async (): Promise<boolean> => {
2+
return fetch('https://partners.mewapi.io/o/ipcomply')
3+
.then(async res => {
4+
if (res.ok) {
5+
const json = await res.json();
6+
return json.isRestricted;
7+
}
8+
return false;
9+
})
10+
.catch(() => false);
11+
};
12+
13+
const walletCache: Record<string, boolean> = {};
14+
const isWalletRestricted = async (walletAddress: string): Promise<boolean> => {
15+
if (walletCache[walletAddress] !== undefined)
16+
return walletCache[walletAddress];
17+
const result = await fetch(
18+
`https://partners.mewapi.io/o/walletscreen?address=${walletAddress}`,
19+
)
20+
.then(async res => {
21+
if (res.ok) {
22+
const { isRestricted } = await res.json();
23+
return isRestricted;
24+
}
25+
return false;
26+
})
27+
.catch(() => false);
28+
walletCache[walletAddress] = result;
29+
return result;
30+
};
31+
32+
export { isGeoRestricted, isWalletRestricted };

packages/extension/src/providers/ethereum/methods/eth_accounts.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ const method: MiddlewareFunction = async function (
2020
if (payload.options && payload.options.domain) {
2121
if (!isInitialized) {
2222
res(null, payload.method === 'eth_coinbase' ? '' : []);
23-
return throttledOpenOnboard();
23+
throttledOpenOnboard();
24+
return;
2425
}
2526
const accountsState = new AccountState();
2627
accountsState

packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@
4343
</div>
4444
</div>
4545

46-
<div v-if="!isApproval && decodedTx" class="provider-verify-transaction__amount">
46+
<div
47+
v-if="!isApproval && decodedTx"
48+
class="provider-verify-transaction__amount"
49+
>
4750
<img :src="decodedTx?.tokenImage || network.icon" />
4851

4952
<div class="provider-verify-transaction__amount-info">
@@ -92,12 +95,20 @@
9295
</div>
9396
</div>
9497

95-
<send-fee-select :in-swap="true" :selected="selectedFee" :fee="gasCostValues[selectedFee]"
96-
@open-popup="toggleSelectFee" />
98+
<send-fee-select
99+
:in-swap="true"
100+
:selected="selectedFee"
101+
:fee="gasCostValues[selectedFee]"
102+
@open-popup="toggleSelectFee"
103+
/>
97104

98105
<div class="provider-verify-transaction__data">
99-
<a class="provider-verify-transaction__data-link" :class="{ open: isOpenData }" @click="toggleData"><span>Show
100-
data</span> <right-chevron /></a>
106+
<a
107+
class="provider-verify-transaction__data-link"
108+
:class="{ open: isOpenData }"
109+
@click="toggleData"
110+
><span>Show data</span> <right-chevron
111+
/></a>
101112

102113
<div v-show="isOpenData" class="provider-verify-transaction__data-text">
103114
<p>Data Hex: {{ decodedTx?.dataHex || '0x' }}</p>
@@ -106,16 +117,31 @@
106117
<p v-if="errorMsg != ''" class="provider-verify-transaction__error">
107118
{{ errorMsg }}
108119
</p>
109-
<transaction-fee-view v-model="isOpenSelectFee" :fees="gasCostValues" :selected="selectedFee" :is-header="true"
110-
is-popup @gas-type-changed="selectFee" />
120+
<transaction-fee-view
121+
v-model="isOpenSelectFee"
122+
:fees="gasCostValues"
123+
:selected="selectedFee"
124+
:is-header="true"
125+
is-popup
126+
@gas-type-changed="selectFee"
127+
/>
111128
</template>
112129

113130
<template #button-left>
114-
<base-button title="Decline" :click="deny" :no-background="true" :disabled="isProcessing" />
131+
<base-button
132+
title="Decline"
133+
:click="deny"
134+
:no-background="true"
135+
:disabled="isProcessing"
136+
/>
115137
</template>
116138

117139
<template #button-right>
118-
<base-button title="Send" :click="approve" :disabled="isProcessing || errorMsg != ''" />
140+
<base-button
141+
title="Send"
142+
:click="approve"
143+
:disabled="isProcessing || errorMsg != ''"
144+
/>
119145
</template>
120146
</common-popup>
121147
</template>
@@ -314,11 +340,11 @@ const approve = async () => {
314340
to: tx.to
315341
? tx.to.toString()
316342
: bufferToHex(
317-
generateAddress(
318-
tx.getSenderAddress().toBytes(),
319-
bigIntToBytes(tx.nonce),
343+
generateAddress(
344+
tx.getSenderAddress().toBytes(),
345+
bigIntToBytes(tx.nonce),
346+
),
320347
),
321-
),
322348
isIncoming: tx.getSenderAddress().toString() === tx.to?.toString(),
323349
network: network.value.name,
324350
status: ActivityStatus.pending,

0 commit comments

Comments
 (0)