From 6944e7394368b401f226d9ee1726993c78c4418f Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Fri, 5 Apr 2019 13:42:01 +0200 Subject: [PATCH] Make unfinished features disableable --- .env | 1 + .env.production | 1 + src/AppDesktop.vue | 2 +- src/components/desktop/Header.vue | 10 +++++++--- src/components/desktop/Sidebar.vue | 7 +++++-- src/components/mobile/AccountSwitcher.vue | 1 + src/components/mobile/TabBar.vue | 9 ++++++++- src/main.js | 1 + src/pages/mobile/Settings.vue | 1 + src/router/__tests__/index.js | 16 ++++++++-------- src/router/index.js | 4 ++-- src/router/routes/common.js | 4 ++-- src/router/routes/mobile.js | 6 +++--- .../migrations/fix-aes-ctr-counter-issue.js | 2 +- vue.config.js | 2 ++ 15 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 .env.production diff --git a/.env b/.env index 6b75dfa95..d8e810d99 100644 --- a/.env +++ b/.env @@ -1,2 +1,3 @@ VUE_APP_MIGRATION_STATUS_URL=https://api.backendless.com/CBD0589C-4114-2D15-FF41-6FC7F3EE8800/39EBBD6D-5A94-0739-FF27-B17F3957B700/data/TokenBurnings?pageSize=100&where=pubKey%20%3D%20%27ADDRESS%27 VUE_APP_MIGRATION_PHASE=0 +UNFINISHED_FEATURES=true diff --git a/.env.production b/.env.production new file mode 100644 index 000000000..9a11abf6c --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +UNFINISHED_FEATURES=false diff --git a/src/AppDesktop.vue b/src/AppDesktop.vue index 32b5f2272..c7b5f8d5a 100644 --- a/src/AppDesktop.vue +++ b/src/AppDesktop.vue @@ -25,7 +25,7 @@ export default { components: { HeaderDesktop, SidebarDesktop, - FooterDesktop, + FooterDesktop: process.env.UNFINISHED_FEATURES ? FooterDesktop : () => {}, }, computed: mapGetters('modals', ['component', 'hidePage', 'props']), }; diff --git a/src/components/desktop/Header.vue b/src/components/desktop/Header.vue index 0d0515e6c..a25fd226b 100644 --- a/src/components/desktop/Header.vue +++ b/src/components/desktop/Header.vue @@ -29,7 +29,11 @@
{{ account ? account.name : 'Connect an account' }}
- {{ account ? `${prefixedAmount(account.balance)} AE` : 'With Base æpp or Ledger' }} + {{ + account + ? `${prefixedAmount(account.balance)} AE` + : `With ${$globals.UNFINISHED_FEATURES ? 'Base æpp or ' : ''}Ledger` + }}
@@ -59,11 +63,11 @@ export default { name: 'Receive', routeName: 'receive', iconName: 'receive', - }, { + }, ...process.env.UNFINISHED_FEATURES ? [{ name: 'Contacts', routeName: 'address-book', iconName: 'contacts', - }, { + }] : [], { name: 'Settings', routeName: 'settings', iconName: 'settings', diff --git a/src/components/desktop/Sidebar.vue b/src/components/desktop/Sidebar.vue index 7192262b7..5a7b345a1 100644 --- a/src/components/desktop/Sidebar.vue +++ b/src/components/desktop/Sidebar.vue @@ -17,7 +17,10 @@ -
+
({ - ledgerTab: false, + ledgerTab: !process.env.UNFINISHED_FEATURES, }), computed: mapState({ showSidebar: ({ desktop }) => desktop.showSidebar, diff --git a/src/components/mobile/AccountSwitcher.vue b/src/components/mobile/AccountSwitcher.vue index 7df411aea..8742a23e7 100644 --- a/src/components/mobile/AccountSwitcher.vue +++ b/src/components/mobile/AccountSwitcher.vue @@ -38,6 +38,7 @@ diff --git a/src/components/mobile/TabBar.vue b/src/components/mobile/TabBar.vue index a4d7bcbf7..4b59cbe72 100644 --- a/src/components/mobile/TabBar.vue +++ b/src/components/mobile/TabBar.vue @@ -18,7 +18,10 @@ - + Contacts @@ -82,6 +85,10 @@ export default { color: $color-neutral-negative-1; text-align: center; + &:disabled { + color: $color-neutral-negative-3; + } + .ae-icon { font-size: 20px; display: block; diff --git a/src/main.js b/src/main.js index 53fb6efa9..664f12bdd 100644 --- a/src/main.js +++ b/src/main.js @@ -25,6 +25,7 @@ Vue.config.productionTip = false; Vue.prototype.$globals = { IS_MOBILE_DEVICE: process.env.IS_MOBILE_DEVICE, IS_IOS: process.env.IS_IOS, + UNFINISHED_FEATURES: process.env.UNFINISHED_FEATURES, }; new Vue({ diff --git a/src/pages/mobile/Settings.vue b/src/pages/mobile/Settings.vue index 36d75242c..d8380a82e 100644 --- a/src/pages/mobile/Settings.vue +++ b/src/pages/mobile/Settings.vue @@ -44,6 +44,7 @@ /> { ); it( - 'pushes INTRO path if current route is APPS and no keystore is present', - createRedirectTest({}, 'apps', 'intro'), + 'pushes INTRO path if current route is TRANSFER and no keystore is present', + createRedirectTest({}, 'transfer', 'intro'), ); it( @@ -52,10 +52,10 @@ describe('router/index.js', () => { ); it( - 'pushes LOGIN path if current route is APPS and keystore is present but not derivedKey', + 'pushes LOGIN path if current route is TRANSFER and keystore is present but not derivedKey', createRedirectTest({ mobile: { keystore: {}, derivedKey: false }, - }, 'apps', 'login'), + }, 'transfer', 'login'), ); it( @@ -66,10 +66,10 @@ describe('router/index.js', () => { ); it( - 'pushes APPS path if current route is LOGIN and keystore is present and derivedKey', + 'pushes TRANSFER path if current route is LOGIN and keystore is present and derivedKey', createRedirectTest({ mobile: { keystore: {}, derivedKey: true }, - }, 'login', 'apps'), + }, 'login', 'transfer'), ); it( @@ -80,10 +80,10 @@ describe('router/index.js', () => { ); it( - 'does not interfere when current route is APPS and keystore is present and derivedKey', + 'does not interfere when current route is TRANSFER and keystore is present and derivedKey', createNoRedirectTest({ mobile: { keystore: {}, derivedKey: true }, - }, 'apps'), + }, 'transfer'), ); it( diff --git a/src/router/index.js b/src/router/index.js index 9be81e99d..eb77e0368 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -22,12 +22,12 @@ store.watch( (loggedIn) => { if (loggedIn) { if (process.env.IS_MOBILE_DEVICE || store.state.loginTarget) { - router.push(store.state.loginTarget || { name: 'apps' }); + router.push(store.state.loginTarget || { name: 'transfer' }); store.commit('setLoginTarget'); } } else { store.commit('setLoginTarget', router.currentRoute.fullPath); - router.push({ name: process.env.IS_MOBILE_DEVICE ? 'intro' : 'apps' }); + router.push({ name: process.env.IS_MOBILE_DEVICE ? 'intro' : 'transfer' }); } }, ); diff --git a/src/router/routes/common.js b/src/router/routes/common.js index 38cd40a15..e7c2947df 100644 --- a/src/router/routes/common.js +++ b/src/router/routes/common.js @@ -4,7 +4,7 @@ import AddressBook from '../../pages/AddressBook.vue'; import AddressBookNew from '../../pages/AddressBookNew.vue'; import AddressBookChoose from '../../pages/AddressBookChoose.vue'; -export default [{ +export default process.env.UNFINISHED_FEATURES ? [{ name: 'address-book', path: '/addresses', component: AddressBook, @@ -20,4 +20,4 @@ export default [{ component: AddressBookChoose, beforeEnter: checkLoggedIn(true), props: true, -}].map(route => merge(route, { meta: { displayFooter: true } })); +}].map(route => merge(route, { meta: { displayFooter: true } })) : []; diff --git a/src/router/routes/mobile.js b/src/router/routes/mobile.js index 94a78e3f8..efff89fb0 100644 --- a/src/router/routes/mobile.js +++ b/src/router/routes/mobile.js @@ -76,7 +76,7 @@ export default [{ return; } if (store.getters.loggedIn) { - next({ name: 'apps' }); + next({ name: 'transfer' }); return; } next(); @@ -193,7 +193,7 @@ export default [{ meta: { displayFooter: true, }, -}, { +}, ...process.env.UNFINISHED_FEATURES ? [{ name: 'settings-remote-connection', path: '/settings/remote-connection', component: SettingsRemoteConnection, @@ -206,4 +206,4 @@ export default [{ path: '/settings/remote-connection/new', component: SettingsRemoteConnectionNew, beforeEnter: checkLoggedIn(true), -}]; +}] : []]; diff --git a/tests/e2e/specs/migrations/fix-aes-ctr-counter-issue.js b/tests/e2e/specs/migrations/fix-aes-ctr-counter-issue.js index 1f42ccb80..a81bd8fec 100644 --- a/tests/e2e/specs/migrations/fix-aes-ctr-counter-issue.js +++ b/tests/e2e/specs/migrations/fix-aes-ctr-counter-issue.js @@ -37,7 +37,7 @@ describe('Migration: Fix AES-CTR counter issue', () => { .contains('Log in') .click() .url() - .should('contain', '/browser') + .should('contain', '/transfer') .then(() => { const state = JSON.parse(localStorage.vuex); expect(state.migrations[0]).equal(true); diff --git a/vue.config.js b/vue.config.js index 0255388e1..8c52d36f7 100644 --- a/vue.config.js +++ b/vue.config.js @@ -3,6 +3,7 @@ const parseBool = val => (val ? JSON.parse(val) : false); // eslint-disable-next-line camelcase const { IS_MOBILE_DEVICE, IS_PWA, npm_package_version } = process.env; const IS_CORDOVA = parseBool(process.env.IS_CORDOVA); +const UNFINISHED_FEATURES = parseBool(process.env.UNFINISHED_FEATURES); module.exports = { publicPath: IS_CORDOVA ? './' : '/', @@ -16,6 +17,7 @@ module.exports = { delete definitions['process.env']; definitions['process.env.IS_CORDOVA'] = IS_CORDOVA; + definitions['process.env.UNFINISHED_FEATURES'] = UNFINISHED_FEATURES; if (IS_CORDOVA || IS_MOBILE_DEVICE) { definitions['process.env.IS_MOBILE_DEVICE'] = IS_CORDOVA || parseBool(process.env.IS_MOBILE_DEVICE);