From c1eb4e65404e07477aa52465cece7b17eb9d2322 Mon Sep 17 00:00:00 2001 From: Rish Date: Wed, 8 Jul 2020 10:25:57 +0530 Subject: [PATCH] Updated custom data attribute name and value no issue - Adds guard to open right page based on member logged in state from data attribute - Updated data attribute name to `data-portal` and values same as link handling --- ghost/portal/src/App.js | 38 ++++++++++++------- .../portal/src/components/pages/SigninPage.js | 9 +++++ .../portal/src/components/pages/SignupPage.js | 9 +++++ 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/ghost/portal/src/App.js b/ghost/portal/src/App.js index 64a47f8a63..c3e89e7003 100644 --- a/ghost/portal/src/App.js +++ b/ghost/portal/src/App.js @@ -143,21 +143,31 @@ export default class App extends React.Component { return this.getStateFromQueryString(qs); } - if (path === '/portal/signup') { - previewState.page = 'signup'; - } else if (path === '/portal/signin') { - previewState.page = 'signin'; - } else if (path === '/portal/account') { - previewState.page = 'accountHome'; - } else if (path === '/portal/account/plans') { - previewState.page = 'accountPlan'; - } else if (path === '/portal/account/profile') { - previewState.page = 'accountProfile'; + if (path.startsWith('/portal/')) { + const pagePath = path.replace('/portal/', ''); + const pageFromPath = this.getPageFromPath(pagePath); + if (pageFromPath) { + previewState.page = 'signup'; + } } } return previewState; } + getPageFromPath(path) { + if (path === 'signup') { + return 'signup'; + } else if (path === 'signin') { + return 'signin'; + } else if (path === 'account') { + return 'accountHome'; + } else if (path === 'account/plans') { + return 'accountPlan'; + } else if (path === 'account/profile') { + return 'accountProfile'; + } + } + getPreviewMember() { const [path, qs] = window.location.hash.substr(1).split('?'); @@ -222,12 +232,13 @@ export default class App extends React.Component { this.clickHandler = (event) => { const target = event.currentTarget; const {page: defaultPage} = this.getDefaultPage(); - const page = (target && target.dataset.membersTriggerButton) || defaultPage; + const pagePath = (target && target.dataset.portal); + const pageFromPath = this.getPageFromPath(pagePath) || defaultPage; event.preventDefault(); - this.onAction('openPopup', {page}); + this.onAction('openPopup', {page: pageFromPath}); }; - const customTriggerSelector = '[data-members-trigger-button]'; + const customTriggerSelector = '[data-portal]'; const popupCloseClass = 'gh-members-popup-close'; this.customTriggerButtons = document.querySelectorAll(customTriggerSelector) || []; this.customTriggerButtons.forEach((customTriggerButton) => { @@ -373,7 +384,6 @@ export default class App extends React.Component { render() { if (this.state.initStatus === 'success') { const {site, member, action, page, lastPage} = this.state; - return (