- {key} : {val}
+ {key} : {typeof val === 'object' ? JSON.stringify(val) : val}
);
});
diff --git a/web/src/containers/Admin/Verification/index.css b/web/src/containers/Admin/Verification/index.css
index a3f52cae07..b8a2dbca82 100644
--- a/web/src/containers/Admin/Verification/index.css
+++ b/web/src/containers/Admin/Verification/index.css
@@ -49,14 +49,14 @@
.ant-card,
.ant-card-head,
.ant-card-type-inner .ant-card-head {
- background-color: #0000ff;
+ background-color: var(--admin_panel_card_background);
color: #ffffff;
}
.ant-card-bordered {
border: 1px solid #c4c4c4;
}
.ant-modal-header {
- border: 1px solid #0000ff;
+ border: 1px solid var(--admin_panel_modal_border);
}
.ant-modal-header .ant-modal-title {
color: #ffffff;
@@ -65,7 +65,7 @@
.ant-modal-header,
.ant-modal-content,
.ant-modal-confirm-body .ant-modal-confirm-content {
- background-color: #0000ff;
+ background-color: var(--admin_panel_modal_background);
color: #ffffff;
}
.ant-modal-close-icon path {
@@ -92,7 +92,7 @@
.verification-form
.ant-select-single:not(.ant-select-customize-input)
.ant-select-selector {
- background-color: #0000ff;
+ background-color: var(--admin_panel_input);
color: #ffffff;
}
.verification-form .ant-upload-text-icon path {
diff --git a/web/src/containers/AuthContainer/index.js b/web/src/containers/AuthContainer/index.js
index fa683f5255..b24744ad8e 100644
--- a/web/src/containers/AuthContainer/index.js
+++ b/web/src/containers/AuthContainer/index.js
@@ -5,11 +5,16 @@ import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import withConfig from 'components/ConfigProvider/withConfig';
-import { AppFooter } from '../../components';
+import { AppFooter, Dialog } from 'components';
+import { HelpfulResourcesForm } from 'containers';
import { FLEX_CENTER_CLASSES } from '../../config/constants';
import { getClasesForLanguage } from '../../utils/string';
import { getThemeClass } from '../../utils/theme';
-import { getExchangeInfo } from '../../actions/appActions';
+import {
+ getExchangeInfo,
+ closeNotification,
+ HELPFUL_RESOURCES_FORM,
+} from 'actions/appActions';
import ThemeProvider from '../ThemeProvider';
// const checkPath = (path) => {
@@ -42,20 +47,50 @@ class AuthContainer extends Component {
this.state = {
isExpired: false,
isTrial: false,
+ dialogIsOpen: false,
};
}
+ UNSAFE_componentWillReceiveProps(nextProps) {
+ if (
+ nextProps.activeNotification.timestamp !==
+ this.props.activeNotification.timestamp
+ ) {
+ if (nextProps.activeNotification.type === HELPFUL_RESOURCES_FORM) {
+ this.onOpenDialog();
+ } else {
+ this.onCloseDialog();
+ }
+ } else if (
+ !nextProps.activeNotification.timestamp &&
+ this.state.dialogIsOpen
+ ) {
+ this.onCloseDialog();
+ }
+ }
+
componentDidMount() {
this.props.getExchangeInfo();
}
+ onOpenDialog = () => {
+ this.setState({ dialogIsOpen: true });
+ };
+
+ onCloseDialog = () => {
+ this.setState({ dialogIsOpen: false });
+ this.props.closeNotification();
+ };
+
render() {
+ const { dialogIsOpen } = this.state;
const {
activeLanguage,
activeTheme,
children,
constants = { captcha: {} },
icons: ICONS = {},
+ activeNotification,
} = this.props;
const languageClasses = getClasesForLanguage(activeLanguage);
const childWithLanguageClasses = React.Children.map(children, (child) =>
@@ -88,6 +123,26 @@ class AuthContainer extends Component {
{childWithLanguageClasses}
+ ({
activeTheme: store.app.theme,
info: store.app.info,
constants: store.app.constants,
+ activeNotification: store.app.activeNotification,
});
const mapDispatchToProps = (dispatch) => ({
getExchangeInfo: bindActionCreators(getExchangeInfo, dispatch),
+ closeNotification: bindActionCreators(closeNotification, dispatch),
});
export default connect(
diff --git a/web/src/containers/HelpfulResourcesForm/index.js b/web/src/containers/HelpfulResourcesForm/index.js
index 31050b0f8f..7bf81f0c75 100644
--- a/web/src/containers/HelpfulResourcesForm/index.js
+++ b/web/src/containers/HelpfulResourcesForm/index.js
@@ -9,7 +9,7 @@ import STRINGS from '../../config/localizedStrings';
import {
sendSupportMail,
NOTIFICATIONS,
- openContactForm,
+ openHelpdesk,
} from 'actions/appActions';
import withConfig from 'components/ConfigProvider/withConfig';
import { EditWrapper } from 'components';
@@ -51,9 +51,9 @@ class HelpfulResourcesForm extends Component {
});
};
openNewForm = () => {
- const { openContactForm, onClose } = this.props;
+ const { openHelpdesk, onClose } = this.props;
onClose();
- openContactForm({ category: 'bug' });
+ openHelpdesk({ category: 'bug' });
};
render() {
@@ -61,7 +61,7 @@ class HelpfulResourcesForm extends Component {
onClose,
icons: ICONS,
constants: { links: { api_doc_link = '' } = {} },
- openContactForm,
+ openHelpdesk,
} = this.props;
const { submited } = this.state;
@@ -93,7 +93,7 @@ class HelpfulResourcesForm extends Component {
{STRINGS.formatString(
STRINGS['HELP_RESOURCE_GUIDE.TEXT'],
{STRINGS['HELP_RESOURCE_GUIDE.CONTACT_US']}
@@ -144,7 +144,7 @@ const mapStateToProps = (store) => ({
});
const mapDispatchToProps = (dispatch) => ({
- openContactForm: bindActionCreators(openContactForm, dispatch),
+ openHelpdesk: bindActionCreators(openHelpdesk, dispatch),
});
export default connect(
diff --git a/web/src/containers/TradeTabs/_TradeTabs.scss b/web/src/containers/TradeTabs/_TradeTabs.scss
index c335f74c5b..0d01ba5116 100644
--- a/web/src/containers/TradeTabs/_TradeTabs.scss
+++ b/web/src/containers/TradeTabs/_TradeTabs.scss
@@ -133,11 +133,6 @@ $trade-tab--arrow-size: 0.4rem;
font-weight: bold;
}
- .trade_tab-ticker-container {
- flex-direction: column;
- align-items: flex-end;
- }
-
.price-diff-down {
color: $sell;
padding: 0 5px;
diff --git a/web/src/containers/TradeTabs/components/MarketCard.js b/web/src/containers/TradeTabs/components/MarketCard.js
index 31a16ad981..5a278c6cbd 100644
--- a/web/src/containers/TradeTabs/components/MarketCard.js
+++ b/web/src/containers/TradeTabs/components/MarketCard.js
@@ -80,38 +80,45 @@ class MarketCard extends Component {
{fullname}/{pairTwo.fullname}
-
-
-
-
- {(state) => (
-
-
- {priceDifferencePercent}
+
+
+
+ {(state) => (
+
+
+ {priceDifferencePercent}
+
-
- )}
-
-
-
- {ticker.volume && `${ticker.volume} ${symbol.toUpperCase()}`}
+ )}
+
+
+
+ Vol:
+
+ {ticker.volume &&
+ `${ticker.volume} ${symbol.toUpperCase()}`}
+
+
diff --git a/web/src/containers/TradeTabs/components/MarketRow.js b/web/src/containers/TradeTabs/components/MarketRow.js
index 409becc168..fcead56625 100644
--- a/web/src/containers/TradeTabs/components/MarketRow.js
+++ b/web/src/containers/TradeTabs/components/MarketRow.js
@@ -74,6 +74,9 @@ class MarketRow extends Component {
{formatToCurrency(ticker.close, increment_price)}
+
+ {pairTwo.symbol ? pairTwo.symbol.toUpperCase() : ''}
+
@@ -96,7 +99,10 @@ class MarketRow extends Component {
)}
|
-
{ticker.volume} |
+
+ {ticker.volume}
+ {symbol.toUpperCase()}
+ |
{
setLoading(true);
setInitialValues(params);
setMessage('');
- return searchTransaction(params)
+ return searchTransaction({
+ ...params,
+ network: params.network ? params.network : params.currency,
+ })
.then((res) => {
setLoading(false);
if (res) {
diff --git a/web/src/containers/UserSecurity/DeveloperSection.js b/web/src/containers/UserSecurity/DeveloperSection.js
index 8d56f90659..91e164c27d 100644
--- a/web/src/containers/UserSecurity/DeveloperSection.js
+++ b/web/src/containers/UserSecurity/DeveloperSection.js
@@ -116,7 +116,7 @@ export const TokenCreatedInfo = ({ token }) => {
-
diff --git a/web/src/containers/UserSecurity/_UserSecurity.scss b/web/src/containers/UserSecurity/_UserSecurity.scss
index 7710b2f732..64654d106b 100644
--- a/web/src/containers/UserSecurity/_UserSecurity.scss
+++ b/web/src/containers/UserSecurity/_UserSecurity.scss
@@ -135,6 +135,13 @@ $svg--padding: $svg--size - $svg-small--size;
.popup_info-text {
font-size: $font-size-subtext;
}
+ .secret_key {
+ .action_notification-wrapper {
+ .action_notification-text {
+ margin-left: 1rem !important;
+ }
+ }
+ }
}
.token-no-otp {
diff --git a/web/src/containers/UserSecurity/index.js b/web/src/containers/UserSecurity/index.js
index 1743f5aa32..1ce326dc84 100644
--- a/web/src/containers/UserSecurity/index.js
+++ b/web/src/containers/UserSecurity/index.js
@@ -3,6 +3,7 @@ import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { SubmissionError } from 'redux-form';
import { isMobile } from 'react-device-detect';
+import { message } from 'antd';
import { openContactForm } from 'actions/appActions';
import {
resetPassword,
@@ -363,9 +364,13 @@ class UserVerification extends Component {
});
})
.catch((err) => {
- const _error = err.response.data
- ? err.response.data.message
- : err.message;
+ const _error =
+ err.response && err.response.data
+ ? err.response.data.message
+ : err.message;
+ if (!_error) {
+ message.error(STRINGS['CHANGE_PASSWORD_FAILED']);
+ }
throw new SubmissionError({ _error });
});
};
diff --git a/web/src/containers/UserSettings/AudioForm.js b/web/src/containers/UserSettings/AudioForm.js
index 52f01c1eaa..ae73363ef1 100644
--- a/web/src/containers/UserSettings/AudioForm.js
+++ b/web/src/containers/UserSettings/AudioForm.js
@@ -13,6 +13,7 @@ export const generateAudioCueFormValues = () => ({
stringId: 'USER_SETTINGS.AUDIO_CUE_FORM.ALL_AUDIO',
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.ALL_AUDIO'],
className: 'toggle-wrapper-all',
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
public_trade: {
type: 'toggle',
@@ -20,6 +21,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.PUBLIC_TRADE_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
order_partially_completed: {
type: 'toggle',
@@ -27,6 +29,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.ORDERS_PARTIAL_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
order_placed: {
type: 'toggle',
@@ -34,6 +37,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.ORDERS_PLACED_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
order_canceled: {
type: 'toggle',
@@ -41,6 +45,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.ORDERS_CANCELED_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
order_completed: {
type: 'toggle',
@@ -48,6 +53,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.ORDERS_COMPLETED_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
click_amounts: {
type: 'toggle',
@@ -55,6 +61,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.CLICK_AMOUNTS_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
get_quote_quick_trade: {
type: 'toggle',
@@ -62,6 +69,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.GET_QUICK_TRADE_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
quick_trade_success: {
type: 'toggle',
@@ -69,6 +77,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.SUCCESS_QUICK_TRADE_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
quick_trade_timeout: {
type: 'toggle',
@@ -76,6 +85,7 @@ export const generateAudioCueFormValues = () => ({
label: STRINGS['USER_SETTINGS.AUDIO_CUE_FORM.QUICK_TRADE_TIMEOUT_AUDIO'],
className: 'toggle-wrapper',
disabled: false,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
});
diff --git a/web/src/containers/UserSettings/NotificationForm.js b/web/src/containers/UserSettings/NotificationForm.js
index 180ac83404..5e53518d28 100644
--- a/web/src/containers/UserSettings/NotificationForm.js
+++ b/web/src/containers/UserSettings/NotificationForm.js
@@ -13,12 +13,14 @@ export const generateNotificationFormValues = () => ({
stringId: 'USER_SETTINGS.NOTIFICATION_FORM.POPUP_ORDER_CONFIRMATION',
label: STRINGS['USER_SETTINGS.NOTIFICATION_FORM.POPUP_ORDER_CONFIRMATION'],
className: 'toggle-wrapper',
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
popup_order_completed: {
type: 'toggle',
stringId: 'USER_SETTINGS.NOTIFICATION_FORM.POPUP_ORDER_COMPLETED',
label: STRINGS['USER_SETTINGS.NOTIFICATION_FORM.POPUP_ORDER_COMPLETED'],
className: 'toggle-wrapper',
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
popup_order_partially_filled: {
type: 'toggle',
@@ -26,6 +28,7 @@ export const generateNotificationFormValues = () => ({
label:
STRINGS['USER_SETTINGS.NOTIFICATION_FORM.POPUP_ORDER_PARTIALLY_FILLED'],
className: 'toggle-wrapper',
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
});
diff --git a/web/src/containers/UserSettings/RiskForm.js b/web/src/containers/UserSettings/RiskForm.js
index f8d97957fa..24569796d8 100644
--- a/web/src/containers/UserSettings/RiskForm.js
+++ b/web/src/containers/UserSettings/RiskForm.js
@@ -77,6 +77,7 @@ export const generateWarningFormValues = () => ({
label: STRINGS['USER_SETTINGS.RISK_MANAGEMENT.WARNING_POP_UP'],
// className: 'toggle-wrapper',
toggleOnly: true,
+ options: STRINGS['DEFAULT_TOGGLE_OPTIONS'],
},
});
diff --git a/web/src/containers/Withdraw/formUtils.js b/web/src/containers/Withdraw/formUtils.js
index f44d269c75..36b12ad3e8 100644
--- a/web/src/containers/Withdraw/formUtils.js
+++ b/web/src/containers/Withdraw/formUtils.js
@@ -61,12 +61,27 @@ export const generateFormValues = (
networks,
selectedNetwork
) => {
- const { fullname, min, increment_unit, withdrawal_limits = {} } =
- coins[symbol] || DEFAULT_COIN_DATA;
+ const {
+ fullname,
+ min,
+ increment_unit,
+ withdrawal_limits = {},
+ withdrawal_fee,
+ withdrawal_fees,
+ } = coins[symbol] || DEFAULT_COIN_DATA;
let MAX = withdrawal_limits[verification_level];
if (withdrawal_limits[verification_level] === 0) MAX = '';
if (withdrawal_limits[verification_level] === -1) MAX = 0;
+ let fee;
+ if (withdrawal_fees && selectedNetwork && withdrawal_fees[selectedNetwork]) {
+ fee = withdrawal_fees[selectedNetwork];
+ } else if (coins[symbol]) {
+ fee = withdrawal_fee;
+ } else {
+ fee = 0;
+ }
+
const fields = {};
if (networks) {
@@ -146,13 +161,7 @@ export const generateFormValues = (
}
// FIX add according fee
// amountValidate.push(checkBalance(available, STRINGS.formatString(STRINGS["WITHDRAWALS_LOWER_BALANCE"], fullname), fee));
- amountValidate.push(
- checkBalance(
- available,
- STRINGS.formatString(STRINGS['WITHDRAWALS_LOWER_BALANCE'], fullname),
- 0
- )
- );
+ amountValidate.push(checkBalance(available, fullname, fee));
fields.amount = {
type: 'number',
diff --git a/web/src/index.css b/web/src/index.css
index eae14a1962..499c383419 100644
--- a/web/src/index.css
+++ b/web/src/index.css
@@ -342,8 +342,8 @@ table th {
height: auto;
flex: 1; }
.app_container.layout-mobile .app_container-content {
- min-height: calc( 100vh - 10rem);
- max-height: calc( 100vh - 10rem);
+ min-height: calc(
100vh - 10rem);
+ max-height: calc(
100vh - 10rem);
max-width: 100vw;
overflow-y: scroll; }
.app_container.layout-mobile .app_container-content.no_bottom_navigation {
@@ -356,8 +356,8 @@ table th {
.app_container.layout-mobile .app_container-content .app_container-main.no_bottom_navigation {
height: 100%; }
.app_container.layout-mobile .content-with-bar {
- min-height: calc( 100vh - 17rem);
- max-height: calc( 100vh - 17rem);
+ min-height: calc(
100vh - 17rem);
+ max-height: calc(
100vh - 17rem);
max-width: 100vw;
padding: 1rem;
margin: 0;
@@ -865,6 +865,9 @@ table th {
.popup_info-wrapper .popup_info-text {
font-size: 1rem; }
+.popup_info-wrapper .secret_key .action_notification-wrapper .action_notification-text {
+ margin-left: 1rem !important; }
+
.token-no-otp {
color: var(--labels_inactive-button);
cursor: not-allowed !important; }
@@ -2684,8 +2687,8 @@ table th {
.layout-mobile .quote-container {
background-color: transparent;
overflow-y: scroll;
- min-height: calc( 100vh - 17rem);
- max-height: calc( 100vh - 17rem); }
+ min-height: calc(
100vh - 17rem);
+ max-height: calc(
100vh - 17rem); }
.layout-mobile .quote-container .quick_trade-wrapper {
flex: 1 1;
min-width: 95vw;
@@ -2832,7 +2835,7 @@ table th {
.layout-mobile .presentation_container.verification_container {
padding-top: 0 !important;
- max-height: calc( 100vh - 10rem); }
+ max-height: calc(
100vh - 10rem); }
.layout-mobile .presentation_container.verification_container .header-content {
font-size: 13px !important; }
@@ -3636,9 +3639,6 @@ table th {
color: var(--labels_important-active-labels-text-graphics);
font-size: 1.8rem;
font-weight: bold; }
- .trade_tabs-container .trade_tab-ticker-container {
- flex-direction: column;
- align-items: flex-end; }
.trade_tabs-container .price-diff-down {
color: var(--trading_selling-related-elements);
padding: 0 5px;
@@ -7069,14 +7069,14 @@ table th {
right: 0 !important;
min-width: 100vw;
max-width: 100vw;
- min-height: calc( 100vh - 4rem);
- max-height: calc( 100vh - 4rem);
+ min-height: calc(
100vh - 4rem);
+ max-height: calc(
100vh - 4rem);
border-radius: 0 !important;
padding: 0 !important; }
.layout-mobile .ReactModal__Content .dialog-mobile-content {
padding: 2.5rem !important;
- min-height: calc( 100vh - 8rem);
- max-height: calc( 100vh - 8rem);
+ min-height: calc(
100vh - 8rem);
+ max-height: calc(
100vh - 8rem);
display: flex; }
.layout-mobile.LogoutModal .ReactModal__Content {
|