From 8c3ca6f0975c886330da216ab5e416fa2df12477 Mon Sep 17 00:00:00 2001 From: Krzysztof Modras Date: Thu, 28 Sep 2023 17:23:12 +0200 Subject: [PATCH] Remove requirement for Ghostery account --- app/content-scripts/panel/App/App.jsx | 2 - app/insights/App/App.jsx | 13 +--- .../PageNotScannedOverlay.jsx | 9 +-- .../PageNotScannedOverlay.scss | 4 -- .../App/PageNotScannedOverlay/index.js | 1 - app/insights/App/index.js | 1 - app/shared-components/Header/Header.jsx | 12 ---- app/shared-components/Settings/Settings.jsx | 69 +------------------ app/store/reducers/SettingsReducer.js | 1 - src/background.js | 7 -- src/classes/Account.js | 9 +-- src/classes/BrowserAction.js | 7 +- src/classes/EventHandlers.js | 23 ------- src/classes/Messaging.js | 38 ---------- src/classes/Metrics.js | 17 +---- src/classes/TabDetails.js | 11 +-- 16 files changed, 9 insertions(+), 215 deletions(-) diff --git a/app/content-scripts/panel/App/App.jsx b/app/content-scripts/panel/App/App.jsx index dcf4257..353df6a 100644 --- a/app/content-scripts/panel/App/App.jsx +++ b/app/content-scripts/panel/App/App.jsx @@ -9,7 +9,6 @@ import TrackerDistributionGraph from '../../../shared-components/TrackerDistribu import PageLatencyGraph from '../../../shared-components/PageLatencyGraph'; import PageSizeGraph from '../../../shared-components/PageSizeGraph'; import ThemedToast from '../../../shared-components/ThemedToast'; -import AccessDeniedOverlay from '../../../shared-components/AccessDeniedOverlay'; import './styles.scss'; import onMessage from '../../../store/messages/messageListeners'; @@ -53,7 +52,6 @@ class App extends Component { const { handleClick } = this; return ( -
diff --git a/app/insights/App/App.jsx b/app/insights/App/App.jsx index 3e6c422..e9d5b51 100644 --- a/app/insights/App/App.jsx +++ b/app/insights/App/App.jsx @@ -7,7 +7,6 @@ import Header from '../../shared-components/Header'; import PageStats from '../../shared-components/PageStats'; import ThemedTabs from '../../shared-components/ThemedTabs'; import ThemedToast from '../../shared-components/ThemedToast'; -import AccessDeniedOverlay from '../../shared-components/AccessDeniedOverlay'; import PageNotScannedOverlay from './PageNotScannedOverlay'; import OverviewTab from './OverviewTab'; import GlobalTrendsTab from './GlobalTrendsTab'; @@ -36,13 +35,6 @@ class App extends Component { } } - componentDidUpdate(prevProps) { - const { signedIn } = this.props; - if (signedIn !== prevProps.signedIn) { - this.containerRef.scrollTop = 0; - } - } - handleClick = () => { window.port.postMessage({ type: 'FocusParentTab' }); } @@ -55,19 +47,17 @@ class App extends Component { } render() { - const { parentTabUrl, signedIn } = this.props; + const { parentTabUrl } = this.props; const containerClassNames = ClassNames( 'App__container', 'd-flex', 'justify-content-center', - { noScroll: !signedIn }, ); return ( -
{ this.containerRef = node; }} @@ -112,7 +102,6 @@ App.propTypes = { messageCreators: PropTypes.shape({ sendMetrics: PropTypes.func.isRequired, }).isRequired, - signedIn: PropTypes.bool.isRequired, }; export default App; diff --git a/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.jsx b/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.jsx index 15fc6b6..a4491a3 100644 --- a/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.jsx +++ b/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.jsx @@ -2,10 +2,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import Navbar from 'react-bootstrap/Navbar'; import './PageNotScannedOverlay.scss'; -import ClassNames from 'classnames'; const PageNotScannedOverlay = (props) => { - const { isPageNotScanned, signedIn } = props; + const { isPageNotScanned } = props; const logoUrlRoot = 'dist/images/logo-icons'; const pageNotScannedIcon = `${logoUrlRoot}/icon_pageNotScanned.svg`; const logoIcon = `${logoUrlRoot}/insights-white-text-beta.svg`; @@ -24,17 +23,12 @@ const PageNotScannedOverlay = (props) => { link: { copy: 'Reach out to Support' }, }; - const logoClassNames = ClassNames('PageNotScannedOverlay__logo', { - signedIn, - }); - return ( {isPageNotScanned && (
{ PageNotScannedOverlay.propTypes = { isPageNotScanned: PropTypes.bool.isRequired, - signedIn: PropTypes.bool.isRequired, }; export default PageNotScannedOverlay; diff --git a/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.scss b/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.scss index 847dfce..9023691 100644 --- a/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.scss +++ b/app/insights/App/PageNotScannedOverlay/PageNotScannedOverlay.scss @@ -17,10 +17,6 @@ .PageNotScannedOverlay__logo { position: absolute; margin: -136px 0 0 -414px; - - &.signedIn { - margin: -136px 0 0 -845px; - } } .PageNotScannedOverlay__image { diff --git a/app/insights/App/PageNotScannedOverlay/index.js b/app/insights/App/PageNotScannedOverlay/index.js index bb8863c..89ea922 100644 --- a/app/insights/App/PageNotScannedOverlay/index.js +++ b/app/insights/App/PageNotScannedOverlay/index.js @@ -3,7 +3,6 @@ import PageNotScannedOverlay from './PageNotScannedOverlay.jsx'; const mapStateToProps = state => ({ isPageNotScanned: state.PageInfoReducer.isPageNotScanned, - signedIn: state.SettingsReducer.userInfo.signedIn, }); export default connect(mapStateToProps, null)(PageNotScannedOverlay); diff --git a/app/insights/App/index.js b/app/insights/App/index.js index a3d5434..5788cf7 100644 --- a/app/insights/App/index.js +++ b/app/insights/App/index.js @@ -34,7 +34,6 @@ const mapStateToProps = state => ({ parentTabUrl: state.PageInfoReducer.parentTabUrl, showToasts: state.SettingsReducer.localSettings.showToasts, messageCreators: { sendMetrics }, - signedIn: state.SettingsReducer.userInfo.signedIn, }); const mapDispatchToProps = dispatch => ({ diff --git a/app/shared-components/Header/Header.jsx b/app/shared-components/Header/Header.jsx index 68059c5..da01890 100644 --- a/app/shared-components/Header/Header.jsx +++ b/app/shared-components/Header/Header.jsx @@ -49,19 +49,7 @@ class Header extends Component { } _showDropdown() { - const { - userInfo: { - freeTrial, - signedIn, - insightsUser, - }, - } = this.props; const { dropdownToggle } = this.state; - - if (!signedIn) return true; - - if (!insightsUser && !freeTrial) return false; - return dropdownToggle; } diff --git a/app/shared-components/Settings/Settings.jsx b/app/shared-components/Settings/Settings.jsx index 03efed7..d8b0e31 100644 --- a/app/shared-components/Settings/Settings.jsx +++ b/app/shared-components/Settings/Settings.jsx @@ -6,7 +6,6 @@ import Nav from 'react-bootstrap/Nav'; import Globals from '../../../src/classes/Globals'; import FavoriteTrackersSearch from './FavoriteTrackersSearch'; -import AccountPanel from './AccountPanel'; import './Settings.scss'; const { @@ -48,10 +47,8 @@ class Settings extends Component { closeDropdown, panel, messageCreators, - userInfo, showBlueBar, showToasts, - actions, isPageNotScanned, } = this.props; const { view, viewLinks } = this.state; @@ -71,16 +68,6 @@ class Settings extends Component { 'align-items-center', { on: showToasts }, ); - const badgeContainerClasses = ClassNames( - 'Settings__accountBadge', - 'd-flex', - 'align-items-center', - { gradient: userInfo.freeTrial }, - ); - const badgeImageClasses = ClassNames( - 'Settings__insightsBadge', - { white: userInfo.freeTrial }, - ); const blueBarToggleText = showBlueBar ? 'On' : 'Off'; const toastToggleText = showToasts ? 'On' : 'Off'; const displayLinks = viewLinks[view]; @@ -89,8 +76,7 @@ class Settings extends Component { {!isPageNotScanned && (
- {!userInfo.signedIn && } - {userInfo.signedIn && view === 'mainTabs' && ( + {view === 'mainTabs' && (
-
- Insights badge - {userInfo.freeTrial && ( -
- You are on a free trial. -
- )} -
-
this.handleClickSetView('support')} - > - Support -

Support

-
this.handleClickSetView('about')} @@ -206,38 +169,11 @@ class Settings extends Component { />

About

- {userInfo.signedIn && ( - -
messageCreators.openAccountPage()} - > - User -

- {userInfo.email || 'No Email On File'} -

-
-

{ - actions.closeToast(); - messageCreators.logout(); - messageCreators.sendMetrics({ type: 'sign_out', insightsView: panel ? '2' : '3' }); - }} - > - Sign out -

-
- )}
)} - {userInfo.signedIn && displayLinks && ( + {displayLinks && (
{ initializeEventListeners(); @@ -192,6 +186,5 @@ function init() { init(); if (Globals.DEBUG) { - window._Account = Account; window._Settings = Settings; } diff --git a/src/classes/Account.js b/src/classes/Account.js index 02fed73..9fbcf02 100644 --- a/src/classes/Account.js +++ b/src/classes/Account.js @@ -162,13 +162,7 @@ class Account { * @returns {boolean} */ showEndOfFreeTrialPopup() { - return ( - Settings.get('freeTrialStatus') === 'expired' - && !Settings.get('endOfFreeTrialPopupAcknowledged') - && this.isSignedIn() - && !this._freeTrial - && !this._allowInsights - ); + return false; } /** @@ -252,7 +246,6 @@ class Account { return { email: this._getUserEmail(), emailVerified: this._isEmailVerified(), - signedIn: this.isSignedIn(), insightsUser: this._isInsightsUser(), freeTrial: this._freeTrial, freeTrialDaysRemaining: this._freeTrialDaysRemaining(), diff --git a/src/classes/BrowserAction.js b/src/classes/BrowserAction.js index 7326e91..6e13617 100644 --- a/src/classes/BrowserAction.js +++ b/src/classes/BrowserAction.js @@ -10,7 +10,6 @@ * Insights by Ghostery */ -import Account from './Account'; import TabDetails from './TabDetails'; import Tabs from './Tabs'; @@ -38,11 +37,7 @@ class BrowserButton { _getIcon(id, url, pendingUrl) { let icon = ''; - if (!Account.isSignedIn()) { - icon = '_lock'; - } else if (Account.isTrialExpired()) { - icon = '_endOfTrialAlert'; - } else if (url && url.startsWith('chrome-extension')) { + if (url && url.startsWith('chrome-extension')) { icon = '_reloadAlert'; } else if (pendingUrl && pendingUrl.startsWith('chrome-extension')) { icon = ''; diff --git a/src/classes/EventHandlers.js b/src/classes/EventHandlers.js index 02760b1..19d6b7d 100644 --- a/src/classes/EventHandlers.js +++ b/src/classes/EventHandlers.js @@ -22,16 +22,12 @@ /* eslint no-unused-vars: 0 */ -import throttle from 'lodash.throttle'; import Messaging from './Messaging'; import BrowserAction from './BrowserAction'; -import Account from './Account'; import TabDetails from './TabDetails'; import RequestDetails from './RequestDetails'; -import Tabs from './Tabs'; import Globals from './Globals'; import Metrics from './Metrics'; -import Settings from './Settings'; import { isValidTopLevelNavigation, processUrl, isValidUrl } from '../utils/utils'; import { log } from '../utils/common'; @@ -63,25 +59,6 @@ class EventHandlers { Messaging.onMessage(message, sender, sendResponse); } - // Event Handlers for chrome.cookies - onCookieChanged({ removed, cookie, cause }) { - const { domain, name } = cookie; - - const cookiesToWatch = ['user_id', 'access_token']; - if (domain.includes(GHOSTERY_DOMAIN) && cookiesToWatch.includes(name)) { - if (name === 'user_id' && !removed && cause === 'explicit') { - Metrics.ping({ type: 'sign_in_success' }); - } - this.throttleWatchedCookieChanged(); - } - } - - throttleWatchedCookieChanged = throttle(() => { - Account.checkInsightsUser().then(() => { - Messaging.updateApp(Account.getUserInfo()); - }); - }, 100, { leading: false, trailing: true }); - // Event Handlers for chrome.browserAction onClicked({ id, url }) { Metrics.ping({ type: 'engaged' }); diff --git a/src/classes/Messaging.js b/src/classes/Messaging.js index d74292e..d9e7af9 100644 --- a/src/classes/Messaging.js +++ b/src/classes/Messaging.js @@ -11,7 +11,6 @@ import TabDetails from './TabDetails'; import RequestDetails from './RequestDetails'; -import Account from './Account'; import Globals from './Globals'; import Settings from './Settings'; import BrowserAction from './BrowserAction'; @@ -33,7 +32,6 @@ class Messaging { TabDetails.setPort(tabId, 'window', port); port.onMessage.addListener(this.onPortMessageWindow.bind(this)); port.onDisconnect.addListener(this.onPortDisconnectWindow.bind(this)); - Account.checkAccessCookie(); break; } case 'app': { @@ -43,7 +41,6 @@ class Messaging { TabDetails.setAppDetails(tabId, { appTabId }); port.onMessage.addListener(this.onPortMessageApp.bind(this)); port.onDisconnect.addListener(this.onPortDisconnectApp.bind(this)); - Account.checkAccessCookie(); break; } default: { @@ -70,26 +67,6 @@ class Messaging { }); break; } - case 'Login': { - Account.login(message.data, responseMessage); - break; - } - case 'Register': { - Account.register(message.data, responseMessage); - break; - } - case 'ResetPassword': { - Account.resetPassword(message.data, responseMessage); - break; - } - case 'Logout': { - Account.logout(); - break; - } - case 'SendEmailVerification': { - Account.sendEmailVerification(responseMessage); - break; - } case 'Metrics': { Metrics.ping(message.data); break; @@ -170,24 +147,10 @@ class Messaging { port.postMessage({ type: 'Settings', data: Settings.get() }); break; } - case 'RequestEndOfFreeTrialPopup': { - if (Account.showEndOfFreeTrialPopup()) { - port.postMessage({ type: 'InjectEndOfFreeTrialPopup' }); - } - break; - } case 'MarkEndOfFreeTrialPopupAcknowledged': { Settings.set('endOfFreeTrialPopupAcknowledged', true); break; } - case 'RequestUserInfo': { - Account.sendUserInfo(responseMessage, this.updateApp); - break; - } - case 'UpdateUserInfo': { - Account.updateAndSendUserInfo(responseMessage, this.updateApp); - break; - } // Used only by Window case 'MarkTabIconExplainerAcknowledged': { @@ -270,7 +233,6 @@ class Messaging { log(`debugging called from TabId ${tabId}`); TabDetails.log(); RequestDetails.log(); - Account.log(); return true; } case 'reloadTab': { diff --git a/src/classes/Metrics.js b/src/classes/Metrics.js index 83dd736..b9ff9f6 100644 --- a/src/classes/Metrics.js +++ b/src/classes/Metrics.js @@ -7,7 +7,6 @@ */ import Globals from './Globals'; -import Account from './Account'; import Settings from './Settings'; import { log } from '../utils/common'; import { processUrlQuery } from '../utils/utils'; @@ -159,11 +158,11 @@ class Metrics { // Install Date + `&id=${encodeURIComponent(metrics.install_date)}` // Login state (former signed_in) - + `&sn=${encodeURIComponent(Account.getUserInfo().signedIn ? '1' : '0')}` + + '&sn=-1' // Recency, days since last active daily ping + `&rc=${encodeURIComponent(this._getRecencyActive(type, frequency).toString())}` // Subscription Type - + `&st=${encodeURIComponent(this._getSubscriptionType().toString())}` + + '&st=-1' // Active Velocity + `&va=${encodeURIComponent(this._getVelocityActive(type).toString())}` // Engaged Recency @@ -292,18 +291,6 @@ class Metrics { return engaged_daily_velocity.filter(el => el > today - 7).length; } - /** - * Get the Subscription Type - * @return {string} Subscription Name - */ - _getSubscriptionType() { - const { email, signedIn, insightsUser } = Account.getUserInfo(); - if (!email || !signedIn || !insightsUser) { - return -1; - } - return 'INSIGHTS'; - } - /** * Calculate remaining scheduled time for a ping * diff --git a/src/classes/TabDetails.js b/src/classes/TabDetails.js index e3de401..27ec11d 100644 --- a/src/classes/TabDetails.js +++ b/src/classes/TabDetails.js @@ -19,7 +19,6 @@ import isEmpty from 'lodash.isempty'; import throttle from 'lodash.throttle'; -import Account from './Account'; import RequestsByTracker from './RequestsByTracker'; import RequestsByType from './RequestsByType'; import Tabs from './Tabs'; @@ -189,9 +188,6 @@ class TabDetails { if (panel) { port.postMessage({ type: 'RemovePanel' }); this._tabDetails[tabId].windowScripts.panel = false; - } else if (Account.eligibleForFreeTrial()) { - Account.startFreeTrial() - .finally(() => this._finishOpeningPanel(tabId, port)); } else { this._finishOpeningPanel(tabId, port); } @@ -210,12 +206,7 @@ class TabDetails { const { opened, appTabId } = this._tabDetails[tabId].appDetails; if (!opened) { - if (Account.eligibleForFreeTrial()) { - Account.startFreeTrial() - .finally(() => this._finishOpeningApp(tabId, insightsInnerTab)); - } else { - this._finishOpeningApp(tabId, insightsInnerTab); - } + this._finishOpeningApp(tabId, insightsInnerTab); } if (appTabId) { Tabs.focusTabById(appTabId, insightsInnerTab);