From 550a7e0a8cf0b5e9d0646153a0de9e346b54740c Mon Sep 17 00:00:00 2001 From: Evan Morikawa Date: Mon, 31 Aug 2015 17:13:12 -0700 Subject: [PATCH] refactor(packages): move internal sidebar to own repo Fixes T3425 Remove Nylas internal admin sidebar from default edgehill --- .../lib/internal-admin-store.coffee | 87 ------------ .../sidebar-inbox-internal/lib/main.cjsx | 16 --- .../lib/sidebar-internal.cjsx | 129 ------------------ .../sidebar-inbox-internal/package.json | 13 -- .../stylesheets/sidebar-internal.less | 49 ------- 5 files changed, 294 deletions(-) delete mode 100644 internal_packages/sidebar-inbox-internal/lib/internal-admin-store.coffee delete mode 100644 internal_packages/sidebar-inbox-internal/lib/main.cjsx delete mode 100644 internal_packages/sidebar-inbox-internal/lib/sidebar-internal.cjsx delete mode 100755 internal_packages/sidebar-inbox-internal/package.json delete mode 100644 internal_packages/sidebar-inbox-internal/stylesheets/sidebar-internal.less diff --git a/internal_packages/sidebar-inbox-internal/lib/internal-admin-store.coffee b/internal_packages/sidebar-inbox-internal/lib/internal-admin-store.coffee deleted file mode 100644 index df30b0d71..000000000 --- a/internal_packages/sidebar-inbox-internal/lib/internal-admin-store.coffee +++ /dev/null @@ -1,87 +0,0 @@ -_ = require 'underscore' -Reflux = require 'reflux' -request = require 'request' -{FocusedContactsStore, - AccountStore, - PriorityUICoordinator} = require 'nylas-exports' - -module.exports = -# The InternalAdminStore manages the data that backs the admin sidebar and emits -# a "trigger" event that the view listens to. -# -# If the Admin sidebar allowed you to take actions, like modifying someone's -# Nylas account, the InternalAdminStore would also listen for those user actions -# and perform business logic. -# -InternalAdminStore = Reflux.createStore - - init: -> - @_accountCache = null - @_enabled = false - @_error = null - - # Stores often listen to other stores to vend correct data to their views. - # Since we serve information about a contact we listen for changes to the - # focused contact. Since we only want to be enabled for @nylas.com emails, - # we listen for changes to available Accounts. - @listenTo FocusedContactsStore, @_onFocusedContacts - @listenTo AccountStore, @_onAccountChanged - - @_onAccountChanged() - - - dataForFocusedContact: -> - return {loading: true} if @_accountCache is null - contact = FocusedContactsStore.focusedContact() - return {} unless contact - - account = _.find @_accountCache, (account) -> account.email is contact.email - apps = undefined - apps = account.applications if account - - # Coffeescript shorthand for {account: account, apps: apps} - {account, apps} - - enabled: -> - @_enabled - - error: -> - @_error - - _onFocusedContacts: -> - # When the user focuses on a contact, we don't need to do any work because we - # cache everything. Just trigger so that our view updates and calls - # `dataForFocusedContact`. - @trigger(@) - - _onAccountChanged: -> - clearInterval(@_fetchInterval) if @_fetchInterval - @_fetchInterval = null - - # We only want to enable this package for users with nylas.com email addresses. - n = AccountStore.current() - if n and n.emailAddress.indexOf('@nylas.com') > 0 - @_fetchInterval = setInterval(( => @_fetchAPIData()), 5 * 60 * 1000) - @_fetchAPIData() - @_enabled = true - else - @_accountCache = null - @_enabled = false - @trigger(@) - - _fetchAPIData: -> - # Make a HTTP request to the Admin service using the `request` library. Using - # the priority UI coordinator ensures that the expensive JSON.parse operation - # doesn't happen while an animation is running. - request 'https://admin.nylas.com/api/status/accounts', (err, resp, data) => - PriorityUICoordinator.settle.then => - if err - @_error = err - else - @_error = null - try - @_accountCache = JSON.parse(data) - catch err - @_error = err - @_accountCache = null - @trigger(@) diff --git a/internal_packages/sidebar-inbox-internal/lib/main.cjsx b/internal_packages/sidebar-inbox-internal/lib/main.cjsx deleted file mode 100644 index b32463901..000000000 --- a/internal_packages/sidebar-inbox-internal/lib/main.cjsx +++ /dev/null @@ -1,16 +0,0 @@ -_ = require 'underscore' -React = require "react" -SidebarInternal = require "./sidebar-internal" -{ComponentRegistry, WorkspaceStore} = require "nylas-exports" - -module.exports = - item: null - - activate: (@state={}) -> - ComponentRegistry.register SidebarInternal, - location: WorkspaceStore.Location.MessageListSidebar - - deactivate: -> - ComponentRegistry.unregister(SidebarInternal) - - serialize: -> @state diff --git a/internal_packages/sidebar-inbox-internal/lib/sidebar-internal.cjsx b/internal_packages/sidebar-inbox-internal/lib/sidebar-internal.cjsx deleted file mode 100644 index 7bbfcd709..000000000 --- a/internal_packages/sidebar-inbox-internal/lib/sidebar-internal.cjsx +++ /dev/null @@ -1,129 +0,0 @@ -_ = require 'underscore' -React = require "react" -moment = require 'moment-timezone' -InternalAdminStore = require "./internal-admin-store" - -AccountStates = - "developer_program": "Developer Program" - "trial-expired": "Trial Expired" - "paid": "Paid" - "cancelled": "Cancelled" - -AccountKeys = - "deleted_at": "Deleted At" - "healthy": "Healthy" - "initial_sync": "Initial Sync" - "is_enabled": "Enabled" - "account_id": "Account Id" - "provider": "Provider" - "remote_count": "Remote Count" - "state": "State" - "status": "Status" - "sync_disabled_reason": "Sync Disabled Reason" - "sync_end_time": "Sync End Time" - "sync_error": "Sync Error" - "sync_host": "Sync Host" - "sync_restart_time": "Sync Restart Time" - "sync_start_time": "Sync Start Time" - "sync_type": "Sync Type" - - -class SidebarInternal extends React.Component - @displayName: "SidebarInternal" - - @containerStyles: - order: 10 - maxWidth: 300 - minWidth: 200 - - constructor: (@props) -> - @state = @_getStateFromStores() - - componentDidMount: => - @unsubscribe = InternalAdminStore.listen @_onChange - - componentWillUnmount: => - @unsubscribe() - - render: => - return
unless @state.enabled - -
-
-
-

