aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/pages/settings/connections-tab/connections-tab.component.js
diff options
context:
space:
mode:
authorWhymarrh Whitby <whymarrh.whitby@gmail.com>2019-08-16 05:07:18 +0800
committerGitHub <noreply@github.com>2019-08-16 05:07:18 +0800
commit247659ca651b683baba4eff2fbb49a9cb89d4503 (patch)
tree59df94c5a34a8316d5ddbcd941fa44057f111350 /ui/app/pages/settings/connections-tab/connections-tab.component.js
parent4d9b095dd0c280638b7593e87317f075b93f5ec4 (diff)
downloadtangerine-wallet-browser-247659ca651b683baba4eff2fbb49a9cb89d4503.tar.gz
tangerine-wallet-browser-247659ca651b683baba4eff2fbb49a9cb89d4503.tar.zst
tangerine-wallet-browser-247659ca651b683baba4eff2fbb49a9cb89d4503.zip
Connections settings tab (#7013)
* Nix notification for Share Address * Add Connections settings tab in place of privacy mode toggle * Split ProviderApprovalController into two stores * Remove privacyMode feature flag altogether * Add migration to remove privacyMode feature flag
Diffstat (limited to 'ui/app/pages/settings/connections-tab/connections-tab.component.js')
-rw-r--r--ui/app/pages/settings/connections-tab/connections-tab.component.js133
1 files changed, 133 insertions, 0 deletions
diff --git a/ui/app/pages/settings/connections-tab/connections-tab.component.js b/ui/app/pages/settings/connections-tab/connections-tab.component.js
new file mode 100644
index 000000000..3309fcc0d
--- /dev/null
+++ b/ui/app/pages/settings/connections-tab/connections-tab.component.js
@@ -0,0 +1,133 @@
+import React, { PureComponent } from 'react'
+import PropTypes from 'prop-types'
+import ConnectedSiteEntry from './connected-site-row'
+import TextField from '../../../components/ui/text-field'
+import Button from '../../../components/ui/button'
+
+export default class ConnectionsTab extends PureComponent {
+ static contextTypes = {
+ t: PropTypes.func,
+ metricsEvent: PropTypes.func,
+ }
+
+ static defaultProps = {
+ activeTab: {},
+ }
+
+ static propTypes = {
+ activeTab: PropTypes.object,
+ approvedOrigins: PropTypes.object.isRequired,
+ approveProviderRequestByOrigin: PropTypes.func.isRequired,
+ rejectProviderRequestByOrigin: PropTypes.func.isRequired,
+ showClearApprovalModal: PropTypes.func.isRequired,
+ }
+
+ state = {
+ input: this.props.activeTab.origin || '',
+ }
+
+ handleAddOrigin = () => {
+ const newOrigin = this.state.input
+ this.setState({
+ input: '',
+ }, () => {
+ if (newOrigin && newOrigin.trim()) {
+ this.props.approveProviderRequestByOrigin(newOrigin)
+ }
+ })
+ }
+
+ renderNewOriginInput () {
+ const { t } = this.context
+
+ return (
+ <div className="settings-page__content-row">
+ <div className="settings-page__content-item">
+ <span>{ t('addSite') }</span>
+ <div className="settings-page__content-description">
+ { t('addSiteDescription') }
+ </div>
+ </div>
+ <div className="settings-page__content-item">
+ <div className="settings-page__content-item-col">
+ <TextField
+ type="text"
+ value={this.state.input}
+ onChange={e => this.setState({ input: e.target.value })}
+ fullWidth
+ margin="dense"
+ min={0}
+ />
+ <button
+ className="button btn-primary settings-tab__rpc-save-button"
+ onClick={this.handleAddOrigin}
+ >
+ { t('connect') }
+ </button>
+ </div>
+ </div>
+ </div>
+ )
+ }
+
+ renderApprovedOriginsList () {
+ const { t } = this.context
+ const { approvedOrigins, rejectProviderRequestByOrigin, showClearApprovalModal } = this.props
+ const approvedEntries = Object.entries(approvedOrigins)
+ const approvalListEmpty = approvedEntries.length === 0
+
+ return (
+ <div className="settings-page__content-row">
+ <div className="settings-page__content-item">
+ <span>{ t('connected') }</span>
+ <span className="settings-page__content-description">
+ { t('connectedDescription') }
+ </span>
+ </div>
+ <div className="settings-page__content-item">
+ {
+ approvalListEmpty
+ ? <div><i className="fa fa-ban" /></div>
+ : null
+ }
+ {
+ approvedEntries.map(([origin, { siteTitle, siteImage }]) => (
+ <ConnectedSiteEntry
+ key={origin}
+ origin={origin}
+ siteTitle={siteTitle}
+ siteImage={siteImage}
+ onDelete={() => {
+ rejectProviderRequestByOrigin(origin)
+ }}
+ />
+ ))
+ }
+ </div>
+ <div className="settings-page__content-item-col">
+ <Button
+ disabled={approvalListEmpty}
+ type="warning"
+ large
+ className="settings-tab__button--orange"
+ onClick={event => {
+ event.preventDefault()
+ showClearApprovalModal()
+ }}
+ >
+ { t('clearApprovalData') }
+ </Button>
+ </div>
+ </div>
+ )
+ }
+
+ render () {
+ return (
+ <div className="settings-page__body">
+ { this.renderNewOriginInput() }
+ { this.renderApprovedOriginsList() }
+ </div>
+ )
+ }
+}