aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app')
-rw-r--r--ui/app/components/app/signature-request.js25
-rw-r--r--ui/app/components/app/transaction-list/index.scss33
-rw-r--r--ui/app/pages/settings/security-tab/security-tab.component.js29
-rw-r--r--ui/app/pages/settings/security-tab/security-tab.container.js6
-rw-r--r--ui/app/selectors/transactions.js10
5 files changed, 64 insertions, 39 deletions
diff --git a/ui/app/components/app/signature-request.js b/ui/app/components/app/signature-request.js
index 9c0f53f57..16073d5d3 100644
--- a/ui/app/components/app/signature-request.js
+++ b/ui/app/components/app/signature-request.js
@@ -215,7 +215,7 @@ SignatureRequest.prototype.msgHexToText = function (hex) {
}
// eslint-disable-next-line react/display-name
-SignatureRequest.prototype.renderTypedDataV3 = function (data) {
+SignatureRequest.prototype.renderTypedData = function (data) {
const { domain, message } = JSON.parse(data)
return [
h('div.request-signature__typed-container', [
@@ -267,17 +267,18 @@ SignatureRequest.prototype.renderBody = function () {
}),
}, [notice]),
- h('div.request-signature__rows', type === 'eth_signTypedData' && version === 'V3' ?
- this.renderTypedDataV3(data) :
- rows.map(({ name, value }) => {
- if (typeof value === 'boolean') {
- value = value.toString()
- }
- return h('div.request-signature__row', [
- h('div.request-signature__row-title', [`${name}:`]),
- h('div.request-signature__row-value', value),
- ])
- }),
+ h('div.request-signature__rows',
+ type === 'eth_signTypedData' && (version === 'V3' || version === 'V4') ?
+ this.renderTypedData(data) :
+ rows.map(({ name, value }) => {
+ if (typeof value === 'boolean') {
+ value = value.toString()
+ }
+ return h('div.request-signature__row', [
+ h('div.request-signature__row-title', [`${name}:`]),
+ h('div.request-signature__row-value', value),
+ ])
+ }),
),
])
}
diff --git a/ui/app/components/app/transaction-list/index.scss b/ui/app/components/app/transaction-list/index.scss
index 7535137e2..42eddd31e 100644
--- a/ui/app/components/app/transaction-list/index.scss
+++ b/ui/app/components/app/transaction-list/index.scss
@@ -11,34 +11,15 @@
}
&__header {
+ flex: 0 0 auto;
+ font-size: 14px;
+ line-height: 20px;
+ color: $Grey-400;
border-bottom: 1px solid $Grey-100;
+ padding: 8px 0 8px 20px;
- &__tabs {
- display: flex;
- }
-
- &__tab,
- &__tab--selected {
- flex: 0 0 auto;
- font-size: 14px;
- line-height: 20px;
- color: $Grey-400;
- padding: 8px 0 8px 20px;
- cursor: pointer;
-
- &:hover {
- font-weight: bold;
- }
-
- @media screen and (max-width: $break-small) {
- padding: 8px 0 8px 16px;
- }
- }
-
- &__tab--selected {
- font-weight: bold;
- color: $Blue-400;
- cursor: auto;
+ @media screen and (max-width: $break-small) {
+ padding: 8px 0 8px 16px;
}
}
diff --git a/ui/app/pages/settings/security-tab/security-tab.component.js b/ui/app/pages/settings/security-tab/security-tab.component.js
index 600ec7069..117010d0f 100644
--- a/ui/app/pages/settings/security-tab/security-tab.component.js
+++ b/ui/app/pages/settings/security-tab/security-tab.component.js
@@ -18,6 +18,8 @@ export default class SecurityTab extends PureComponent {
mobileSync: PropTypes.bool,
participateInMetaMetrics: PropTypes.bool,
setParticipateInMetaMetrics: PropTypes.func,
+ showIncomingTransactions: PropTypes.bool,
+ setShowIncomingTransactionsFeatureFlag: PropTypes.func,
}
renderSeedWords () {
@@ -80,6 +82,32 @@ export default class SecurityTab extends PureComponent {
)
}
+ renderIncomingTransactionsOptIn () {
+ const { t } = this.context
+ const { showIncomingTransactions, setShowIncomingTransactionsFeatureFlag } = this.props
+
+ return (
+ <div className="settings-page__content-row">
+ <div className="settings-page__content-item">
+ <span>{ t('showIncomingTransactions') }</span>
+ <div className="settings-page__content-description">
+ { t('showIncomingTransactionsDescription') }
+ </div>
+ </div>
+ <div className="settings-page__content-item">
+ <div className="settings-page__content-item-col">
+ <ToggleButton
+ value={showIncomingTransactions}
+ onToggle={value => setShowIncomingTransactionsFeatureFlag(!value)}
+ offLabel={t('off')}
+ onLabel={t('on')}
+ />
+ </div>
+ </div>
+ </div>
+ )
+ }
+
renderContent () {
const { warning } = this.props
@@ -87,6 +115,7 @@ export default class SecurityTab extends PureComponent {
<div className="settings-page__body">
{ warning && <div className="settings-tab__error">{ warning }</div> }
{ this.renderSeedWords() }
+ { this.renderIncomingTransactionsOptIn() }
{ this.renderMetaMetricsOptIn() }
</div>
)
diff --git a/ui/app/pages/settings/security-tab/security-tab.container.js b/ui/app/pages/settings/security-tab/security-tab.container.js
index fe79d86af..35375ebf5 100644
--- a/ui/app/pages/settings/security-tab/security-tab.container.js
+++ b/ui/app/pages/settings/security-tab/security-tab.container.js
@@ -5,17 +5,22 @@ import { withRouter } from 'react-router-dom'
import {
displayWarning,
revealSeedConfirmation,
+ setFeatureFlag,
setParticipateInMetaMetrics,
} from '../../../store/actions'
const mapStateToProps = state => {
const { appState: { warning }, metamask } = state
const {
+ featureFlags: {
+ showIncomingTransactions,
+ } = {},
participateInMetaMetrics,
} = metamask
return {
warning,
+ showIncomingTransactions,
participateInMetaMetrics,
}
}
@@ -25,6 +30,7 @@ const mapDispatchToProps = dispatch => {
displayWarning: warning => dispatch(displayWarning(warning)),
revealSeedConfirmation: () => dispatch(revealSeedConfirmation()),
setParticipateInMetaMetrics: (val) => dispatch(setParticipateInMetaMetrics(val)),
+ setShowIncomingTransactionsFeatureFlag: shouldShow => dispatch(setFeatureFlag('showIncomingTransactions', shouldShow)),
}
}
diff --git a/ui/app/selectors/transactions.js b/ui/app/selectors/transactions.js
index 5450978a6..2a6a92ddf 100644
--- a/ui/app/selectors/transactions.js
+++ b/ui/app/selectors/transactions.js
@@ -16,9 +16,17 @@ import txHelper from '../../lib/tx-helper'
export const shapeShiftTxListSelector = state => state.metamask.shapeShiftTxList
export const incomingTxListSelector = state => {
+ const { showIncomingTransactions } = state.metamask.featureFlags
+ if (!showIncomingTransactions) {
+ return []
+ }
+
+ const network = state.metamask.network
const selectedAddress = state.metamask.selectedAddress
return Object.values(state.metamask.incomingTransactions)
- .filter(({ txParams }) => txParams.to === selectedAddress)
+ .filter(({ metamaskNetworkId, txParams }) => (
+ txParams.to === selectedAddress && metamaskNetworkId === network
+ ))
}
export const unapprovedMsgsSelector = state => state.metamask.unapprovedMsgs
export const selectedAddressTxListSelector = state => state.metamask.selectedAddressTxList