Skip to content

Commit

Permalink
Merge branch 'main' into feat/safari-support
Browse files Browse the repository at this point in the history
  • Loading branch information
kvhnuke committed Apr 4, 2024
2 parents 7570172 + f8a8afa commit 4603ad5
Show file tree
Hide file tree
Showing 26 changed files with 277 additions and 79 deletions.
2 changes: 1 addition & 1 deletion packages/extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@enkryptcom/extension",
"version": "1.37.1",
"version": "1.38.0",
"private": true,
"scripts": {
"zip": "cd dist; zip -r release.zip *;",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ const NetworkEndpoints = {
[NetworkNames.Quartz]: "https://quartz.api.subscan.io/",
[NetworkNames.Unique]: "https://unique.api.subscan.io/",
[NetworkNames.Vara]: "https://vara.api.subscan.io/",
[NetworkNames.AssetHubDOT]: "https://assethub-polkadot.api.subscan.io/",
[NetworkNames.AssetHubKSM]: "https://assethub-kusama.api.subscan.io/",
};

export { NetworkEndpoints };
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { SubstrateNetwork } from "@/providers/polkadot/types/substrate-network";
import { hexToString } from "@polkadot/util";

import { toBN } from "web3-utils";
import { AstarToken, AstarTokenOptions } from "../types/astar-token";
import { AssetToken, AssetTokenOptions } from "./asset-token";

type AssetMetadata = {
name: `0x${string}`;
Expand All @@ -30,25 +30,19 @@ export default async (
const assetMetadatas = metadata.map(([key, value]) => {
const assetKey = (key.toHuman() as string[])[0].replaceAll(",", "");
const assetMetadata = value.toJSON() as AssetMetadata;

const info = {
key: assetKey,
name: hexToString(assetMetadata.name),
symbol: hexToString(assetMetadata.symbol),
decimals: assetMetadata.decimals,
};

return info;
});

const queries = assetMetadatas.map((metadata) => metadata.key);

const assetInfos = await apiPromise.query.assets.asset.multi(queries);

const tokenOptions = assetInfos
.map((info, index) => {
const infoHuman = info.toHuman() as AssetInfo;

if (infoHuman) {
const metadata = assetMetadatas[index];
return {
Expand All @@ -61,58 +55,53 @@ export default async (
})
.filter((asset) => asset !== null)
.map((asset) => {
const tokenOptions: AstarTokenOptions = {
const tokenOptions: AssetTokenOptions = {
name: asset!.name,
symbol: asset!.symbol,
decimals: asset!.decimals,
icon: network.icon,
id: asset!.key,
existentialDeposit: toBN(asset!.minBalance),
};

return tokenOptions;
})
.map((tokenOption) => {
if (knownTokens) {
const knownToken = knownTokens.find(
(knownToken) =>
knownToken.name === tokenOption.name &&
knownToken.symbol === tokenOption.symbol
(knownToken) => knownToken.id === tokenOption.id
);

if (knownToken) {
tokenOption.coingeckoID = knownToken.coingeckoID;
tokenOption.icon = knownToken.icon;
}
}

return tokenOption;
});

if (address) {
const queries = tokenOptions.map((options) => {
return [options.id, address];
});

const balances = await apiPromise.query.assets.account.multi(queries);

balances.forEach((balanceInfo, index) => {
const data = balanceInfo.toJSON();

const data: {
balance: string;
status?: string;
} = balanceInfo.toJSON() as any;
if (data) {
tokenOptions[index].balance = (data as any).balance.toString();
tokenOptions[index].balance = data.balance.toString();
if (data.status && data.status.toString() === "Frozen") {
tokenOptions[index].name = `${tokenOptions[index].name} (Frozen)`;
}
}
});
}

const nativeAsset = new SubstrateNativeToken({
name: network.currencyNameLong,
symbol: network.name,
symbol: network.currencyName,
decimals: network.decimals,
existentialDeposit: network.existentialDeposit,
icon: network.icon,
coingeckoID: network.coingeckoID,
});

return [nativeAsset, ...tokenOptions.map((o) => new AstarToken(o))];
return [nativeAsset, ...tokenOptions.map((o) => new AssetToken(o))];
};
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import { ApiPromise } from "@polkadot/api";
import { SubmittableExtrinsic } from "@polkadot/api/types";
import { ISubmittableResult } from "@polkadot/types/types";

export interface AstarTokenOptions extends BaseTokenOptions {
export interface AssetTokenOptions extends BaseTokenOptions {
id: string;
}

export class AstarToken extends SubstrateToken {
export class AssetToken extends SubstrateToken {
private id: string;
constructor(options: AstarTokenOptions) {
constructor(options: AssetTokenOptions) {
super(options);
this.id = options.id;
}
Expand All @@ -26,7 +26,6 @@ export class AstarToken extends SubstrateToken {
this.balance = balance;
return balance;
}

return "0";
});
}
Expand All @@ -35,9 +34,10 @@ export class AstarToken extends SubstrateToken {
api: ApiPromise,
to: string,
amount: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_options?: SendOptions | undefined
options?: SendOptions | undefined
): Promise<SubmittableExtrinsic<"promise", ISubmittableResult>> {
if (options && options.type === "all")
return api.tx.assets.transfer(this.id, { id: to }, amount);
return api.tx.assets.transferKeepAlive(this.id, { id: to }, amount);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { NetworkNames } from "@enkryptcom/types";
import { toBN } from "web3-utils";
import {
SubstrateNetwork,
SubstrateNetworkOptions,
} from "@/providers/polkadot/types/substrate-network";
import { subscanActivity } from "@/providers/polkadot/libs/activity-handlers";
import wrapActivityHandler from "@/libs/activity-state/wrap-activity-handler";
import assetHandler from "@/providers/polkadot/libs/asset-handler";
import assets from "./assets-dot";
import { toBase } from "@enkryptcom/utils";

const assetHubOptions: SubstrateNetworkOptions = {
name: NetworkNames.AssetHubDOT,
name_long: "Asset Hub | Polkadot",
homePage: "https://polkadot.network",
blockExplorerTX: "https://assethub-polkadot.subscan.io/extrinsic/[[txHash]]",
blockExplorerAddr: "https://assethub-polkadot.subscan.io/account/[[address]]",
isTestNetwork: false,
currencyName: "DOT",
currencyNameLong: "Polkadot",
icon: require("../icons/assethub.png"),
decimals: 10,
prefix: 0,
node: "wss://statemint-rpc.dwellir.com/",
coingeckoID: "polkadot",
genesisHash:
"0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f",
activityHandler: wrapActivityHandler(subscanActivity),
existentialDeposit: toBN(toBase("0.01", 10)),
assetHandler,
knownTokens: assets,
};

const assetHub = new SubstrateNetwork(assetHubOptions);

export default assetHub;
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { NetworkNames } from "@enkryptcom/types";
import { toBN } from "web3-utils";
import {
SubstrateNetwork,
SubstrateNetworkOptions,
} from "@/providers/polkadot/types/substrate-network";
import { subscanActivity } from "@/providers/polkadot/libs/activity-handlers";
import wrapActivityHandler from "@/libs/activity-state/wrap-activity-handler";
import assetHandler from "@/providers/polkadot/libs/asset-handler";
import assets from "./assets-ksm";
import { toBase } from "@enkryptcom/utils";

const assetHubOptions: SubstrateNetworkOptions = {
name: NetworkNames.AssetHubKSM,
name_long: "Asset Hub | Kusama",
homePage: "https://kusama.network/",
blockExplorerTX: "https://assethub-kusama.subscan.io/extrinsic/[[txHash]]",
blockExplorerAddr: "https://assethub-kusama.subscan.io/account/[[address]]",
isTestNetwork: false,
currencyName: "KSM",
currencyNameLong: "Kusama",
icon: require("../icons/assethub.png"),
decimals: 12,
prefix: 2,
node: "wss://kusama-asset-hub-rpc.polkadot.io/",
coingeckoID: "kusama",
genesisHash:
"0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a",
activityHandler: wrapActivityHandler(subscanActivity),
existentialDeposit: toBN(toBase("0.000003333333", 12)),
assetHandler,
knownTokens: assets,
};

const assetHub = new SubstrateNetwork(assetHubOptions);

export default assetHub;
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { KnownTokenDisplay } from "@/providers/polkadot/types";

const assets: KnownTokenDisplay[] = [
{
name: "USD Coin",
symbol: "USDC",
coingeckoID: "usd-coin",
icon: require("./icons/usdc.png"),
id: "1337",
},
{
name: "Tether USD",
symbol: "USDt",
coingeckoID: "tether",
icon: require("./icons/usdt.png"),
id: "1984",
},
{
name: "DOT is Dead",
symbol: "DED",
icon: require("./icons/ded.png"),
id: "30",
},
];

export default assets;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { KnownTokenDisplay } from "@/providers/polkadot/types";

const assets: KnownTokenDisplay[] = [
{
name: "RMRK.app",
symbol: "RMRK",
coingeckoID: "rmrk",
icon: require("./icons/rmrk.png"),
id: "8",
},
{
name: "Tether USD",
symbol: "USDt",
coingeckoID: "tether",
icon: require("./icons/usdt.png"),
id: "1984",
},
];

export default assets;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import assethubDOT from "./assethub-dot";
import assethubKSM from "./assethub-ksm";

export { assethubDOT, assethubKSM };
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,20 @@ const assets: KnownTokenDisplay[] = [
symbol: "ACA",
coingeckoID: "acala",
icon: require("./icons/ACA.png"),
id: "18446744073709551616",
},
{
name: "Polkadot",
symbol: "DOT",
coingeckoID: "polkadot",
icon: require("../../icons/polkadot.svg"),
},
{
name: "Acala Dollar",
symbol: "aUSD",
icon: require("./icons/AUSD.png"),
coingeckoID: "acala-dollar",
id: "340282366920938463463374607431768211455",
},
{
name: "Liquid DOT",
symbol: "LDOT",
icon: require("./icons/LDOT.png"),
id: "18446744073709551618",
},
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,19 @@ const assets: KnownTokenDisplay[] = [
symbol: "MOVR",
coingeckoID: "moonriver",
icon: require("./icons/MOVR.png"),
id: "18446744073709551620",
},
{
name: "Kusama",
symbol: "KSM",
icon: require("./icons/KSM.png"),
},
{
name: "Liquid Kusama",
symbol: "LKSM",
icon: require("./icons/LKSM.png"),
},
{
name: "Acala Dollar",
symbol: "aUSD",
icon: require("./icons/AUSD.png"),
coingeckoID: "acala-dollar",
id: "340282366920938463463374607431768211455",
},
{
name: "Karura",
symbol: "KAR",
icon: require("./icons/KAR.svg"),
id: "18446744073709551618",
},
];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
SubstrateNetwork,
SubstrateNetworkOptions,
} from "../../types/substrate-network";
import assetHandler from "./libs//assetinfo";
import assetHandler from "@/providers/polkadot/libs/asset-handler";
import { toBN } from "web3-utils";

const astarOptions: SubstrateNetworkOptions = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
SubstrateNetwork,
SubstrateNetworkOptions,
} from "../../types/substrate-network";
import assetHandler from "./libs//assetinfo";
import assetHandler from "@/providers/polkadot/libs/asset-handler";
import { toBN } from "web3-utils";

const shidenOptions: SubstrateNetworkOptions = {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions packages/extension/src/providers/polkadot/networks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ import uniqueNode from "./unique/unique";
import penNode from "./pendulum/pendulum";
import ampeNode from "./pendulum/amplitude";
import varaNode from "./vara";
import {
assethubDOT as assetHubDotNode,
assethubKSM as assetHubKsmNode,
} from "./assethub";

export default {
acala: acaNode,
Expand All @@ -32,4 +36,6 @@ export default {
pendulum: penNode,
amplitude: ampeNode,
vara: varaNode,
assetHubDOT: assetHubDotNode,
assetHubKSM: assetHubKsmNode,
};
1 change: 1 addition & 0 deletions packages/extension/src/providers/polkadot/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ export interface KnownTokenDisplay {
symbol: string;
coingeckoID?: string;
icon: string;
id?: string;
}

export { InjectedProvider };
Loading

1 comment on commit 4603ad5

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.