aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/pages/settings/settings.container.js
blob: 8fe6614df521f50a66cbd6de1ab5c9a12e634e25 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import Settings from './settings.component'
import { compose } from 'recompose'
import { connect } from 'react-redux'
import { withRouter } from 'react-router-dom'
import { getAddressBookEntryName } from '../../selectors/selectors'
import { isValidAddress } from '../../helpers/utils/util'
import { ENVIRONMENT_TYPE_POPUP } from '../../../../app/scripts/lib/enums'
import { getEnvironmentType } from '../../../../app/scripts/lib/util'

import {
  CONNECTIONS_ROUTE,
  ADVANCED_ROUTE,
  SECURITY_ROUTE,
  GENERAL_ROUTE,
  ABOUT_US_ROUTE,
  SETTINGS_ROUTE,
  CONTACT_LIST_ROUTE,
  CONTACT_ADD_ROUTE,
  CONTACT_EDIT_ROUTE,
  CONTACT_VIEW_ROUTE,
  CONTACT_MY_ACCOUNTS_ROUTE,
  CONTACT_MY_ACCOUNTS_EDIT_ROUTE,
  CONTACT_MY_ACCOUNTS_VIEW_ROUTE,
} from '../../helpers/constants/routes'

const ROUTES_TO_I18N_KEYS = {
  [GENERAL_ROUTE]: 'general',
  [CONNECTIONS_ROUTE]: 'connections',
  [ADVANCED_ROUTE]: 'advanced',
  [SECURITY_ROUTE]: 'securityAndPrivacy',
  [ABOUT_US_ROUTE]: 'about',
  [CONTACT_LIST_ROUTE]: 'contacts',
  [CONTACT_ADD_ROUTE]: 'newContact',
  [CONTACT_EDIT_ROUTE]: 'editContact',
  [CONTACT_VIEW_ROUTE]: 'viewContact',
  [CONTACT_MY_ACCOUNTS_ROUTE]: 'myAccounts',
}

const mapStateToProps = (state, ownProps) => {
  const { location } = ownProps
  const { pathname } = location
  const pathNameTail = pathname.match(/[^/]+$/)[0]

  const isAddressEntryPage = pathNameTail.includes('0x')
  const isMyAccountsPage = pathname.match('my-accounts')
  const isAddContactPage = Boolean(pathname.match(CONTACT_ADD_ROUTE))
  const isEditContactPage = Boolean(pathname.match(CONTACT_EDIT_ROUTE))
  const isEditMyAccountsContactPage = Boolean(pathname.match(CONTACT_MY_ACCOUNTS_EDIT_ROUTE))

  const isPopupView = getEnvironmentType(location.href) === ENVIRONMENT_TYPE_POPUP
  const pathnameI18nKey = ROUTES_TO_I18N_KEYS[pathname]

  let backRoute
  if (isMyAccountsPage && isAddressEntryPage) {
    backRoute = CONTACT_MY_ACCOUNTS_ROUTE
  } else if (isEditContactPage) {
    backRoute = `${CONTACT_VIEW_ROUTE}/${pathNameTail}`
  } else if (isEditMyAccountsContactPage) {
    backRoute = `${CONTACT_MY_ACCOUNTS_VIEW_ROUTE}/${pathNameTail}`
  } else if (isAddressEntryPage || isMyAccountsPage || isAddContactPage) {
    backRoute = CONTACT_LIST_ROUTE
  } else {
    backRoute = SETTINGS_ROUTE
  }

  let initialBreadCrumbRoute
  let breadCrumbTextKey
  let initialBreadCrumbKey
  if (isMyAccountsPage) {
    initialBreadCrumbRoute = CONTACT_LIST_ROUTE
    breadCrumbTextKey = 'myWalletAccounts'
    initialBreadCrumbKey = ROUTES_TO_I18N_KEYS[initialBreadCrumbRoute]
  }

  const addressName = getAddressBookEntryName(state, isValidAddress(pathNameTail) ? pathNameTail : '')

  return {
    isAddressEntryPage,
    isMyAccountsPage,
    backRoute,
    currentPath: pathname,
    isPopupView,
    pathnameI18nKey,
    addressName,
    initialBreadCrumbRoute,
    breadCrumbTextKey,
    initialBreadCrumbKey,
  }
}

export default compose(
  withRouter,
  connect(mapStateToProps)
)(Settings)