Skip to content

Commit

Permalink
Merge pull request #1424 from aeternity/release/v1.0.0
Browse files Browse the repository at this point in the history
Release 1.0.0
  • Loading branch information
davidyuk authored Jun 1, 2021
2 parents 52be755 + aec2146 commit 7b28eec
Show file tree
Hide file tree
Showing 33 changed files with 11,797 additions and 6,332 deletions.
2 changes: 1 addition & 1 deletion config.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.aeternity.base" version="0.25.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="com.aeternity.base" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Base æpp</name>
<author href="https://aeternity.com">
aeternity developers
Expand Down
Binary file added designs/00-aepp-baseapp.sketch
Binary file not shown.
4 changes: 2 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ module.exports = {
`node_modules/(?!(${packagesToTranspile.join('|')})/)`,
],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^.*\\.svg\\?icon-component$': '<rootDir>/config/jest/EmptySvg.vue',
},
snapshotSerializers: [
'jest-serializer-vue',
],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)',
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)',
'**/__tests__/*.(js|jsx|ts|tsx)',
],
testURL: 'http://localhost/',
};
17,760 changes: 11,651 additions & 6,109 deletions package-lock.json

Large diffs are not rendered by default.

63 changes: 33 additions & 30 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "aepp-base",
"version": "0.25.0",
"version": "1.0.0",
"author": "Sascha Hanse <shanse@posteo.de>",
"private": true,
"scripts": {
Expand All @@ -21,7 +21,7 @@
"i18n:report": "vue-i18n-extract report --vueFiles './src/**/*.?(js|vue)' --languageFiles './src/locales/**/*.json'"
},
"dependencies": {
"@aeternity/aepp-sdk": "^7.7.0",
"@aeternity/aepp-sdk": "^8.1.0",
"@aeternity/bip39": "^0.1.0",
"@aeternity/hd-wallet": "^0.2.0",
"@aeternity/ledger-app-api": "0.2.1",
Expand All @@ -30,63 +30,66 @@
"@zxing/library": "^0.15.2",
"bignumber.js": "^9.0.0",
"bluebird": "^3.7.2",
"copy-to-clipboard": "^3.2.0",
"copy-to-clipboard": "^3.3.1",
"emoji-datasource-apple": "^4.1.0",
"focus-visible": "^5.0.2",
"focus-visible": "^5.1.0",
"lodash-es": "^4.17.15",
"normalize.css": "^8.0.1",
"register-service-worker": "^1.6.2",
"rxjs": "^6.5.3",
"rxjs-etc": "^9.6.2",
"register-service-worker": "^1.7.1",
"rlp": "^2.2.6",
"rxjs": "^6.5.5",
"rxjs-etc": "^9.7.4",
"socket.io-client": "^2.3.0",
"vee-validate": "^2.2.15",
"vue": "^2.6.10",
"vue": "^2.6.11",
"vue-clickaway": "^2.2.2",
"vue-focus": "^2.1.0",
"vue-hoc": "^0.4.7",
"vue-i18n": "^8.15.1",
"vue-router": "^3.1.3",
"vue-i18n": "^8.18.2",
"vue-router": "^3.3.4",
"vue-rx": "^6.2.0",
"vuex": "^3.1.2",
"vuex-persistedstate": "^2.7.0",
"vuex": "^3.3.0",
"vuex-persistedstate": "^2.7.1",
"vuex-router-sync": "^5.0.0"
},
"devDependencies": {
"@aeternity/vue-i18n-extract": "^0.1.0",
"@storybook/addon-actions": "^5.2.8",
"@storybook/addon-backgrounds": "^5.2.8",
"@storybook/addon-links": "^5.2.8",
"@storybook/addon-notes": "^5.2.8",
"@storybook/addon-actions": "^5.3.19",
"@storybook/addon-backgrounds": "^5.3.19",
"@storybook/addon-links": "^5.3.19",
"@storybook/addon-notes": "^5.3.19",
"@storybook/core": "^5.3.19",
"@storybook/vue": "^5.3.19",
"@vue/cli-plugin-babel": "^3.12.1",
"@vue/cli-plugin-e2e-cypress": "^3.12.1",
"@vue/cli-plugin-eslint": "^3.12.1",
"@vue/cli-plugin-eslint": "^4.4.4",
"@vue/cli-plugin-pwa": "^3.12.1",
"@vue/cli-plugin-unit-jest": "^3.12.1",
"@vue/cli-service": "^3.12.1",
"@vue/cli-plugin-unit-jest": "^4.4.4",
"@vue/cli-service": "^4.4.4",
"@vue/eslint-config-airbnb": "^4.0.1",
"@vue/test-utils": "^1.0.0-beta.30",
"@vue/test-utils": "^1.0.3",
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "^10.0.3",
"babel-jest": "^23.6.0",
"babel-eslint": "^10.1.0",
"babel-jest": "^26.0.1",
"cordova": "^9.0.0",
"cordova-android": "^8.1.0",
"cordova-ios": "^5.1.1",
"cordova-res": "^0.6.0",
"cordova-res": "^0.15.3",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.2.3",
"eslint-plugin-vue-i18n": "^0.1.1",
"jest-canvas-mock": "^2.2.0",
"node-sass": "^4.13.0",
"sass-loader": "^7.3.1",
"serve": "^11.2.0",
"sharp": "^0.22.1",
"node-sass": "^4.14.1",
"sass-loader": "^8.0.2",
"serve": "^11.3.2",
"sharp": "^0.26.1",
"svg-url-loader": "^3.0.3",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1",
"vue-cli-plugin-i18n": "^0.6.0",
"vue-cli-plugin-storybook": "^0.6.1",
"vue-cli-plugin-i18n": "^0.6.1",
"vue-cli-plugin-storybook": "^1.2.2",
"vue-svg-loader": "^0.12.0",
"vue-template-compiler": "^2.6.10"
"vue-template-compiler": "^2.6.11"
},
"engines": {
"node": ">= 10.15.1",
Expand Down
2 changes: 1 addition & 1 deletion src/components/AeInputAccount.vue
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@

<script>
import { mapState } from 'vuex';
import { Crypto } from '@aeternity/aepp-sdk/es';
import { Crypto } from '@aeternity/aepp-sdk';
import { AENS_DOMAIN } from '../lib/constants';
import withFormatting from '../lib/withFormatting';
import removeSpacesOnCopy from '../directives/removeSpacesOnCopy';
Expand Down
22 changes: 11 additions & 11 deletions src/components/mobile/ConfirmTransactionSignModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@

<script>
import { mapState } from 'vuex';
import { OBJECT_ID_TX_TYPE, TX_TYPE } from '@aeternity/aepp-sdk/es/tx/builder/schema';
import { SCHEMA } from '@aeternity/aepp-sdk';
import Page from '../Page.vue';
import Guide from '../Guide.vue';
import AeFraction from '../AeFraction.vue';
Expand Down Expand Up @@ -96,7 +96,7 @@ export default {
data() {
return {
newFee: this.transaction.fee,
TX_TYPE,
TX_TYPE: SCHEMA.TX_TYPE,
TX_FIELDS: {
payload: Payload,
recipientId: RecipientId,
Expand All @@ -120,21 +120,21 @@ export default {
stepFraction: state => (process.env.IS_MOBILE_DEVICE ? state.mobile.stepFraction : null),
}),
txType() {
return OBJECT_ID_TX_TYPE[this.transaction.tag];
return SCHEMA.OBJECT_ID_TX_TYPE[this.transaction.tag];
},
guideTemplate() {
if (this.txType === TX_TYPE.spend) return this.$t('modal.confirm-transaction-sign.guide-spend');
if (this.txType === TX_TYPE.nameClaim && !+this.transaction.nameSalt) {
if (this.txType === SCHEMA.TX_TYPE.spend) return this.$t('modal.confirm-transaction-sign.guide-spend');
if (this.txType === SCHEMA.TX_TYPE.nameClaim && !+this.transaction.nameSalt) {
return this.$t('modal.confirm-transaction-sign.guide-name-bid');
}
return this.$t('modal.confirm-transaction-sign.guide', {
title: {
[TX_TYPE.contractCreate]: this.$t('modal.confirm-transaction-sign.contract-create'),
[TX_TYPE.contractCall]: this.$t('modal.confirm-transaction-sign.contract-call'),
[TX_TYPE.namePreClaim]: this.$t('modal.confirm-transaction-sign.name-pre-claim'),
[TX_TYPE.nameClaim]: this.$t('modal.confirm-transaction-sign.name-claim'),
[TX_TYPE.nameUpdate]: this.$t('modal.confirm-transaction-sign.name-update'),
[TX_TYPE.nameTransfer]: this.$t('modal.confirm-transaction-sign.name-transfer'),
[SCHEMA.TX_TYPE.contractCreate]: this.$t('modal.confirm-transaction-sign.contract-create'),
[SCHEMA.TX_TYPE.contractCall]: this.$t('modal.confirm-transaction-sign.contract-call'),
[SCHEMA.TX_TYPE.namePreClaim]: this.$t('modal.confirm-transaction-sign.name-pre-claim'),
[SCHEMA.TX_TYPE.nameClaim]: this.$t('modal.confirm-transaction-sign.name-claim'),
[SCHEMA.TX_TYPE.nameUpdate]: this.$t('modal.confirm-transaction-sign.name-update'),
[SCHEMA.TX_TYPE.nameTransfer]: this.$t('modal.confirm-transaction-sign.name-transfer'),
}[this.txType] || '',
});
},
Expand Down
2 changes: 1 addition & 1 deletion src/components/mobile/details-fields.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Crypto } from '@aeternity/aepp-sdk/es';
import { Crypto } from '@aeternity/aepp-sdk';
import { i18n } from '../../store/plugins/ui/languages';
import DetailsRawData from './DetailsRawData.vue';
import DetailsAddress from './DetailsAddress.vue';
Expand Down
59 changes: 42 additions & 17 deletions src/lib/airGap.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,67 @@
import { Crypto } from '@aeternity/aepp-sdk/es';
import { Crypto } from '@aeternity/aepp-sdk';
import { decode, encode } from 'rlp';

const AIR_GAP_VERSION = '1';
const AIR_GAP_VERSION = '2';
const AIR_GAP_TYPE = '0';
const AIR_GAP_PROTOCOL = 'ae';
const AIR_GAP_CALLBACK = 'https://base.aepps.com/airgap?d=';
const AIR_GAP_PAYLOAD_IDX = 3;
const AIR_GAP_PUBLIC_KEY_IDX = 0;
const AIR_GAP_SIGNED_TRANSACTION_IDX = 0;

const urlToPayload = url => Crypto
.decode(Crypto.decodeBase58Check(new URL(url).searchParams.get('d')))[AIR_GAP_PAYLOAD_IDX];
const urlToPayload = (urlBroken, expectedMessageType) => {
// TODO: Remove after releasing https://github.com/airgap-it/airgap-vault/pull/64
const url = urlBroken.replace('airgap-wallet://?d=com/airgap?d=', AIR_GAP_CALLBACK);
const raw = decode(Crypto.decodeBase58Check(new URL(url).searchParams.get('d')));
const version = raw[0].toString();
if (version !== AIR_GAP_VERSION) throw new Error(`Unsupported AirGap protocol version: ${version}`);
const type = raw[1].toString();
if (type !== AIR_GAP_TYPE) throw new Error(`Unknown AirGap payload type: ${type}`);
const [[magic1, messageType, currency, payload]] = raw[2];
if (magic1.toString() !== '1') {
throw new Error('Unknown AirGap sync link');
}
if (+messageType.toString() !== expectedMessageType) {
throw new Error(`Not expected message type: ${messageType.toString()}`);
}
if (currency.toString() !== AIR_GAP_PROTOCOL) {
throw new Error(`Currency should be equal to "${AIR_GAP_PROTOCOL}": ${currency.toString()}`);
}
return payload;
};

export const getPublicKeyByResponseUrl = (url) => {
const publicKey = urlToPayload(url)[AIR_GAP_PUBLIC_KEY_IDX];
const [, , publicKey] = urlToPayload(url, 4);
if (publicKey.length !== 64) throw new Error('Invalid public key length');
return publicKey.toString();
};

export const getSignedTransactionByResponseUrl = url => (
urlToPayload(url)[AIR_GAP_SIGNED_TRANSACTION_IDX].toString()
);
export const getSignedTransactionByResponseUrl = (url) => {
const [, signedTx] = urlToPayload(url, 6);
return signedTx.toString();
};

export const generateSignRequestUrl = (networkId, transaction, publicKey) => {
const rlp = [
AIR_GAP_VERSION,
AIR_GAP_TYPE,
AIR_GAP_PROTOCOL, [
[
[
networkId,
transaction,
'1',
'5',
AIR_GAP_PROTOCOL,
[
AIR_GAP_CALLBACK,
publicKey,
[
networkId,
transaction,
],
],
'session-id',
],
publicKey,
AIR_GAP_CALLBACK,
],
];

const url = new URL('airgap-vault://');
url.searchParams.set('d', Crypto.encodeBase58Check(Crypto.encode(rlp)));
url.searchParams.set('d', Crypto.encodeBase58Check(encode(rlp)));
return url.toString();
};

Expand Down
9 changes: 3 additions & 6 deletions src/lib/networksRegistry.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import { pick } from 'lodash-es';

const getMiddlewareUrl = networkName => `https://${networkName}.aeternity.io`;
const getExplorerUrl = networkName => `https://explorer.${networkName}.aeternity.io`;

const genNetwork = (name, { pathName = name.toLowerCase(), ...options } = {}) => ({
name,
url: getMiddlewareUrl(pathName),
middlewareUrl: getMiddlewareUrl(pathName),
explorerUrl: getMiddlewareUrl(pathName),
explorerUrl: getExplorerUrl(pathName),
compilerUrl: 'https://compiler.aepps.com',
...options,
});

export const defaultNetwork = genNetwork('Lima-net', { pathName: 'mainnet' });
export const defaultNetwork = genNetwork('Iris-net', { pathName: 'mainnet' });

const testNetwork = genNetwork('Testnet');

Expand All @@ -21,6 +20,4 @@ export default Object.freeze((process.env.NODE_ENV === 'production' ? [
] : [
testNetwork,
defaultNetwork,
genNetwork('Unstable'),
genNetwork('Edgenet', pick(defaultNetwork, ['middlewareUrl'])),
]).map(Object.freeze));
1 change: 1 addition & 0 deletions src/lib/setGlobalPolyfills.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ Promise.config({
Object.assign(window, {
Int32Array,
Uint8ClampedArray,
Promise,
});
2 changes: 1 addition & 1 deletion src/lib/spendTxFees.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import BigNumber from 'bignumber.js';
import { TxBuilder } from '@aeternity/aepp-sdk/es';
import { TxBuilder } from '@aeternity/aepp-sdk';
import { MAGNITUDE, MAGNITUDE_MICRO } from './constants';

const STUB_ADDRESS = 'ak_enAPooFqpTQKkhJmU47J16QZu9HbPQQPwWBVeGnzDbDnv9dxp';
Expand Down
8 changes: 3 additions & 5 deletions src/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@ export const isAensName = value => value.endsWith(AENS_DOMAIN);
// eslint-disable-next-line no-console
export const handleUnknownError = error => console.warn('Unknown rejection', error);

export const isNotFoundError = error => error.isAxiosError
&& get(error, 'response.status') === 404;
export const isNotFoundError = error => error.statusCode === 404;

export const isInternalServerError = error => error.isAxiosError
&& [500, 503].includes(get(error, 'response.status'));
export const isInternalServerError = error => [500, 503].includes(error.statusCode);

export const isAccountNotFoundError = error => isNotFoundError(error)
&& get(error, 'response.data.reason') === 'Account not found';
&& get(error, 'response.body.reason') === 'Account not found';

export class ConvertibleToString {
constructor(toString) {
Expand Down
2 changes: 2 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ if (process.env.NODE_ENV === 'development') {
window.store = store;
}

/* eslint-disable no-unused-expressions */
if (process.env.RUNNING_IN_POPUP) import(/* webpackChunkName: "popup" */ './popup');
else if (!process.env.RUNNING_IN_FRAME) import(/* webpackChunkName: "ui" */ './ui');
/* eslint-enable no-unused-expressions */
2 changes: 1 addition & 1 deletion src/pages/SendAmountMixin.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { pick } from 'lodash-es';
import BigNumber from 'bignumber.js';
import { TxBuilder } from '@aeternity/aepp-sdk/es';
import { TxBuilder } from '@aeternity/aepp-sdk';
import { MAGNITUDE } from '../lib/constants';

export default {
Expand Down
Loading

1 comment on commit 7b28eec

@davidyuk
Copy link
Member Author

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.