diff --git a/package-lock.json b/package-lock.json
index a6b78f0bc580..94226f147f51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"@babel/preset-typescript": "^7.16.5",
"@binary-com/binary-document-uploader": "^2.4.7",
"@contentpass/zxcvbn": "^4.4.3",
+ "@datadog/browser-rum": "^4.37.0",
"@deriv/api-types": "^1.0.94",
"@deriv/deriv-api": "^1.0.11",
"@deriv/deriv-charts": "1.1.9",
@@ -2780,6 +2781,36 @@
"postcss-selector-parser": "^6.0.10"
}
},
+ "node_modules/@datadog/browser-core": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.39.0.tgz",
+ "integrity": "sha512-jSwXfdSPaeU9xFLepour7d2jATk/VVcjab69/42gmWkh1MtzDloTd8RaKSVRo0Y7CsHroO6Mdzp+enEivI7NkA=="
+ },
+ "node_modules/@datadog/browser-rum": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.39.0.tgz",
+ "integrity": "sha512-7owNySSTxWnNbwRjDCC+fHRU2ycWb3lPDGn+VvQE3US+o9MRlEbFesaLO5/3Nj0A+vJGq6Ao35d++eCHl5dw2Q==",
+ "dependencies": {
+ "@datadog/browser-core": "4.39.0",
+ "@datadog/browser-rum-core": "4.39.0"
+ },
+ "peerDependencies": {
+ "@datadog/browser-logs": "4.39.0"
+ },
+ "peerDependenciesMeta": {
+ "@datadog/browser-logs": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@datadog/browser-rum-core": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.39.0.tgz",
+ "integrity": "sha512-UhAEELzt7ZQlAbWSaMJ7Ubwfdxk+uig8xm39iktNyTNCcxN92aNHWsNhsz5FtWXe3Oci7xKSDZf3ccjFl7KABw==",
+ "dependencies": {
+ "@datadog/browser-core": "4.39.0"
+ }
+ },
"node_modules/@deriv/api-types": {
"version": "1.0.98",
"resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.98.tgz",
@@ -49675,6 +49706,28 @@
"integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==",
"requires": {}
},
+ "@datadog/browser-core": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.39.0.tgz",
+ "integrity": "sha512-jSwXfdSPaeU9xFLepour7d2jATk/VVcjab69/42gmWkh1MtzDloTd8RaKSVRo0Y7CsHroO6Mdzp+enEivI7NkA=="
+ },
+ "@datadog/browser-rum": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.39.0.tgz",
+ "integrity": "sha512-7owNySSTxWnNbwRjDCC+fHRU2ycWb3lPDGn+VvQE3US+o9MRlEbFesaLO5/3Nj0A+vJGq6Ao35d++eCHl5dw2Q==",
+ "requires": {
+ "@datadog/browser-core": "4.39.0",
+ "@datadog/browser-rum-core": "4.39.0"
+ }
+ },
+ "@datadog/browser-rum-core": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.39.0.tgz",
+ "integrity": "sha512-UhAEELzt7ZQlAbWSaMJ7Ubwfdxk+uig8xm39iktNyTNCcxN92aNHWsNhsz5FtWXe3Oci7xKSDZf3ccjFl7KABw==",
+ "requires": {
+ "@datadog/browser-core": "4.39.0"
+ }
+ },
"@deriv/api-types": {
"version": "1.0.98",
"resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.98.tgz",
diff --git a/packages/account/src/Assets/ic-brand-deriv-red.svg b/packages/account/src/Assets/ic-brand-deriv-red.svg
index 8cba7e7531d3..f40722d694ca 100644
--- a/packages/account/src/Assets/ic-brand-deriv-red.svg
+++ b/packages/account/src/Assets/ic-brand-deriv-red.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/account/src/Components/poi-poa-docs-submitted/poi-poa-docs-submitted.jsx b/packages/account/src/Components/poi-poa-docs-submitted/poi-poa-docs-submitted.jsx
index 5989c2f3230d..5e0be0c7377e 100644
--- a/packages/account/src/Components/poi-poa-docs-submitted/poi-poa-docs-submitted.jsx
+++ b/packages/account/src/Components/poi-poa-docs-submitted/poi-poa-docs-submitted.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import { Button, Icon, Loading } from '@deriv/components';
import { localize } from '@deriv/translations';
-import { getAuthenticationStatusInfo } from '@deriv/shared';
+import { getAuthenticationStatusInfo, Jurisdiction } from '@deriv/shared';
import IconMessageContent from 'Components/icon-message-content';
const PoiPoaDocsSubmitted = ({
@@ -33,8 +33,9 @@ const PoiPoaDocsSubmitted = ({
const getDescription = () => {
const { manual_status, poi_verified_for_vanuatu_maltainvest, poi_verified_for_bvi_labuan, poa_pending } =
getAuthenticationStatusInfo(account_status);
- const is_vanuatu_or_maltainvest_selected =
- jurisdiction_selected_shortcode === 'vanuatu' || jurisdiction_selected_shortcode === 'maltainvest';
+ const is_vanuatu_or_maltainvest_selected = [Jurisdiction.VANUATU, Jurisdiction.MALTA_INVEST].includes(
+ jurisdiction_selected_shortcode
+ );
if (
(is_vanuatu_or_maltainvest_selected && poi_verified_for_vanuatu_maltainvest && poa_pending) ||
(!is_vanuatu_or_maltainvest_selected && poi_verified_for_bvi_labuan && poa_pending) ||
diff --git a/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article-content.spec.js b/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article-content.spec.js
index 503617691d87..b251711eada1 100644
--- a/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article-content.spec.js
+++ b/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article-content.spec.js
@@ -10,7 +10,7 @@ describe('', () => {
let mock_context = {};
const descr_text = 'About trading limits and self-exclusion';
const eu_item =
- 'When you set your limits or self-exclusion, they will be aggregated across all your account types in DTrader and DBot. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.';
+ 'When you set your limits or self-exclusion, they will be aggregated across all your account types in Deriv Trader and Deriv Bot. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.';
const eu_uk_item =
'These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. If you live in the United Kingdom, Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request. If you live in the Isle of Man, Customer Support can only remove or weaken your trading limits after your trading limit period has expired.';
const not_app_settings_eu_descr =
diff --git a/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article.spec.js b/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article.spec.js
index f9fc46c31d50..b6b720a30991 100644
--- a/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article.spec.js
+++ b/packages/account/src/Components/self-exclusion/__tests__/self-exclusion-article.spec.js
@@ -23,7 +23,7 @@ describe('', () => {
const eu_item =
/these trading limits and self-exclusion help you control the amount of money and time you spend on deriv.com and exercise/i;
const non_eu_item =
- /these self-exclusion limits help you control the amount of money and time you spend trading on dtrader, dbot, smarttrader and binary bot on deriv. the limits you set here will help you exercise/i;
+ /these self-exclusion limits help you control the amount of money and time you spend trading on deriv trader, deriv bot, smarttrader and binary bot on deriv. the limits you set here will help you exercise/i;
beforeEach(() => {
mock_platform_context = {
diff --git a/packages/account/src/Configs/address-details-config.js b/packages/account/src/Configs/address-details-config.js
index aeee513b9aba..592dcf99c071 100644
--- a/packages/account/src/Configs/address-details-config.js
+++ b/packages/account/src/Configs/address-details-config.js
@@ -1,5 +1,11 @@
import { localize } from '@deriv/translations';
-import { generateValidationFunction, getDefaultFields, getErrorMessages, regex_checks } from '@deriv/shared';
+import {
+ generateValidationFunction,
+ getDefaultFields,
+ getErrorMessages,
+ regex_checks,
+ address_permitted_special_characters_message,
+} from '@deriv/shared';
const address_details_config = ({ account_settings, is_svg }) => {
const is_gb = account_settings.country_code === 'gb';
@@ -16,7 +22,10 @@ const address_details_config = ({ account_settings, is_svg }) => {
['length', localize('Only {{max}} characters, please.', { max: 70 }), { max: 70 }],
[
'regular',
- localize("Use only the following special characters: . , ' : ; ( ) @ # / -"),
+ localize('Use only the following special characters: {{permitted_characters}}', {
+ permitted_characters: address_permitted_special_characters_message,
+ interpolation: { escapeValue: false },
+ }),
{
regex: regex_checks.address_details.address_line_1,
},
@@ -31,7 +40,10 @@ const address_details_config = ({ account_settings, is_svg }) => {
['length', localize('Only {{max}} characters, please.', { max: 70 }), { max: 70 }],
[
'regular',
- localize("Use only the following special characters: . , ' : ; ( ) @ # / -"),
+ localize('Use only the following special characters: {{permitted_characters}}', {
+ permitted_characters: address_permitted_special_characters_message,
+ interpolation: { escapeValue: false },
+ }),
{
regex: regex_checks.address_details.address_line_2,
},
diff --git a/packages/account/src/Sections/Profile/PersonalDetails/personal-details.jsx b/packages/account/src/Sections/Profile/PersonalDetails/personal-details.jsx
index 3c00ae233292..2d23dff625cf 100644
--- a/packages/account/src/Sections/Profile/PersonalDetails/personal-details.jsx
+++ b/packages/account/src/Sections/Profile/PersonalDetails/personal-details.jsx
@@ -375,20 +375,13 @@ export const PersonalDetailsForm = ({
}
}
- const permitted_characters = ". , ' : ; ( ) @ # / -";
- const address_validation_message = localize(
- 'Use only the following special characters: {{ permitted_characters }}',
- {
- permitted_characters,
- interpolation: { escapeValue: false },
- }
- );
-
- if (values.address_line_1 && !validAddress(values.address_line_1)) {
- errors.address_line_1 = address_validation_message;
+ const address_line_1_validation_result = validAddress(values.address_line_1, { is_required: true });
+ if (!address_line_1_validation_result.is_ok) {
+ errors.address_line_1 = address_line_1_validation_result.message;
}
- if (values.address_line_2 && !validAddress(values.address_line_2)) {
- errors.address_line_2 = address_validation_message;
+ const address_line_2_validation_result = validAddress(values.address_line_2);
+ if (!address_line_2_validation_result.is_ok) {
+ errors.address_line_2 = address_line_2_validation_result.message;
}
if (values.address_city && !validLetterSymbol(values.address_city)) {
diff --git a/packages/account/src/Sections/Security/Passwords/deriv-password.jsx b/packages/account/src/Sections/Security/Passwords/deriv-password.jsx
index 8d2e3b17a74b..eb70b8ab67d4 100644
--- a/packages/account/src/Sections/Security/Passwords/deriv-password.jsx
+++ b/packages/account/src/Sections/Security/Passwords/deriv-password.jsx
@@ -6,10 +6,8 @@ import { Localize, localize } from '@deriv/translations';
import FormSubHeader from 'Components/form-sub-header';
import SentEmailModal from 'Components/sent-email-modal';
import DerivComLogo from 'Assets/ic-brand-deriv-red.svg';
-import DerivGoLight from 'Assets/ic-brand-deriv-go-light.svg';
-import DerivGoDark from 'Assets/ic-brand-deriv-go-dark.svg';
-const DerivPassword = ({ email, is_dark_mode_on, is_social_signup, social_identity_provider }) => {
+const DerivPassword = ({ email, is_social_signup, social_identity_provider }) => {
const [is_sent_email_modal_open, setIsSentEmailModalOpen] = React.useState(false);
const onClickSendEmail = () => {
@@ -53,23 +51,35 @@ const DerivPassword = ({ email, is_dark_mode_on, is_social_signup, social_identi
/>
-
+
{brand_website_name}
-
+
-
+
-
+
- {is_dark_mode_on ? : }
+
diff --git a/packages/account/src/Sections/Security/Passwords/passwords-platform.jsx b/packages/account/src/Sections/Security/Passwords/passwords-platform.jsx
index d4bbc05566cd..a022f798b87e 100644
--- a/packages/account/src/Sections/Security/Passwords/passwords-platform.jsx
+++ b/packages/account/src/Sections/Security/Passwords/passwords-platform.jsx
@@ -54,7 +54,7 @@ const PasswordsPlatform = ({ email, has_dxtrade_accounts, has_mt5_accounts }) =>
-
+