diff --git a/packages/components/src/components/icon/common/ic-no-data.svg b/packages/components/src/components/icon/common/ic-no-data.svg
new file mode 100644
index 000000000000..8654e411ad75
--- /dev/null
+++ b/packages/components/src/components/icon/common/ic-no-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/components/src/components/icon/icons.js b/packages/components/src/components/icon/icons.js
index 7d68536c883c..6952e07ed18b 100644
--- a/packages/components/src/components/icon/icons.js
+++ b/packages/components/src/components/icon/icons.js
@@ -439,6 +439,7 @@ import './common/ic-neteller-dark.svg';
import './common/ic-neteller-light.svg';
import './common/ic-new-file.svg';
import './common/ic-no-ad.svg';
+import './common/ic-no-data.svg';
import './common/ic-no-order.svg';
import './common/ic-notification-clear.svg';
import './common/ic-notification.svg';
@@ -600,6 +601,7 @@ import './currency/ic-currency-usdc.svg';
import './currency/ic-currency-usdk.svg';
import './currency/ic-currency-ust.svg';
import './currency/ic-currency-virtual.svg';
+import './derivez/ic-derivez.svg';
import './dxtrade/ic-dxtrade-deriv-x.svg';
import './dxtrade/ic-dxtrade-derived.svg';
import './dxtrade/ic-dxtrade-derivx-platform.svg';
diff --git a/packages/p2p/src/components/advertiser-page/advertiser-page-adverts.jsx b/packages/p2p/src/components/advertiser-page/advertiser-page-adverts.jsx
index a67e2da7a058..098e8803d90a 100644
--- a/packages/p2p/src/components/advertiser-page/advertiser-page-adverts.jsx
+++ b/packages/p2p/src/components/advertiser-page/advertiser-page-adverts.jsx
@@ -67,8 +67,8 @@ const AdvertiserPageAdverts = () => {
) : (
)}
diff --git a/packages/p2p/src/components/advertiser-page/advertiser-page.jsx b/packages/p2p/src/components/advertiser-page/advertiser-page.jsx
index b4d6a055863d..aed006b4cfcb 100644
--- a/packages/p2p/src/components/advertiser-page/advertiser-page.jsx
+++ b/packages/p2p/src/components/advertiser-page/advertiser-page.jsx
@@ -6,6 +6,7 @@ import { observer } from 'mobx-react-lite';
import { useStores } from 'Stores';
import { Localize, localize } from 'Components/i18next';
import { buy_sell } from 'Constants/buy-sell';
+import { my_profile_tabs } from 'Constants/my-profile-tabs';
import RateChangeModal from 'Components/buy-sell/rate-change-modal.jsx';
import BuySellModal from 'Components/buy-sell/buy-sell-modal.jsx';
import PageReturn from 'Components/page-return/page-return.jsx';
@@ -24,11 +25,12 @@ import { OnlineStatusIcon, OnlineStatusLabel } from 'Components/online-status';
import './advertiser-page.scss';
const AdvertiserPage = () => {
- const { general_store, advertiser_page_store, buy_sell_store } = useStores();
+ const { general_store, advertiser_page_store, buy_sell_store, my_profile_store } = useStores();
const is_my_advert = advertiser_page_store.advertiser_details_id === general_store.advertiser_id;
// Use general_store.advertiser_info since resubscribing to the same id from advertiser page returns error
const info = is_my_advert ? general_store.advertiser_info : advertiser_page_store.counterparty_advertiser_info;
+
const {
basic_verification,
buy_orders_count,
@@ -94,6 +96,8 @@ const AdvertiserPage = () => {
is_error_modal_open={is_error_modal_open}
setIsErrorModalOpen={is_open => {
if (!is_open) buy_sell_store.hideAdvertiserPage();
+ if (general_store.active_index !== 0)
+ my_profile_store.setActiveTab(my_profile_tabs.MY_COUNTERPARTIES);
advertiser_page_store.onCancel();
general_store.setBlockUnblockUserError('');
}}
@@ -117,7 +121,11 @@ const AdvertiserPage = () => {
{
+ buy_sell_store.hideAdvertiserPage();
+ if (general_store.active_index === general_store.path.my_profile)
+ my_profile_store.setActiveTab(my_profile_tabs.MY_COUNTERPARTIES);
+ }}
page_title={localize("Advertiser's page")}
/>
{!is_my_advert && (
@@ -175,7 +183,6 @@ const AdvertiserPage = () => {
-
diff --git a/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.jsx b/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.jsx
index 78fa00b8b210..0b6629b98b21 100644
--- a/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.jsx
+++ b/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.jsx
@@ -19,7 +19,7 @@ const BlockUserEmpty = () => {
width={128}
/>
-
+
@@ -28,7 +28,7 @@ const BlockUserEmpty = () => {
body_className='block-user-empty'
height_offset='80px'
is_modal_open
- page_header_text={localize('Blocked advertisers')}
+ page_header_text={localize('My counterparties')}
pageHeaderReturnFn={() => my_profile_store.setActiveTab(my_profile_tabs.MY_STATS)}
>
{
width={128}
/>
-
+
diff --git a/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.scss b/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.scss
index dd67de69a806..f9320b9ffbcd 100644
--- a/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.scss
+++ b/packages/p2p/src/components/block-user/block-user-empty/block-user-empty.scss
@@ -3,6 +3,10 @@
display: flex;
flex-direction: column;
+ @include mobile {
+ margin-top: 16rem;
+ }
+
&__icon {
margin-top: 2.2rem;
}
diff --git a/packages/p2p/src/components/block-user/block-user-modal/block-user-modal.scss b/packages/p2p/src/components/block-user/block-user-modal/block-user-modal.scss
index 84d470158208..a7999bd128af 100644
--- a/packages/p2p/src/components/block-user/block-user-modal/block-user-modal.scss
+++ b/packages/p2p/src/components/block-user/block-user-modal/block-user-modal.scss
@@ -1,5 +1,9 @@
.block-user-modal {
&__body {
padding: 0 2.4rem;
+
+ @include mobile {
+ padding: 0 1.6rem;
+ }
}
}
diff --git a/packages/p2p/src/components/buy-sell/buy-sell-row.jsx b/packages/p2p/src/components/buy-sell/buy-sell-row.jsx
index 3b04979dd909..663d1960f055 100644
--- a/packages/p2p/src/components/buy-sell/buy-sell-row.jsx
+++ b/packages/p2p/src/components/buy-sell/buy-sell-row.jsx
@@ -60,18 +60,18 @@ const BuySellRow = ({ row: advert }) => {
exchange_rate: floating_rate_store.exchange_rate,
market_rate: effective_rate,
});
+ const onClickRow = () => {
+ if (!general_store.is_advertiser) {
+ buy_sell_store.setShouldShowVerification(true);
+ } else if (!general_store.is_barred) {
+ buy_sell_store.showAdvertiserPage(advert);
+ }
+ };
if (isMobile()) {
return (
-
- general_store.is_barred || !general_store.is_advertiser
- ? undefined
- : buy_sell_store.showAdvertiserPage(advert)
- }
- >
+
onClickRow()}>
{
- general_store.is_barred || !general_store.is_advertiser
- ? undefined
- : buy_sell_store.showAdvertiserPage(advert)
- }
+ onClick={() => onClickRow()}
>
{
if (buy_sell_store.should_show_verification) {
return (
-
+
);
diff --git a/packages/p2p/src/components/buy-sell/buy-sell.scss b/packages/p2p/src/components/buy-sell/buy-sell.scss
index f9fdd2c8b38e..5857e198168a 100644
--- a/packages/p2p/src/components/buy-sell/buy-sell.scss
+++ b/packages/p2p/src/components/buy-sell/buy-sell.scss
@@ -73,6 +73,10 @@
}
}
+ &__page-return {
+ margin: 2rem;
+ }
+
&__table-header {
display: grid;
grid-template-columns: 2fr 1.5fr 1fr 1.5fr 1fr;
diff --git a/packages/p2p/src/components/error-modal/error-modal.scss b/packages/p2p/src/components/error-modal/error-modal.scss
index eb26b69cd033..5e521fcc3fa4 100644
--- a/packages/p2p/src/components/error-modal/error-modal.scss
+++ b/packages/p2p/src/components/error-modal/error-modal.scss
@@ -1,5 +1,9 @@
.error-modal {
&__body {
padding: 0 2.4rem;
+
+ @include mobile {
+ padding: 0 1.6rem;
+ }
}
}
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.jsx
new file mode 100644
index 000000000000..a413df12641e
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.jsx
@@ -0,0 +1,38 @@
+import React from 'react';
+import { Dropdown, Icon } from '@deriv/components';
+import { isMobile } from '@deriv/shared';
+import { observer } from 'mobx-react-lite';
+import { localize } from 'Components/i18next';
+import { useStores } from 'Stores';
+import './block-user-dropdown.scss';
+
+const BlockUserDropdown = () => {
+ const { my_profile_store } = useStores();
+
+ if (isMobile()) {
+ return (
+ {
+ my_profile_store.setIsFilterModalOpen(true);
+ }}
+ >
+
+
+ );
+ }
+
+ return (
+
+ );
+};
+
+export default observer(BlockUserDropdown);
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.scss b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.scss
new file mode 100644
index 000000000000..cd29dc4ad0d1
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/block-user-dropdown.scss
@@ -0,0 +1,15 @@
+.block-user-dropdown {
+ margin-left: 1rem;
+ width: 20rem;
+
+ @include mobile {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid var(--border-normal);
+ border-radius: 4px;
+ padding: 0.8rem;
+ height: 4rem;
+ width: 4rem;
+ }
+}
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/index.js b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/index.js
new file mode 100644
index 000000000000..846c7e204170
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-dropdown/index.js
@@ -0,0 +1,3 @@
+import BlockUserDropdown from './block-user-dropdown.jsx';
+
+export default BlockUserDropdown;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/block-user-filter-modal.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/block-user-filter-modal.jsx
new file mode 100644
index 000000000000..a5b40d343031
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/block-user-filter-modal.jsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { observer } from 'mobx-react-lite';
+import { Modal, RadioGroup, Text } from '@deriv/components';
+import { useStores } from 'Stores';
+
+const BlockUserFilterModal = () => {
+ const { my_profile_store } = useStores();
+
+ return (
+ my_profile_store.setIsFilterModalOpen(false)}
+ width='80vw'
+ >
+
+ {my_profile_store.block_user_sort_list.map((list_item, key) => {
+ return (
+
+ {list_item.text}
+
+ }
+ />
+ );
+ })}
+
+
+ );
+};
+
+export default observer(BlockUserFilterModal);
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/index.js b/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/index.js
new file mode 100644
index 000000000000..7da3e2b9c1e8
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-filter-modal/index.js
@@ -0,0 +1,3 @@
+import BlockUserFilterModal from './block-user-filter-modal.jsx';
+
+export default BlockUserFilterModal;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.jsx
new file mode 100644
index 000000000000..bba999ac149a
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.jsx
@@ -0,0 +1,62 @@
+import React from 'react';
+import { observer } from 'mobx-react-lite';
+import { useStores } from 'Stores';
+import { Text, Loading } from '@deriv/components';
+import { isMobile } from '@deriv/shared';
+import BlockUserDropdown from '../block-user-dropdown';
+import BlockUserTable from '../block-user-table';
+import BlockUserTableError from '../block-user-table/block-user-table-error';
+import SearchBox from 'Components/search-box';
+import debounce from 'lodash.debounce';
+import { localize } from 'Components/i18next';
+import './block-user-list.scss';
+
+const BlockUserList = observer(() => {
+ const { general_store, my_profile_store } = useStores();
+
+ const debouncedGetSearchedTradePartners = debounce(search => {
+ my_profile_store.setSearchTerm(search.trim());
+ my_profile_store.getSearchedTradePartners();
+ }, 200);
+
+ const onSearch = search => {
+ // Ensures that trade partners list is not reloaded if search term entered is the same
+ if (my_profile_store.search_term !== search.trim()) {
+ my_profile_store.setIsBlockUserTableLoading(true);
+ debouncedGetSearchedTradePartners(search);
+ }
+ };
+
+ if (general_store.is_barred && general_store.block_unblock_user_error) {
+ return ;
+ }
+
+ if (my_profile_store.is_loading) {
+ return ;
+ }
+
+ return (
+
+ {my_profile_store.trade_partners_list.length > 0 && (
+
+
+ {localize(
+ "When you block someone, you won't see their ads, and they can't see yours. Your ads will be hidden from their search results, too."
+ )}
+
+
+
+
+
+
+ )}
+
+
+ );
+});
+
+export default BlockUserList;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.scss b/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.scss
new file mode 100644
index 000000000000..75691c5f050e
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-list/block-user-list.scss
@@ -0,0 +1,35 @@
+.block-user-list {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ height: 100%;
+
+ & .search-box {
+ margin: 0rem 0.8rem 2.4rem;
+ width: 20rem;
+
+ @include mobile {
+ width: 15rem;
+ }
+ }
+
+ &__header {
+ display: flex;
+ flex-direction: row;
+
+ @include mobile {
+ align-items: center;
+ margin: 0 1.6rem;
+ z-index: 7;
+ }
+ }
+
+ &__text {
+ margin: 0 0.8rem 2rem;
+
+ @include mobile {
+ margin: 1.6rem;
+ z-index: 7;
+ }
+ }
+}
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-list/index.js b/packages/p2p/src/components/my-profile/block-user/block-user-list/index.js
new file mode 100644
index 000000000000..72269ee1bcb8
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-list/index.js
@@ -0,0 +1,3 @@
+import BlockUserList from './block-user-list.jsx';
+
+export default BlockUserList;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row.jsx
deleted file mode 100644
index c4c40c49c1bb..000000000000
--- a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row.jsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { observer } from 'mobx-react-lite';
-import { useStores } from 'Stores';
-import { Button, Table, Text } from '@deriv/components';
-import UserAvatar from 'Components/user/user-avatar';
-import { localize } from 'Components/i18next';
-import '../block-user.scss';
-
-const BlockUserRow = ({ row: advertiser }) => {
- const { my_profile_store } = useStores();
- return (
-
-
-
-
-
-
- {advertiser.name}
-
-
-
-
-
- my_profile_store.onClickUnblock(advertiser)}>
- {localize('Unblock')}
-
-
-
- );
-};
-
-BlockUserRow.propTypes = {
- advertiser: PropTypes.object,
-};
-
-export default observer(BlockUserRow);
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.jsx
new file mode 100644
index 000000000000..f907e5160364
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.jsx
@@ -0,0 +1,68 @@
+/* eslint-disable react/prop-types */
+import React from 'react';
+import PropTypes from 'prop-types';
+import { observer } from 'mobx-react-lite';
+import { useStores } from 'Stores';
+import classNames from 'classnames';
+import { Button, Table, Text } from '@deriv/components';
+import { localize } from 'Components/i18next';
+import UserAvatar from 'Components/user/user-avatar';
+
+const BlockUserRow = ({ row: advertiser }) => {
+ const { buy_sell_store, general_store, my_profile_store } = useStores();
+ const { id, is_blocked, name } = advertiser;
+
+ return (
+
+
+ {
+ if (!general_store.is_barred) {
+ my_profile_store.getCounterpartyAdvertiserInfo(id);
+ buy_sell_store.setSelectedAdState({
+ advertiser_details: { id, name },
+ });
+ }
+ }}
+ >
+
+
+
+ {name}
+
+
+
+
+
+ {is_blocked ? (
+ my_profile_store.onClickUnblock(advertiser)}
+ >
+ {localize('Unblock')}
+
+ ) : (
+ my_profile_store.onClickUnblock(advertiser)}
+ >
+ {localize('Block')}
+
+ )}
+
+
+ );
+};
+
+BlockUserRow.propTypes = {
+ advertiser: PropTypes.object,
+};
+
+export default observer(BlockUserRow);
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.scss b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.scss
new file mode 100644
index 000000000000..e45e609aa321
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/block-user-row.scss
@@ -0,0 +1,61 @@
+.block-user-row {
+ display: grid;
+ padding: 1.6rem;
+ grid-template-columns: 1fr 1fr;
+
+ &:hover {
+ background-color: var(--general-hover);
+
+ @include mobile {
+ background-color: inherit;
+ }
+ }
+
+ &__button-group {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+
+ & button {
+ min-width: 9rem;
+ }
+
+ &__unblock-button {
+ // Needed to override sticky hover in mobile
+ @include mobile {
+ &:hover {
+ background: transparent !important;
+ }
+ }
+ }
+
+ &__block-button {
+ // Needed to override sticky hover in mobile
+ @include mobile {
+ &:hover {
+ background: transparent !important;
+ }
+
+ & > span {
+ color: var(--brand-red-coral) !important;
+ }
+ }
+ }
+ }
+
+ &__cell {
+ align-items: center;
+ display: flex;
+ cursor: pointer;
+
+ &--barred {
+ cursor: not-allowed;
+ }
+
+ &-container {
+ display: flex;
+ flex-direction: column;
+ margin-left: 0.8rem;
+ }
+ }
+}
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/index.js b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/index.js
new file mode 100644
index 000000000000..eb2f119c1a66
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-row/index.js
@@ -0,0 +1,4 @@
+import BlockUserRow from './block-user-row.jsx';
+import './block-user-row.scss';
+
+export default BlockUserRow;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error.jsx b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error/block-user-table-error.jsx
similarity index 84%
rename from packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error.jsx
rename to packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error/block-user-table-error.jsx
index d76941b3e5d1..63811a0a9b67 100644
--- a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error.jsx
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table-error/block-user-table-error.jsx
@@ -12,16 +12,16 @@ const BlockUserTableError = ({ error_message }) => {
return (
-
+
{
{
>
{
const { general_store, my_profile_store } = useStores();
React.useEffect(() => {
- my_profile_store.setBlockedAdvertisersList([]);
- my_profile_store.getBlockedAdvertisersList();
+ my_profile_store.setTradePartnersList([]);
+ my_profile_store.getTradePartnersList(true);
my_profile_store.setSearchTerm('');
reaction(
() => general_store.is_barred,
() => {
if (!general_store.is_barred) general_store.setBlockUnblockUserError('');
- my_profile_store.getBlockedAdvertisersList();
my_profile_store.setSearchTerm('');
+ my_profile_store.getTradePartnersList(true);
}
);
+ return () => {
+ my_profile_store.setTradePartnersList([]);
+ my_profile_store.setSearchTerm('');
+ my_profile_store.setSearchResults([]);
+ };
+
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
- if (my_profile_store.is_loading) {
+ if (my_profile_store.is_block_user_table_loading) {
return ;
}
- if (general_store.block_unblock_user_error && general_store.is_barred) {
- return ;
- }
-
- if (my_profile_store.search_term && my_profile_store.search_results.length === 0) {
+ if (my_profile_store.search_term && my_profile_store.rendered_trade_partners_list.length === 0) {
return (
-
+
{localize('There are no matching name.')}
);
}
- if (my_profile_store.blocked_advertisers_list.length) {
+ if (my_profile_store.rendered_trade_partners_list.length) {
return (
-
-
+
+
item.id}
loadMoreRowsFn={() => {}}
rowRenderer={props => }
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table.scss b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table.scss
new file mode 100644
index 000000000000..5e3d20a675f1
--- /dev/null
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/block-user-table.scss
@@ -0,0 +1,21 @@
+.block-user-table {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+
+ @include mobile {
+ height: 100%;
+ }
+
+ &__body {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ }
+
+ &__text {
+ display: inline-block;
+ padding-top: 3rem;
+ width: 100%;
+ }
+}
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user-table/index.js b/packages/p2p/src/components/my-profile/block-user/block-user-table/index.js
index 65c74e1007ef..0cd00faba6ef 100644
--- a/packages/p2p/src/components/my-profile/block-user/block-user-table/index.js
+++ b/packages/p2p/src/components/my-profile/block-user/block-user-table/index.js
@@ -1,4 +1,3 @@
import BlockUserTable from './block-user-table.jsx';
-import '../block-user.scss';
export default BlockUserTable;
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user.jsx b/packages/p2p/src/components/my-profile/block-user/block-user.jsx
index b904aefddc5b..62a04e6046ca 100644
--- a/packages/p2p/src/components/my-profile/block-user/block-user.jsx
+++ b/packages/p2p/src/components/my-profile/block-user/block-user.jsx
@@ -2,43 +2,14 @@ import React from 'react';
import { observer } from 'mobx-react-lite';
import { useStores } from 'Stores';
import { DesktopWrapper, MobileFullPageModal, MobileWrapper } from '@deriv/components';
-import BlockUserModal from 'Components/block-user/block-user-modal';
-import BlockUserTable from 'Components/my-profile/block-user/block-user-table/block-user-table';
-import SearchBox from 'Components/search-box';
+import { isMobile } from '@deriv/shared';
import { my_profile_tabs } from 'Constants/my-profile-tabs';
-import debounce from 'lodash.debounce';
import { localize } from 'Components/i18next';
-
-const BlockUserList = observer(() => {
- const { general_store, my_profile_store } = useStores();
-
- const loadBlockedAdvertisers = debounce(search => {
- my_profile_store.setSearchTerm(search.trim());
- my_profile_store.loadMoreBlockedAdvertisers();
- }, 200);
-
- const onSearch = search => {
- // Ensures that blocked advertisers list is not reloaded if search term entered is the same
- if (my_profile_store.search_term !== search.trim()) {
- my_profile_store.setIsLoading(true);
- loadBlockedAdvertisers(search);
- }
- };
-
- const onClear = () => {
- my_profile_store.setSearchTerm('');
- my_profile_store.setSearchResults([]);
- };
-
- return (
-
- {my_profile_store.blocked_advertisers_list.length > 0 && !general_store.is_barred && (
-
- )}
-
-
- );
-});
+import BlockUserModal from 'Components/block-user/block-user-modal';
+import BlockUserList from './block-user-list';
+import BlockUserFilterModal from './block-user-filter-modal';
+import ErrorModal from 'Components/error-modal/error-modal';
+import './block-user.scss';
const BlockUser = () => {
const { general_store, my_profile_store } = useStores();
@@ -46,23 +17,32 @@ const BlockUser = () => {
return (
general_store.setIsBlockUserModalOpen(false)}
onSubmit={my_profile_store.onSubmit}
/>
+ general_store.setBlockUnblockUserError('')}
+ width={isMobile() ? '90rem' : '40rem'}
+ />
+
my_profile_store.setActiveTab(my_profile_tabs.MY_STATS)}
>
diff --git a/packages/p2p/src/components/my-profile/block-user/block-user.scss b/packages/p2p/src/components/my-profile/block-user/block-user.scss
index 73e701d803a2..e2cde37cd9ce 100644
--- a/packages/p2p/src/components/my-profile/block-user/block-user.scss
+++ b/packages/p2p/src/components/my-profile/block-user/block-user.scss
@@ -1,27 +1,4 @@
.block-user {
- &__data-list {
- flex: 1;
-
- &__data-list-body {
- flex: 1;
- }
-
- .data-list__body-wrapper {
- flex: 1;
- }
- }
-
- &__list {
- display: flex;
- flex: 1;
- flex-direction: column;
- height: 100%;
-
- & .search-box {
- margin: 0rem 0.8rem 2.4rem;
- }
- }
-
&__modal {
@include mobile {
display: flex;
@@ -37,84 +14,4 @@
}
}
}
-
- &__table {
- display: flex;
- flex: 1;
- flex-direction: column;
-
- @include mobile {
- height: 100%;
- }
-
- &-body {
- flex: 1;
- display: flex;
- flex-direction: column;
- }
-
- &--error {
- align-items: center;
- display: flex;
- flex-direction: column;
-
- &-icon {
- margin-top: 2.2rem;
- }
-
- &-text {
- margin: 3rem 11rem;
-
- @include mobile {
- margin: 3rem 2rem;
- }
- }
- }
-
- &-header {
- display: grid;
- grid-template-columns: 1fr;
-
- > .dc-table__head:first-child {
- margin-left: 1.6rem;
- }
- }
- }
-
- &__text {
- display: inline-block;
- padding-top: 3rem;
- width: 100%;
- }
-
- &__row {
- display: grid;
- padding: 1.6rem;
- grid-template-columns: 1fr 1fr;
-
- &:hover {
- background-color: var(--general-hover);
-
- @include mobile {
- background-color: inherit;
- }
- }
-
- &-button {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- }
-
- &-cell {
- align-items: center;
- display: flex;
-
- &--container {
- display: flex;
- flex-direction: column;
- margin-left: 0.8rem;
- }
- }
- }
}
diff --git a/packages/p2p/src/components/my-profile/my-profile-content.jsx b/packages/p2p/src/components/my-profile/my-profile-content.jsx
index 8fd8b6a7d2dd..4392d69f55e1 100644
--- a/packages/p2p/src/components/my-profile/my-profile-content.jsx
+++ b/packages/p2p/src/components/my-profile/my-profile-content.jsx
@@ -52,7 +52,7 @@ const MyProfileContent = () => {
);
- } else if (my_profile_store.active_tab === my_profile_tabs.BLOCKED_ADVERTISERS) {
+ } else if (my_profile_store.active_tab === my_profile_tabs.MY_COUNTERPARTIES) {
return ;
}
return ;
diff --git a/packages/p2p/src/components/my-profile/my-profile-header/my-profile-header.jsx b/packages/p2p/src/components/my-profile/my-profile-header/my-profile-header.jsx
index 0c43797046eb..d325cddaa315 100644
--- a/packages/p2p/src/components/my-profile/my-profile-header/my-profile-header.jsx
+++ b/packages/p2p/src/components/my-profile/my-profile-header/my-profile-header.jsx
@@ -23,8 +23,8 @@ const MyProfileHeader = () => {
value: my_profile_tabs.AD_TEMPLATE,
},
{
- text: localize('Blocked advertisers'),
- value: my_profile_tabs.BLOCKED_ADVERTISERS,
+ text: localize('My counterparties'),
+ value: my_profile_tabs.MY_COUNTERPARTIES,
},
];
diff --git a/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats-table/my-profile-stats-table.scss b/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats-table/my-profile-stats-table.scss
index 23c6bfe58cc7..cb8dfb5aa5a6 100644
--- a/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats-table/my-profile-stats-table.scss
+++ b/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats-table/my-profile-stats-table.scss
@@ -2,7 +2,6 @@
border-bottom: none;
grid-template-columns: repeat(4, 1fr);
margin: 1.4rem 0;
- overflow: auto;
&.dc-table__row {
height: unset;
diff --git a/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats.jsx b/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats.jsx
index eddecc10b5e8..c2857cb88ea7 100644
--- a/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats.jsx
+++ b/packages/p2p/src/components/my-profile/my-profile-stats/my-profile-stats.jsx
@@ -25,8 +25,8 @@ const MyStats = () => {
onClick: () => my_profile_store.setActiveTab(my_profile_tabs.AD_TEMPLATE),
},
{
- default_text: 'Blocked advertisers',
- onClick: () => my_profile_store.setActiveTab(my_profile_tabs.BLOCKED_ADVERTISERS),
+ default_text: 'My counterparties',
+ onClick: () => my_profile_store.setActiveTab(my_profile_tabs.MY_COUNTERPARTIES),
},
];
diff --git a/packages/p2p/src/constants/my-profile-tabs.js b/packages/p2p/src/constants/my-profile-tabs.js
index d36db86c19b9..2df37daa4a52 100644
--- a/packages/p2p/src/constants/my-profile-tabs.js
+++ b/packages/p2p/src/constants/my-profile-tabs.js
@@ -2,5 +2,5 @@ export const my_profile_tabs = Object.freeze({
MY_STATS: 'my_stats',
PAYMENT_METHODS: 'payment_methods',
AD_TEMPLATE: 'ad_template',
- BLOCKED_ADVERTISERS: 'blocked_advertisers',
+ MY_COUNTERPARTIES: 'my_counterparties',
});
diff --git a/packages/p2p/src/stores/advertiser-page-store.js b/packages/p2p/src/stores/advertiser-page-store.js
index c2714cffc87e..d0494e15b80b 100644
--- a/packages/p2p/src/stores/advertiser-page-store.js
+++ b/packages/p2p/src/stores/advertiser-page-store.js
@@ -43,6 +43,7 @@ export default class AdvertiserPageStore extends BaseStore {
advertiser_details: computed,
advertiser_details_id: computed,
advertiser_details_name: computed,
+ getCounterpartyAdvertiserList: action.bound,
handleTabItemClick: action.bound,
onCancel: action.bound,
onCancelClick: action.bound,
@@ -126,17 +127,46 @@ export default class AdvertiserPageStore extends BaseStore {
}
setAdvertiserInfo(response) {
+ const { general_store } = this.root_store;
+
if (response.error) {
this.setErrorMessage(response.error);
} else {
const { p2p_advertiser_info } = response;
this.setCounterpartyAdvertiserInfo(p2p_advertiser_info);
- this.setIsCounterpartyAdvertiserBlocked(!!p2p_advertiser_info.is_blocked);
+
+ // TODO: uncomment this when BE has fixed is_blocked flag issue for block user overlay
+ // this.setIsCounterpartyAdvertiserBlocked(!!p2p_advertiser_info.is_blocked);
+
+ // TODO: remove this when above issue is fixed
+ this.setIsCounterpartyAdvertiserBlocked(
+ general_store.advertiser_relations_response.some(
+ advertiser => p2p_advertiser_info.id === advertiser.id
+ ) || !!p2p_advertiser_info.is_blocked
+ );
}
this.setIsLoading(false);
}
+ getCounterpartyAdvertiserList(advertiser_id) {
+ this.setIsLoading(true);
+ requestWS({
+ p2p_advert_list: 1,
+ advertiser_id,
+ }).then(response => {
+ if (response) {
+ if (!response.error) {
+ const { list } = response.p2p_advert_list;
+ this.setAdverts(list.filter(advert => advert.counterparty_type === this.counterparty_type));
+ } else {
+ this.setErrorMessage(response.error);
+ }
+ }
+ this.setIsLoading(false);
+ });
+ }
+
handleTabItemClick(idx) {
this.setActiveIndex(idx);
if (idx === 0) {
@@ -178,6 +208,7 @@ export default class AdvertiserPageStore extends BaseStore {
!this.is_counterparty_advertiser_blocked,
this.advertiser_details_id
);
+ if (this.is_counterparty_advertiser_blocked) this.getCounterpartyAdvertiserList(this.advertiser_details_id);
this.setIsDropdownMenuVisible(false);
}
diff --git a/packages/p2p/src/stores/general-store.js b/packages/p2p/src/stores/general-store.js
index 8bbc27edc31f..f07832388f9a 100644
--- a/packages/p2p/src/stores/general-store.js
+++ b/packages/p2p/src/stores/general-store.js
@@ -17,6 +17,7 @@ export default class GeneralStore extends BaseStore {
advertiser_id = null;
advertiser_info = {};
advertiser_sell_limit = null;
+ advertiser_relations_response = []; //TODO: Remove this when backend has fixed is_blocked flag issue
block_unblock_user_error = '';
balance;
cancels_remaining = null;
@@ -69,6 +70,7 @@ export default class GeneralStore extends BaseStore {
advertiser_id: observable,
advertiser_buy_limit: observable,
advertiser_sell_limit: observable,
+ advertiser_relations_response: observable, //TODO: Remove this when backend has fixed is_blocked flag issue
block_unblock_user_error: observable,
balance: observable,
feature_level: observable,
@@ -124,6 +126,7 @@ export default class GeneralStore extends BaseStore {
setAdvertiserBuyLimit: action.bound,
setAdvertiserSellLimit: action.bound,
setAppProps: action.bound,
+ setAdvertiserRelationsResponse: action.bound, //TODO: Remove this when backend has fixed is_blocked flag issue
setFeatureLevel: action.bound,
setInactiveNotificationCount: action.bound,
setIsAdvertiser: action.bound,
@@ -202,6 +205,10 @@ export default class GeneralStore extends BaseStore {
this.setIsBlockUserModalOpen(false);
if (should_set_is_counterparty_blocked) {
const { p2p_advertiser_relations } = response;
+
+ //TODO: Remove this when backend has fixed is_blocked flag issue
+ this.setAdvertiserRelationsResponse(p2p_advertiser_relations.blocked_advertisers);
+
advertiser_page_store.setIsCounterpartyAdvertiserBlocked(
p2p_advertiser_relations.blocked_advertisers.some(ad => ad.id === advertiser_id)
);
@@ -585,6 +592,11 @@ export default class GeneralStore extends BaseStore {
this.props = props;
}
+ //TODO: Remove this when backend has fixed is_blocked flag issue
+ setAdvertiserRelationsResponse(advertiser_relations_response) {
+ this.advertiser_relations_response = advertiser_relations_response;
+ }
+
setBlockUnblockUserError(block_unblock_user_error) {
this.block_unblock_user_error = block_unblock_user_error;
}
diff --git a/packages/p2p/src/stores/my-profile-store.js b/packages/p2p/src/stores/my-profile-store.js
index e9d5ff68df01..90e70a316e61 100644
--- a/packages/p2p/src/stores/my-profile-store.js
+++ b/packages/p2p/src/stores/my-profile-store.js
@@ -4,6 +4,7 @@ import { localize } from 'Components/i18next';
import { textValidator } from 'Utils/validations';
import BaseStore from 'Stores/base_store';
import { my_profile_tabs } from 'Constants/my-profile-tabs';
+import { isMobile } from '@deriv/shared';
export default class MyProfileStore extends BaseStore {
active_tab = my_profile_tabs.MY_STATS;
@@ -11,16 +12,17 @@ export default class MyProfileStore extends BaseStore {
advertiser_payment_methods = {};
advertiser_payment_methods_error = '';
available_payment_methods = {};
- blocked_advertisers_list = [];
delete_error_message = '';
error_message = '';
form_error = '';
full_name = '';
+ is_block_user_table_loading = false;
is_button_loading = false;
is_cancel_add_payment_method_modal_open = false;
is_cancel_edit_payment_method_modal_open = false;
is_confirm_delete_modal_open = false;
is_delete_payment_method_error_modal_open = false;
+ is_filter_modal_open = false;
is_loading = false;
is_submit_success = false;
payment_method_value = undefined;
@@ -29,15 +31,17 @@ export default class MyProfileStore extends BaseStore {
payment_method_to_edit = {};
search_results = [];
search_term = '';
- selected_blocked_user = {};
selected_payment_method = '';
selected_payment_method_display_name = '';
selected_payment_method_fields = [];
selected_payment_method_type = '';
+ selected_sort_value = 'all_users';
+ selected_trade_partner = {};
should_hide_my_profile_tab = false;
should_show_add_payment_method_error_modal = false;
should_show_add_payment_method_form = false;
should_show_edit_payment_method_form = false;
+ trade_partners_list = [];
// TODO: Refactor this out once modal management refactoring is completed
MODAL_TRANSITION_DURATION = 280;
@@ -52,16 +56,17 @@ export default class MyProfileStore extends BaseStore {
advertiser_payment_methods: observable,
advertiser_payment_methods_error: observable,
available_payment_methods: observable,
- blocked_advertisers_list: observable,
delete_error_message: observable,
error_message: observable,
form_error: observable,
full_name: observable,
+ is_block_user_table_loading: observable,
is_button_loading: observable,
is_cancel_add_payment_method_modal_open: observable,
is_cancel_edit_payment_method_modal_open: observable,
is_confirm_delete_modal_open: observable,
is_delete_payment_method_error_modal_open: observable,
+ is_filter_modal_open: observable,
is_loading: observable,
is_submit_success: observable,
payment_method_value: observable,
@@ -70,36 +75,43 @@ export default class MyProfileStore extends BaseStore {
payment_method_to_edit: observable,
search_results: observable,
search_term: observable,
- selected_blocked_user: observable,
selected_payment_method: observable,
selected_payment_method_display_name: observable,
selected_payment_method_fields: observable,
selected_payment_method_type: observable,
+ selected_sort_value: observable,
+ selected_trade_partner: observable,
should_hide_my_profile_tab: observable,
should_show_add_payment_method_error_modal: observable,
should_show_add_payment_method_form: observable,
should_show_edit_payment_method_form: observable,
+ trade_partners_list: observable,
advertiser_has_payment_methods: computed,
advertiser_payment_methods_list: computed,
+ block_user_sort_list: computed,
payment_method_field_set: computed,
initial_values: computed,
payment_method_info: computed,
payment_methods_list_items: computed,
payment_methods_list_methods: computed,
payment_methods_list_values: computed,
- rendered_blocked_advertisers_list: computed,
+ rendered_trade_partners_list: computed,
+ trade_partner_dropdown_list: computed,
createPaymentMethod: action.bound,
- getBlockedAdvertisersList: action.bound,
getAdvertiserPaymentMethods: action.bound,
+ getCounterpartyAdvertiserInfo: action.bound,
getPaymentMethodsList: action.bound,
getPaymentMethodDisplayName: action.bound,
getPaymentMethodValue: action.bound,
+ getSearchedTradePartners: action.bound,
getSelectedPaymentMethodDetails: action.bound,
+ getTradePartnersList: action.bound,
+ handleChange: action.bound,
handleSubmit: action.bound,
handleToggle: action.bound,
hideAddPaymentMethodForm: action.bound,
- loadMoreBlockedAdvertisers: action.bound,
onClickDelete: action.bound,
+ onClear: action.bound,
validatePaymentMethodFields: action.bound,
updatePaymentMethod: action.bound,
showAddPaymentMethodForm: action.bound,
@@ -111,16 +123,17 @@ export default class MyProfileStore extends BaseStore {
setAdvertiserPaymentMethods: action.bound,
setAdvertiserPaymentMethodsError: action.bound,
setAvailablePaymentMethods: action.bound,
- setBlockedAdvertisersList: action.bound,
setDefaultAdvertDescription: action.bound,
setDeleteErrorMessage: action.bound,
setErrorMessage: action.bound,
setFormError: action.bound,
setFullName: action.bound,
+ setIsBlockUserTableLoading: action.bound,
setIsCancelAddPaymentMethodModalOpen: action.bound,
setIsCancelEditPaymentMethodModalOpen: action.bound,
setIsConfirmDeleteModalOpen: action.bound,
setIsDeletePaymentMethodErrorModalOpen: action.bound,
+ setIsFilterModalOpen: action.bound,
setIsLoading: action.bound,
setIsSubmitSuccess: action.bound,
setPaymentMethodValue: action.bound,
@@ -129,15 +142,17 @@ export default class MyProfileStore extends BaseStore {
setPaymentMethodToEdit: action.bound,
setSearchResults: action.bound,
setSearchTerm: action.bound,
- setSelectedBlockedUser: action.bound,
setSelectedPaymentMethod: action.bound,
setSelectedPaymentMethodDisplayName: action.bound,
setSelectedPaymentMethodFields: action.bound,
setSelectedPaymentMethodType: action.bound,
+ setSelectedSortValue: action.bound,
+ setSelectedTradePartner: action.bound,
setShouldHideMyProfileTab: action.bound,
setShouldShowAddPaymentMethodErrorModal: action.bound,
setShouldShowAddPaymentMethodForm: action.bound,
setShouldShowEditPaymentMethodForm: action.bound,
+ setTradePartnersList: action.bound,
});
}
@@ -161,6 +176,25 @@ export default class MyProfileStore extends BaseStore {
return list;
}
+ get block_user_sort_list() {
+ return [
+ {
+ text: localize('All ({{list_value}})', {
+ list_value: this.is_block_user_table_loading ? '...' : this.trade_partner_dropdown_list.length,
+ }),
+ value: 'all_users',
+ },
+ {
+ text: localize('Blocked ({{list_value}})', {
+ list_value: this.is_block_user_table_loading
+ ? '...'
+ : this.trade_partner_dropdown_list.filter(partner => partner.is_blocked === 1).length,
+ }),
+ value: 'blocked_users',
+ },
+ ];
+ }
+
get payment_method_field_set() {
// The fields are rendered dynamically based on the response. This variable will hold a dictionary of field id and its name/required properties
return this.selected_payment_method_fields.reduce((dict, field_data) => {
@@ -230,16 +264,29 @@ export default class MyProfileStore extends BaseStore {
}
/**
- * Evaluates a new blocked_advertiser_list based on if the user has searched a blocked advertiser
- * By default it returns the blocked_advertisers_list when there are no searches
+ * Evaluates a new trade_partners_list based on if the user has searched an advertiser
+ * By default it returns the trade_partners_list when there are no searches
*
- * @returns {Array} Either the entire blocked advertisers list or filtered advertisers list by search term
+ * @returns {Array} Returns the entire trade partners list or filtered list of searched trade partners
*/
- get rendered_blocked_advertisers_list() {
+ get rendered_trade_partners_list() {
if (this.search_term) {
- return this.search_results;
+ return this.selected_sort_value === 'all_users'
+ ? this.search_results
+ : this.search_results.filter(partner => partner.is_blocked === 1);
}
- return this.blocked_advertisers_list;
+ return this.selected_sort_value === 'all_users'
+ ? this.trade_partners_list
+ : this.trade_partners_list.filter(partner => partner.is_blocked === 1);
+ }
+
+ get trade_partner_dropdown_list() {
+ if (this.search_term) {
+ if (this.search_results.length) return this.search_results;
+ else if (this.search_results.length === 0) return [];
+ }
+
+ return this.trade_partners_list;
}
createPaymentMethod(values, { setSubmitting }) {
@@ -282,23 +329,6 @@ export default class MyProfileStore extends BaseStore {
});
}
- getBlockedAdvertisersList() {
- this.setIsLoading(true);
- requestWS({
- p2p_advertiser_relations: 1,
- }).then(response => {
- if (response) {
- if (!response.error) {
- this.setBlockedAdvertisersList(response.p2p_advertiser_relations?.blocked_advertisers);
- this.loadMoreBlockedAdvertisers();
- } else {
- this.root_store.general_store.setBlockUnblockUserError(response.error.message);
- }
- }
- this.setIsLoading(false);
- });
- }
-
getAdvertiserPaymentMethods() {
this.setIsLoading(true);
requestWS({
@@ -313,6 +343,23 @@ export default class MyProfileStore extends BaseStore {
});
}
+ getCounterpartyAdvertiserInfo(advertiser_id) {
+ const { advertiser_page_store, buy_sell_store, general_store } = this.root_store;
+ requestWS({
+ p2p_advertiser_info: 1,
+ id: advertiser_id,
+ }).then(response => {
+ if (response) {
+ if (!response.error) {
+ advertiser_page_store.setCounterpartyAdvertiserInfo(response.p2p_advertiser_info);
+ buy_sell_store.setShowAdvertiserPage(true);
+ } else {
+ general_store.setBlockUnblockUserError(response.error.message);
+ }
+ }
+ });
+ }
+
getPaymentMethodsList() {
requestWS({
p2p_payment_methods: 1,
@@ -394,6 +441,40 @@ export default class MyProfileStore extends BaseStore {
}
});
}
+
+ getTradePartnersList(is_initial_load = false) {
+ const { general_store } = this.root_store;
+
+ if (is_initial_load) this.setIsBlockUserTableLoading(true);
+
+ requestWS({
+ p2p_advertiser_list: 1,
+ trade_partners: 1,
+ ...(this.search_term ? { advertiser_name: this.search_term } : {}),
+ }).then(response => {
+ if (response) {
+ if (!response.error) {
+ const { list } = response.p2p_advertiser_list;
+
+ if (this.search_term) this.setSearchResults(list);
+ else this.setTradePartnersList(list);
+ } else {
+ general_store.setBlockUnblockUserError(response.error.message);
+ }
+ }
+ this.setIsBlockUserTableLoading(false);
+ });
+ }
+
+ handleChange(e) {
+ this.setSelectedSortValue(e.target.value);
+ this.getTradePartnersList(true);
+
+ if (isMobile()) {
+ this.setIsFilterModalOpen(false);
+ }
+ }
+
handleSubmit(values) {
requestWS({
p2p_advertiser_update: 1,
@@ -411,6 +492,7 @@ export default class MyProfileStore extends BaseStore {
}, 3000);
});
}
+
handleToggle() {
this.root_store.general_store.setShouldShowRealName(!this.root_store?.general_store?.should_show_real_name);
requestWS({
@@ -431,23 +513,12 @@ export default class MyProfileStore extends BaseStore {
}
/**
- * This function loads more blocked advertisers as necessary if the user is searching for a blocked advertiser
- * It updates the search_results based on the searched advertiser
+ * This function updates the search_results based on the searched advertiser
*/
- loadMoreBlockedAdvertisers() {
+ getSearchedTradePartners() {
if (this.search_term) {
- const search_results = this.blocked_advertisers_list.filter(blocked_advertiser =>
- blocked_advertiser.name.toLowerCase().includes(this.search_term.toLowerCase().trim())
- );
-
- // if user deletes the last blocked advertiser while searching, display 'You have no blocked advertisers' message condition
- if (this.search_term && search_results.length === 0 && this.blocked_advertisers_list.length === 0) {
- this.setSearchTerm('');
- }
-
- this.setSearchResults(search_results);
+ this.getTradePartnersList(true);
}
- this.setIsLoading(false);
}
onClickDelete() {
@@ -468,11 +539,19 @@ export default class MyProfileStore extends BaseStore {
});
}
+ onClear() {
+ if (this.search_term) {
+ this.setSearchTerm('');
+ this.setSearchResults([]);
+ this.getTradePartnersList(true);
+ }
+ }
+
onClickUnblock(advertiser) {
const { general_store } = this.root_store;
general_store.setIsBlockUserModalOpen(true);
- this.setSelectedBlockedUser(advertiser);
+ this.setSelectedTradePartner(advertiser);
}
onEditDeletePaymentMethodCard(event, payment_method) {
@@ -492,8 +571,8 @@ export default class MyProfileStore extends BaseStore {
clearTimeout(delay);
general_store.setIsBlockUserModalOpen(false);
- general_store.blockUnblockUser(false, this.selected_blocked_user.id);
- const delay = setTimeout(() => this.getBlockedAdvertisersList(), 250);
+ general_store.blockUnblockUser(!this.selected_trade_partner.is_blocked, this.selected_trade_partner.id);
+ const delay = setTimeout(() => this.getTradePartnersList(), 250);
}
showAddPaymentMethodForm() {
@@ -615,10 +694,6 @@ export default class MyProfileStore extends BaseStore {
this.available_payment_methods = available_payment_methods;
}
- setBlockedAdvertisersList(blocked_advertisers_list) {
- this.blocked_advertisers_list = blocked_advertisers_list;
- }
-
setDefaultAdvertDescription(default_advert_description) {
this.default_advert_description = default_advert_description;
}
@@ -639,6 +714,10 @@ export default class MyProfileStore extends BaseStore {
this.full_name = full_name;
}
+ setIsBlockUserTableLoading(is_block_user_table_loading) {
+ this.is_block_user_table_loading = is_block_user_table_loading;
+ }
+
setIsCancelAddPaymentMethodModalOpen(is_cancel_add_payment_method_modal_open) {
this.is_cancel_add_payment_method_modal_open = is_cancel_add_payment_method_modal_open;
}
@@ -655,6 +734,10 @@ export default class MyProfileStore extends BaseStore {
this.is_delete_payment_method_error_modal_open = is_delete_payment_method_error_modal_open;
}
+ setIsFilterModalOpen(is_filter_modal_open) {
+ this.is_filter_modal_open = is_filter_modal_open;
+ }
+
setIsLoading(is_loading) {
this.is_loading = is_loading;
}
@@ -687,10 +770,6 @@ export default class MyProfileStore extends BaseStore {
this.search_term = search_term;
}
- setSelectedBlockedUser(selected_blocked_user) {
- this.selected_blocked_user = selected_blocked_user;
- }
-
setSelectedPaymentMethod(selected_payment_method) {
this.selected_payment_method = selected_payment_method;
}
@@ -707,6 +786,14 @@ export default class MyProfileStore extends BaseStore {
this.selected_payment_method_type = selected_payment_method_type;
}
+ setSelectedSortValue(selected_sort_value) {
+ this.selected_sort_value = selected_sort_value;
+ }
+
+ setSelectedTradePartner(selected_trade_partner) {
+ this.selected_trade_partner = selected_trade_partner;
+ }
+
setShouldHideMyProfileTab(should_hide_my_profile_tab) {
this.should_hide_my_profile_tab = should_hide_my_profile_tab;
}
@@ -722,4 +809,8 @@ export default class MyProfileStore extends BaseStore {
setShouldShowEditPaymentMethodForm(should_show_edit_payment_method_form) {
this.should_show_edit_payment_method_form = should_show_edit_payment_method_form;
}
+
+ setTradePartnersList(trade_partners_list) {
+ this.trade_partners_list = trade_partners_list;
+ }
}