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);