diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb164a70..2d2e7490 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.3.x
+
+- Mortal/Immortal display
+
# 0.2.1
- First release to Chrome store, basic functionality only
diff --git a/package.json b/package.json
index eb2dce3f..74c7c6fb 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
},
"scripts": {
"build": "NODE_ENV=production polkadot-dev-build-ts",
- "buildzip": "(cd packages/extension/build && zip -r -FS ../../../master-build.zip *)",
+ "build:zip": "(cd packages/extension/build && zip -r -FS ../../../master-build.zip *)",
"check": "yarn lint",
"lint": "tslint --project . && tsc --noEmit --pretty",
"clean": "polkadot-dev-clean-build",
diff --git a/packages/extension-ui/src/Popup/Signing/Details.tsx b/packages/extension-ui/src/Popup/Signing/Details.tsx
index 4c89d7bf..f76d42af 100644
--- a/packages/extension-ui/src/Popup/Signing/Details.tsx
+++ b/packages/extension-ui/src/Popup/Signing/Details.tsx
@@ -6,20 +6,23 @@ import React from 'react';
import styled from 'styled-components';
import fromMetadata from '@polkadot/api-metadata/extrinsics/fromMetadata';
import findChain from '@polkadot/extension/chains';
-import { Metadata, Method } from '@polkadot/types';
+import { Metadata, Method, ExtrinsicEra } from '@polkadot/types';
+import { formatNumber } from '@polkadot/util';
type MethodJson = {
args: { [index: string]: any }
};
-type Props = {
- className?: string,
- genesisHash: string,
- isDecoded: boolean,
- method: string,
- nonce: string,
- url: string
-};
+interface Props {
+ blockNumber: number;
+ className?: string;
+ era?: string;
+ genesisHash: string;
+ isDecoded: boolean;
+ method: string;
+ nonce: string;
+ url: string;
+}
function renderMethod (data: string, meta?: Metadata | null) {
if (!meta) {
@@ -60,8 +63,19 @@ function renderMethod (data: string, meta?: Metadata | null) {
);
}
-function Details ({ className, genesisHash, isDecoded, method, nonce, url }: Props) {
+function renderMortality (era: ExtrinsicEra, blockNumber: number): string {
+ if (era.isImmortalEra) {
+ return 'immortal';
+ }
+
+ const mortal = era.asMortalEra;
+
+ return `mortal (birth #${formatNumber(mortal.birth(blockNumber))}, death #${formatNumber(mortal.death(blockNumber))})`;
+}
+
+function Details ({ blockNumber, className, genesisHash, isDecoded, era, method, nonce, url }: Props) {
const chain = findChain(genesisHash);
+ const eera = new ExtrinsicEra(era);
return (
@@ -79,6 +93,10 @@ function Details ({ className, genesisHash, isDecoded, method, nonce, url }: Pro
| {nonce} |
{renderMethod(method, (chain && isDecoded) ? chain.meta : null)}
+
+ | mortality |
+ {renderMortality(eera, blockNumber)} |
+
);
diff --git a/packages/extension-ui/src/Popup/Signing/Request.tsx b/packages/extension-ui/src/Popup/Signing/Request.tsx
index 5153bc04..08415718 100644
--- a/packages/extension-ui/src/Popup/Signing/Request.tsx
+++ b/packages/extension-ui/src/Popup/Signing/Request.tsx
@@ -20,7 +20,7 @@ type Props = {
url: string
};
-function Request ({ isFirst, onAction, request: { address, genesisHash, method, nonce }, signId, url }: Props) {
+function Request ({ isFirst, onAction, request: { address, blockNumber, era, genesisHash, method, nonce }, signId, url }: Props) {
const onCancel = () =>
cancelSignRequest(signId)
.then(() => onAction())
@@ -32,6 +32,8 @@ function Request ({ isFirst, onAction, request: { address, genesisHash, method,
return (
",
"license": "Apache-2",
"dependencies": {
- "@polkadot/api": "^0.82.0-beta.48",
+ "@polkadot/api": "^0.82.0-beta.53",
"@polkadot/extension-ui": "^0.3.0-beta.0",
"@polkadot/ui-keyring": "^0.42.0-beta.7"
},
diff --git a/packages/extension/src/background/handlers/Extension.ts b/packages/extension/src/background/handlers/Extension.ts
index 868163d2..e731d8cb 100644
--- a/packages/extension/src/background/handlers/Extension.ts
+++ b/packages/extension/src/background/handlers/Extension.ts
@@ -137,7 +137,7 @@ export default class Extension {
assert(queued, 'Unable to find request');
- const { request: { address, blockHash, method, nonce }, resolve, reject } = queued;
+ const { request: { address, genesisHash, method, nonce }, resolve, reject } = queued;
const pair = keyring.getPair(address);
if (!pair) {
@@ -148,7 +148,9 @@ export default class Extension {
pair.decodePkcs8(password);
- const payload = new SignaturePayloadRaw({ blockHash, method, nonce });
+ // FIXME We should pass the era and blockHash as received here - however... it seems
+ // like something goes wrong along the way. Immortal is ok
+ const payload = new SignaturePayloadRaw({ blockHash: genesisHash, method, nonce });
const signature = u8aToHex(payload.sign(pair));
pair.lock();
diff --git a/packages/extension/src/background/types.ts b/packages/extension/src/background/types.ts
index e1a47fd4..f673b023 100644
--- a/packages/extension/src/background/types.ts
+++ b/packages/extension/src/background/types.ts
@@ -60,13 +60,15 @@ export type MessageExtrinsicSignCancel = {
id: string
};
-export type MessageExtrinsicSign = {
- address: string,
- blockHash: string,
- genesisHash: string,
- method: string,
- nonce: string
-};
+export interface MessageExtrinsicSign {
+ address: string;
+ blockHash: string;
+ blockNumber: number;
+ era?: string;
+ genesisHash: string;
+ method: string;
+ nonce: string;
+}
export type MessageExtrinsicSign$Response = {
id: string,
diff --git a/packages/extension/src/page/Signer.ts b/packages/extension/src/page/Signer.ts
index 1d071e4b..dd58dc69 100644
--- a/packages/extension/src/page/Signer.ts
+++ b/packages/extension/src/page/Signer.ts
@@ -13,26 +13,28 @@ import { SubmittableResult } from '@polkadot/api/SubmittableExtrinsic';
let sendRequest: SendRequest;
export default class Signer implements InjectedSigner {
- constructor (_sendRequest: SendRequest) {
+ public constructor (_sendRequest: SendRequest) {
sendRequest = _sendRequest;
}
- async sign (extrinsic: IExtrinsic, address: string, { blockHash, genesisHash, nonce }: SignerOptions): Promise {
+ public async sign (extrinsic: IExtrinsic, address: string, { blockHash, blockNumber, era, genesisHash, nonce }: SignerOptions): Promise {
// Bit of a hack - with this round-about way, we skip any keyring deps
const { id, signature } = await sendRequest('extrinsic.sign', JSON.parse(JSON.stringify({
address,
blockHash,
+ blockNumber: blockNumber.toNumber(),
+ era,
genesisHash,
method: extrinsic.method.toHex(),
nonce
})));
- extrinsic.addSignature(address as any, signature, nonce);
+ extrinsic.addSignature(address, signature, nonce);
return id;
}
- update (id: number, status: Hash | SubmittableResult): void {
+ public update (id: number, status: Hash | SubmittableResult): void {
// something
}
}
diff --git a/yarn.lock b/yarn.lock
index 29944a0b..442df712 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1861,38 +1861,38 @@
universal-user-agent "^2.0.0"
url-template "^2.0.8"
-"@polkadot/api-derive@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.82.0-beta.48.tgz#ce7bcee0e999ae1d4aae1db6aa53770b3a5302fa"
- integrity sha512-Q0/lQoeMplS2Xmct0ugRpEpFzXu/1u0PVN61turf8NkZE0rS3UxJE/NGElro17ul6KfrpGdHLrkJaVy3vSZzjw==
+"@polkadot/api-derive@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.82.0-beta.53.tgz#2b57d68c964ca504d0d2a9e9d49a0c9f605bcceb"
+ integrity sha512-KHrXxb0MYFzrMWV0L/3eSGyNUCaRlZ/cI8M06KWAV6quLGo7iMwaK1KXexgRvFsL4iHCcDGoqjb/vY7+gpqN1g==
dependencies:
"@babel/runtime" "^7.5.4"
- "@polkadot/api" "^0.82.0-beta.48"
- "@polkadot/types" "^0.82.0-beta.48"
+ "@polkadot/api" "^0.82.0-beta.53"
+ "@polkadot/types" "^0.82.0-beta.53"
"@types/memoizee" "^0.4.2"
memoizee "^0.4.14"
-"@polkadot/api-metadata@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/api-metadata/-/api-metadata-0.82.0-beta.48.tgz#cd49dbe93dfcd4e2058dc028cf841a7b6e35ab92"
- integrity sha512-yweqA1nhUv++bfHtWSvG5pdWEitO8qUGH/KIbQaGFr88A3bXWMEgitMie1HtsoOMzNABe2iz8QeJxxxHIR3wWA==
+"@polkadot/api-metadata@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/api-metadata/-/api-metadata-0.82.0-beta.53.tgz#5734058941af6602fa492f18e7a2e1fc6507d96a"
+ integrity sha512-IRdMtKKC8PE19o79Oyy80ooKplh6bWI0OIF6Uxz59ulG9vdEy0tpXUZbOaQG0YoEG5ncuv8wVScAHwhnfocotQ==
dependencies:
"@babel/runtime" "^7.5.4"
- "@polkadot/types" "^0.82.0-beta.48"
+ "@polkadot/types" "^0.82.0-beta.53"
"@polkadot/util" "^0.94.0-beta.9"
"@polkadot/util-crypto" "^0.94.0-beta.9"
-"@polkadot/api@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.82.0-beta.48.tgz#dbe2e938d6012fb3d7d9c1375f0bc8636b5d6b2c"
- integrity sha512-jBfPwbwzdHgXznT3BjvsoFASSC4ur+E2fxQWZ0x2SxkgoGP7xav2q4YjOdGahGprbX03vqZopvLiQhSx6ugXUw==
+"@polkadot/api@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.82.0-beta.53.tgz#b49fec5792bdd7db835969a0360868eea2a0a31b"
+ integrity sha512-vb4rL1SLrhZgE5rHe2ag3WhjBTJ+bLcsPFQt/W8UccJDogNTu659lQuYXeNxr/3bpxitSQFuvvGwwDz5u2b2kA==
dependencies:
"@babel/runtime" "^7.5.4"
- "@polkadot/api-derive" "^0.82.0-beta.48"
- "@polkadot/api-metadata" "^0.82.0-beta.48"
- "@polkadot/rpc-core" "^0.82.0-beta.48"
- "@polkadot/rpc-provider" "^0.82.0-beta.48"
- "@polkadot/types" "^0.82.0-beta.48"
+ "@polkadot/api-derive" "^0.82.0-beta.53"
+ "@polkadot/api-metadata" "^0.82.0-beta.53"
+ "@polkadot/rpc-core" "^0.82.0-beta.53"
+ "@polkadot/rpc-provider" "^0.82.0-beta.53"
+ "@polkadot/types" "^0.82.0-beta.53"
"@polkadot/util-crypto" "^0.94.0-beta.9"
"@polkadot/dev-react@^0.30.0-beta.21":
@@ -1980,10 +1980,10 @@
typescript "^3.5.3"
vuepress "^1.0.2"
-"@polkadot/jsonrpc@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.82.0-beta.48.tgz#acaf2e134feb7eb37303ecf1e15555c7eb715ba7"
- integrity sha512-KBw05ZoUC/XNVjheZILqfr3XVecKk+bbS7FXj7BIPbB/cpxpx0DYmcILDt1/ilpz0c2nJUdcSfyElrErX2ERmg==
+"@polkadot/jsonrpc@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.82.0-beta.53.tgz#a3e6be18606859905ec536f662ce5f6a423a70c0"
+ integrity sha512-Jx+h/Kj1Eh5sgAmJgxVeJT9zsqmR3sEHzkBTrPj3HwoeTtqcGBl9OodfO5plj2qFWMpufAn36yJWfdraiX47/g==
dependencies:
"@babel/runtime" "^7.5.4"
@@ -1996,26 +1996,26 @@
"@polkadot/util" "^0.94.0-beta.9"
"@polkadot/util-crypto" "^0.94.0-beta.9"
-"@polkadot/rpc-core@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.82.0-beta.48.tgz#81bd3e3c13890d8ba6ff2b7be4a98597687cb711"
- integrity sha512-Qy/hJZJPa7JlZjlOHDlNzn9qA0roSnJF5KoKZ++TqfMx5ZlRGYp7k9HiX4nu01hA6xIx7QwNojatazvhHJut3g==
+"@polkadot/rpc-core@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.82.0-beta.53.tgz#8b89634144de0216555f8753a922aaf687e5d6e4"
+ integrity sha512-wJMhYQ6SXRsbjAoeMUr1wg5lbpRwi0AQBz+jcSzbaoJkRL3AsCHbTIzLfMf3M/F2vnQpA9VABc1QI7gnI3Tngw==
dependencies:
"@babel/runtime" "^7.5.4"
- "@polkadot/jsonrpc" "^0.82.0-beta.48"
- "@polkadot/rpc-provider" "^0.82.0-beta.48"
- "@polkadot/types" "^0.82.0-beta.48"
+ "@polkadot/jsonrpc" "^0.82.0-beta.53"
+ "@polkadot/rpc-provider" "^0.82.0-beta.53"
+ "@polkadot/types" "^0.82.0-beta.53"
"@polkadot/util" "^0.94.0-beta.9"
memoizee "^0.4.14"
rxjs "^6.5.2"
-"@polkadot/rpc-provider@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.82.0-beta.48.tgz#0d736324ed4a259832f3586f5a73a2d56417dcf8"
- integrity sha512-F9XQPs55zB/H1FIa6AaY1oqmzWocELVzCoHEbWvruyuUQq/VMiqOp89gkQhtEyV1I0+mV1db6O9Qd+hpky4FZA==
+"@polkadot/rpc-provider@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.82.0-beta.53.tgz#6882c22c52c6ad562e9a772a707906cbe75605ba"
+ integrity sha512-Bd3Ha2q4GMID0v5bFosWbqb/sEGesSQJxfdFKG0x2PAh0CEHuakboUw3/LZAbNpdZz5fEqxgPCXlMuWd8OGWGQ==
dependencies:
"@babel/runtime" "^7.5.4"
- "@polkadot/api-metadata" "^0.82.0-beta.48"
+ "@polkadot/api-metadata" "^0.82.0-beta.53"
"@polkadot/util" "^0.94.0-beta.9"
"@polkadot/util-crypto" "^0.94.0-beta.9"
"@types/nock" "^10.0.3"
@@ -2030,10 +2030,10 @@
dependencies:
"@types/chrome" "^0.0.86"
-"@polkadot/types@^0.82.0-beta.48":
- version "0.82.0-beta.48"
- resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.82.0-beta.48.tgz#9e746d8860fb691e3a4fcc25d974843f321e7dd9"
- integrity sha512-nMKAejUbM9rTWfUxBQvTBYNGd7Ga2D4cRVO7xjRUk96w+QTY/KKxpEA1KaENnTrqubHDcauNP39hcChMTGXNGw==
+"@polkadot/types@^0.82.0-beta.53":
+ version "0.82.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.82.0-beta.53.tgz#aba4053fde27609484039f7e1c460927b01c9bc0"
+ integrity sha512-lKTMVZLilimjRs079LEe7nl+HAdwpwIjLpv9ByrdXYBTIDIUXi+LkGrZ+cV7k4Rk/YNM/R1MDttf6EYbx/j++w==
dependencies:
"@babel/runtime" "^7.5.4"
"@polkadot/util" "^0.94.0-beta.9"