Mailsync Account

- {@_renderAccount()} -
-
-

Authenticated Applications

- {@_renderApplications()} -
-
-
- - _renderAccount: => - if @state.error - return
{@_errorString()}
- else if @state.data.loading - return
Loading...
- else - acct = @state.data.account - if acct -
-

{acct.email} ({acct.id})

-
{@_accountDetails(acct)}
-
- else -
No Matching Account
- - _renderApplications: => - if @state.error - return
{@_errorString()}
- else if @state.data.loading - return
Loading...
- else if @state.data.apps - @state.data.apps.map (app) => -
-

{app.name}

-
{@_appDetails(app)}
-
- else -
No Matching Applications
- - _errorString: => - if @state.error.toString().indexOf('ENOTFOUND') >= 0 - "Unable to reach admin.nylas.com" - else - @state.error.toString() - - _accountUrl: (account) => - "https://admin.nylas.com/accounts/#{account.id}" - - _accountDetails: (account) => - cjsx = [] - for key, value of account - displayName = AccountKeys[key] - continue unless displayName - continue unless value - value = "True" if value is true - value = "False" if value is false - value = moment.unix(value).format("DD / MM / YYYY h:mm a z") if key.indexOf("_time") > 0 - cjsx.push
{displayName}:{value}
- cjsx - - _appUrl: (app) => - "https://admin.nylas.com/apps/#{app.id}" - - _appDetails: (app) => - "No Extra Details" - - _onChange: => - @setState(@_getStateFromStores()) - - _getStateFromStores: => - data: InternalAdminStore.dataForFocusedContact() - enabled: InternalAdminStore.enabled() - error: InternalAdminStore.error() - - -module.exports = SidebarInternal diff --git a/internal_packages/sidebar-inbox-internal/package.json b/internal_packages/sidebar-inbox-internal/package.json deleted file mode 100755 index 7d9642c80..000000000 --- a/internal_packages/sidebar-inbox-internal/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "sidebar-inbox-internal", - "version": "0.1.0", - "main": "./lib/main", - "description": "View user data on the sidebar from inbox internal systems", - "license": "Proprietary", - "private": true, - "engines": { - "atom": "*" - }, - "dependencies": { - } -} diff --git a/internal_packages/sidebar-inbox-internal/stylesheets/sidebar-internal.less b/internal_packages/sidebar-inbox-internal/stylesheets/sidebar-internal.less deleted file mode 100644 index 4b70e0217..000000000 --- a/internal_packages/sidebar-inbox-internal/stylesheets/sidebar-internal.less +++ /dev/null @@ -1,49 +0,0 @@ -@import "ui-variables"; - -.internal-sidebar { - padding: @spacing-standard; - padding-bottom: 0; - order: 4; - flex-shrink: 0; - - a{text-decoration: none} - - .sidebar-section { - margin-top: @spacing-double; - font-size: @font-size-smaller; - &:first-child {margin-top: 0} - } - - .internal-prompt { - color: fade(@text-color, 30%); - ul { - list-style: none; - padding-left: 0; - } - } - - .internal-no-connect-placeholder { - text-align: center; - margin: @spacing-double 0; - } - - h3.sidebar-h3 { - font-size: @font-size-smaller; - font-weight: @font-weight-normal; - margin: 1em 0 0.4em 0; - } - .sidebar-extra-info { - font-size: 11px; - font-weight: @font-weight-medium; - color: @text-color-subtle; - } - - h2.sidebar-h2 { - font-size: 11px; - font-weight: @font-weight-semi-bold; - text-transform: uppercase; - color: @text-color-very-subtle; - border-bottom: 1px solid @border-color-divider; - margin: 2em 0 1em 0; - } -}