diff --git a/.editorconfig b/.editorconfig index 9cdaec79c..33e02da18 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,3 +10,6 @@ trim_trailing_whitespace = true [/config.xml] indent_size = 4 + +[*.webmanifest] +indent_size = 4 diff --git a/.travis.yml b/.travis.yml index 8f45360e2..cfb8bec0d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,12 @@ matrix: include: - language: node_js + dist: trusty node_js: '10' script: scripts/test.sh - language: android + dist: trusty android: components: - build-tools-28.0.3 diff --git a/config.xml b/config.xml index fbf83843a..efb8def96 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + Base æpp aeternity developers diff --git a/package-lock.json b/package-lock.json index ad46d0645..f64c71140 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "aepp-base", - "version": "0.8.9", + "version": "0.8.10", "lockfileVersion": 1, "requires": true, "dependencies": { "@aeternity/aepp-sdk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@aeternity/aepp-sdk/-/aepp-sdk-4.2.0.tgz", - "integrity": "sha512-VC2Q6jCgYy7Qgi5+s117RNJ+VZPrNVQIM7F+X/OmIi5uiII30GH+nt1Ecpmf+Ofs+LrE6skZnvqzwV1Qx1K21g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@aeternity/aepp-sdk/-/aepp-sdk-4.3.0.tgz", + "integrity": "sha512-XEtBBX4UQs1y5w76UN9D1DXNU2R/2U2O4AoSairG9uQ72+grLIfqVSUZH3L5lLmc7vPcmYor4qBxkhtzawVduA==", "requires": { "@aeternity/bip39": "^0.1.0", - "@babel/runtime": "^7.5.0", + "@babel/runtime": "^7.5.5", "@stamp/it": "^1.0.3", "@stamp/required": "^1.0.1", "aes-js": "^3.1.1", @@ -34,9 +34,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.4.tgz", - "integrity": "sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -16516,9 +16516,9 @@ } }, "node-addon-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.3.tgz", - "integrity": "sha512-FXWH6mqjWgU8ewuahp4spec8LkroFZK2NicOv6bNwZC3kcwZUI8LeZdG80UzTSLLhK4T7MsgNwlYDVRlDdfTDg==" + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" }, "node-cache": { "version": "4.2.0", @@ -23279,95 +23279,7 @@ "rimraf": "^2.6.3", "vue": "^2.5.16", "vue-i18n": "^8.0.0", - "vue-i18n-extract": "^1.0.1" - }, - "dependencies": { - "dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", - "dev": true - } - } - }, - "vue-cli-plugin-storybook": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/vue-cli-plugin-storybook/-/vue-cli-plugin-storybook-0.6.1.tgz", - "integrity": "sha512-3SX8jBK9yykPzKzXbWJuhRmcE2vC9sPW8fkqPQLqNQgm0FDs3ctRJyvm7NrOo+EsGH+qlsH0niiSaN0ICuyVWg==", - "dev": true, - "requires": { - "@storybook/addons": "^4.1.0 || ^5.0.0", - "@storybook/vue": "^4.1.0 || ^5.0.0", - "commander": "^2.19.0" - } - }, - "vue-clickaway": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.2.2.tgz", - "integrity": "sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==", - "requires": { - "loose-envify": "^1.2.0" - } - }, - "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "optional": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } - } - }, - "vue-focus": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vue-focus/-/vue-focus-2.1.0.tgz", - "integrity": "sha1-egM3zpB01e8D0VpLW4Ys9F5eBOM=", - "requires": { - "loose-envify": "^1.2.0" - } - }, - "vue-hot-reload-api": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz", - "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", - "dev": true - }, - "vue-i18n": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.12.0.tgz", - "integrity": "sha512-Wh40dvkYZH0CntkhQQEed7nY8P/8xOOHy5Bl9W/WmmmW0oLYIL66XWwOqlcnNbLaL5HGN7XISydYVqXS0Sst9w==" - }, - "vue-i18n-extract": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/vue-i18n-extract/-/vue-i18n-extract-0.4.14.tgz", - "integrity": "sha512-gfbhyOU+zo8/dg1kHudBGHTJx9cvS7bsO2G/3mvSjzb3jCIu/HSbBT/EFaJMbo3y82zODq9+ehZZyVj5UH2qNA==", - "dev": true, - "requires": { - "cli-table3": "^0.5.1", - "dot-object": "^1.7.1", - "esm": "^3.2.13", - "glob": "^7.1.3", - "is-valid-glob": "^1.0.0", - "yargs": "^13.2.2" + "vue-i18n-extract": "^0.4.13" }, "dependencies": { "cliui": { @@ -23381,6 +23293,12 @@ "wrap-ansi": "^5.1.0" } }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -23396,27 +23314,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -23427,34 +23330,6 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -23496,6 +23371,20 @@ "strip-ansi": "^5.1.0" } }, + "vue-i18n-extract": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-i18n-extract/-/vue-i18n-extract-1.0.1.tgz", + "integrity": "sha512-H0ql/wBSkLdrDmMPqdX6iuvl1vW66j9RZ3Ujb6jiPCeVpam43sdP1y1bc14K+/81/lnKlC0vTENOkNb0b6vL7g==", + "dev": true, + "requires": { + "cli-table3": "^0.5.1", + "dot-object": "^1.7.1", + "esm": "^3.2.13", + "glob": "^7.1.3", + "is-valid-glob": "^1.0.0", + "yargs": "^13.2.2" + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -23508,22 +23397,21 @@ } }, "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "yargs-parser": "^13.1.1" } }, "yargs-parser": { @@ -23538,6 +23426,72 @@ } } }, + "vue-cli-plugin-storybook": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/vue-cli-plugin-storybook/-/vue-cli-plugin-storybook-0.6.1.tgz", + "integrity": "sha512-3SX8jBK9yykPzKzXbWJuhRmcE2vC9sPW8fkqPQLqNQgm0FDs3ctRJyvm7NrOo+EsGH+qlsH0niiSaN0ICuyVWg==", + "dev": true, + "requires": { + "@storybook/addons": "^4.1.0 || ^5.0.0", + "@storybook/vue": "^4.1.0 || ^5.0.0", + "commander": "^2.19.0" + } + }, + "vue-clickaway": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.2.2.tgz", + "integrity": "sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==", + "requires": { + "loose-envify": "^1.2.0" + } + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-focus": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vue-focus/-/vue-focus-2.1.0.tgz", + "integrity": "sha1-egM3zpB01e8D0VpLW4Ys9F5eBOM=", + "requires": { + "loose-envify": "^1.2.0" + } + }, + "vue-hot-reload-api": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz", + "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", + "dev": true + }, + "vue-i18n": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.12.0.tgz", + "integrity": "sha512-Wh40dvkYZH0CntkhQQEed7nY8P/8xOOHy5Bl9W/WmmmW0oLYIL66XWwOqlcnNbLaL5HGN7XISydYVqXS0Sst9w==" + }, "vue-jest": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.4.tgz", diff --git a/package.json b/package.json index c1ec1a763..ef02e6c90 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aepp-base", - "version": "0.8.9", + "version": "0.8.10", "author": "Sascha Hanse ", "private": true, "scripts": { @@ -21,7 +21,7 @@ "i18n:report": "vue-i18n-extract report --vueFiles './src/**/*.?(js|vue)' --languageFiles './src/locales/**/*.json'" }, "dependencies": { - "@aeternity/aepp-sdk": "^4.2.0", + "@aeternity/aepp-sdk": "^4.3.0", "@aeternity/bip39": "^0.1.0", "@aeternity/hd-wallet": "^0.2.0", "@aeternity/ledger-app-api": "0.1.0", diff --git a/public/default.webmanifest b/public/default.webmanifest index f930fb35a..09f095943 100644 --- a/public/default.webmanifest +++ b/public/default.webmanifest @@ -1,6 +1,15 @@ { "name": "Base æpp", "short_name": "Base æpp", + "prefer_related_applications": true, + "related_applications": [{ + "platform": "play", + "url": "https://play.google.com/store/apps/details?id=com.aeternity.base", + "id": "com.aeternity.base" + }, { + "platform": "itunes", + "url": "https://apps.apple.com/app/base-æpp-wallet/id1458655724" + }], "icons": [ { "src": "/favicons/android-chrome-192x192.png", diff --git a/public/ios.webmanifest b/public/ios.webmanifest index fe408baaf..7725c897f 100644 --- a/public/ios.webmanifest +++ b/public/ios.webmanifest @@ -1,6 +1,15 @@ { "name": "Base æpp", "short_name": "Base æpp", + "prefer_related_applications": true, + "related_applications": [{ + "platform": "play", + "url": "https://play.google.com/store/apps/details?id=com.aeternity.base", + "id": "com.aeternity.base" + }, { + "platform": "itunes", + "url": "https://apps.apple.com/app/base-æpp-wallet/id1458655724" + }], "icons": [ { "src": "/favicons/android-chrome-192x192.png", diff --git a/src/AppDesktop.vue b/src/AppDesktop.vue index a8f6be9a3..f37cfd772 100644 --- a/src/AppDesktop.vue +++ b/src/AppDesktop.vue @@ -55,6 +55,5 @@ export default { body { background: $color-neutral-positive-2; - margin: 0; } diff --git a/src/assets/icons/inline/currency.svg b/src/assets/icons/inline/currency.svg new file mode 100644 index 000000000..ac00a5038 --- /dev/null +++ b/src/assets/icons/inline/currency.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/AeAccount.vue b/src/components/AeAccount.vue index 37cdab9dd..8634847ee 100644 --- a/src/components/AeAccount.vue +++ b/src/components/AeAccount.vue @@ -1,21 +1,22 @@ @@ -30,15 +50,20 @@ export default { .balance { @extend %face-mono-base; font-weight: normal; - color: $color-neutral-negative-1; + line-height: normal; + color: $color-neutral-negative-3; + + .left { + color: $color-neutral-negative-1; + font-size: rem(13px); + } &.invert { color: #fff; - } - &:after { - @extend %face-mono-xs; - content: 'AE'; + .left { + color: rgba(255, 255, 255, 0.7); + } } } diff --git a/src/components/ConnectionStatus.vue b/src/components/ConnectionStatus.vue index 9aa6e0b0e..2ce29689e 100644 --- a/src/components/ConnectionStatus.vue +++ b/src/components/ConnectionStatus.vue @@ -17,7 +17,7 @@ export default { if (!onLine) return { text: this.$t('network.connection-status.offline') }; if (!sdk) return { text: this.$t('network.connection-status.no-sdk') }; if (sdk.then) return { text: this.$t('network.connection-status.connecting'), className: 'connecting' }; - if (process.env.NODE_ENV === 'production' && sdk.nodeNetworkId !== 'ae_mainnet') { + if (process.env.NODE_ENV === 'production' && sdk.getNetworkId() !== 'ae_mainnet') { return { text: this.$t('network.connection-status.connected-to-testnet'), className: 'test-net' }; } return null; diff --git a/src/components/CurrencySwitcher.vue b/src/components/CurrencySwitcher.vue new file mode 100644 index 000000000..06d265390 --- /dev/null +++ b/src/components/CurrencySwitcher.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ListItemAccount.vue b/src/components/ListItemAccount.vue index 439520bfe..cef608a02 100644 --- a/src/components/ListItemAccount.vue +++ b/src/components/ListItemAccount.vue @@ -21,9 +21,9 @@ diff --git a/src/components/ListItemSettingsLanguage.vue b/src/components/ListItemSettingsLanguage.vue index 2ede2b090..4dc74be9a 100644 --- a/src/components/ListItemSettingsLanguage.vue +++ b/src/components/ListItemSettingsLanguage.vue @@ -1,6 +1,5 @@