From 4378afb8b50d0d485f587c4970b9ff0ceff482e7 Mon Sep 17 00:00:00 2001 From: Shafin Al Karim <129021108+shafin-deriv@users.noreply.github.com> Date: Tue, 10 Dec 2024 16:39:55 +0800 Subject: [PATCH] Revert "ahmed/DAPI-819/chore--code-improvement" --- .../__tests__/AccountSwitcher.test.tsx | 14 +- .../__tests__/ApiTokenNavbarItem.test.tsx | 287 ++++++++++++ .../api_token_switcher.module.scss | 134 ++++++ src/components/ApiTokenNavbarItem/index.tsx | 90 ++++ .../__tests__/CustomCheckbox.test.tsx | 2 +- .../__tests__/CustomRadioButton.test.tsx | 55 +++ .../custom_radio_button.scss | 30 ++ src/components/CustomRadioButton/index.tsx | 38 ++ .../__tests__/CustomSelectDropdown.test.tsx | 112 +++++ .../__tests__/AccountDropdown.test.tsx | 56 +++ .../account_dropdown.module.scss | 1 + .../AccountDropdown/index.tsx | 40 ++ .../SelectedAccount/index.tsx | 22 + .../selected_account.module.scss | 26 ++ .../custom_select_dropdown.module.scss | 93 ++++ .../custom_select_item.module.scss | 31 ++ src/components/CustomSelectDropdown/index.tsx | 56 +++ .../token-dropdown/SelectedToken/index.tsx | 14 + .../__tests__/TokenDropdown.test.tsx | 64 +++ .../token-dropdown/TokenDropdown/index.tsx | 50 ++ .../TokenDropdown/token_dropdown.module.scss | 1 + .../__tests__/item.desktop.test.tsx | 56 ++- .../__tests__/SubscribeRenderer.test.tsx | 5 +- .../Home/Carousel/Carousel.module.scss | 17 + src/features/Home/Carousel/Carousel.tsx | 52 +++ .../NextButton/NextButton.module.scss | 16 + .../Home/Carousel/NextButton/index.tsx | 16 + .../PrevButton/PrevButton.module.scss | 15 + .../Home/Carousel/PrevButton/index.tsx | 16 + .../SlideContent/SlideContent.module.scss | 18 + .../Carousel/SlideContent/SlideContent.tsx | 24 + .../Home/Carousel/__tests__/Carousel.test.tsx | 94 ++++ src/features/Home/Carousel/swiper-custom.scss | 19 + .../api-token-card/api-token-cards.tsx | 4 +- .../__tests__/api-token.form.test.tsx | 48 +- .../api-token-form/api-token-form.tsx | 6 +- .../app-form/__tests__/app-form.test.tsx | 352 ++++++++++++++ .../components/app-form/app-form.module.scss | 222 +++++++++ .../components/app-form/app-form.tsx | 428 ++++++++++++++++++ .../dashboard/components/app-form/index.ts | 3 + .../__tests__/update-app-dialog.test.tsx | 221 +++++++++ .../dialogs/update-app-dialog/index.ts | 3 + .../update-app-dialog.module.scss | 11 + .../update-app-dialog/update-app-dialog.tsx | 115 +++++ .../no-apps/__tests__/no-apps.test.tsx | 45 ++ .../dashboard/components/no-apps/index.ts | 3 + .../components/no-apps/no-apps.module.scss | 48 ++ .../dashboard/components/no-apps/no-apps.tsx | 34 ++ .../token-register/token-register.tsx | 46 +- .../components/token-register/types.ts | 87 ++-- .../__tests__/useRegisterApp.test.tsx | 88 ++++ .../dashboard/hooks/useRegisterApp/index.tsx | 18 + .../__tests__/useUpdateApp.test.tsx | 84 ++++ .../dashboard/hooks/useUpdateApp/index.tsx | 18 + .../manage-tokens/__tests__/index.test.tsx | 29 ++ .../dashboard/manage-tokens/index.tsx | 20 + .../__test__/register-tokens.test.tsx | 15 + .../dashboard/register-tokens/index.tsx | 8 + static/img/arrow_down.svg | 1 + static/img/arrow_left.svg | 1 + static/img/arrow_right.svg | 1 + static/img/chevron-left.svg | 3 + static/img/circle_dot_caption_bold.svg | 1 + static/img/circle_dot_caption_fill.svg | 1 + static/img/close_dialog.svg | 3 + static/img/delete.svg | 1 + static/img/deriv-logo.png | Bin 0 -> 2757 bytes static/img/edit.svg | 1 + static/img/eye_closed.svg | 1 + static/img/eye_open.svg | 1 + static/img/gray-logo.svg | 13 + static/img/header-mobile.png | Bin 0 -> 67551 bytes static/img/header.png | Bin 0 -> 188555 bytes static/img/language-switcher.svg | 10 + static/img/logo.svg | 11 + static/img/pattern.svg | 1 + static/img/placeholder_icon.svg | 3 + static/img/plus.svg | 1 + static/img/plus_bold.svg | 1 + static/img/register_success.svg | 4 + static/img/search-bold.svg | 1 + static/img/search.svg | 1 + static/img/slack.svg | 13 + static/img/success.svg | 3 + static/img/table-empty.svg | 11 + static/img/telegram.svg | 3 + static/img/token_api.png | Bin 0 -> 42831 bytes static/img/undraw_docusaurus_mountain.svg | 171 +++++++ static/img/undraw_docusaurus_react.svg | 170 +++++++ static/img/undraw_docusaurus_tree.svg | 40 ++ static/img/warning.svg | 1 + 91 files changed, 3929 insertions(+), 64 deletions(-) create mode 100644 src/components/ApiTokenNavbarItem/__tests__/ApiTokenNavbarItem.test.tsx create mode 100644 src/components/ApiTokenNavbarItem/api_token_switcher.module.scss create mode 100644 src/components/ApiTokenNavbarItem/index.tsx create mode 100644 src/components/CustomRadioButton/__tests__/CustomRadioButton.test.tsx create mode 100644 src/components/CustomRadioButton/custom_radio_button.scss create mode 100644 src/components/CustomRadioButton/index.tsx create mode 100644 src/components/CustomSelectDropdown/__tests__/CustomSelectDropdown.test.tsx create mode 100644 src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/__tests__/AccountDropdown.test.tsx create mode 100644 src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/account_dropdown.module.scss create mode 100644 src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/index.tsx create mode 100644 src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/index.tsx create mode 100644 src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/selected_account.module.scss create mode 100644 src/components/CustomSelectDropdown/custom_select_dropdown.module.scss create mode 100644 src/components/CustomSelectDropdown/custom_select_item.module.scss create mode 100644 src/components/CustomSelectDropdown/index.tsx create mode 100644 src/components/CustomSelectDropdown/token-dropdown/SelectedToken/index.tsx create mode 100644 src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/__tests__/TokenDropdown.test.tsx create mode 100644 src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/index.tsx create mode 100644 src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/token_dropdown.module.scss create mode 100644 src/features/Home/Carousel/Carousel.module.scss create mode 100644 src/features/Home/Carousel/Carousel.tsx create mode 100644 src/features/Home/Carousel/NextButton/NextButton.module.scss create mode 100644 src/features/Home/Carousel/NextButton/index.tsx create mode 100644 src/features/Home/Carousel/PrevButton/PrevButton.module.scss create mode 100644 src/features/Home/Carousel/PrevButton/index.tsx create mode 100644 src/features/Home/Carousel/SlideContent/SlideContent.module.scss create mode 100644 src/features/Home/Carousel/SlideContent/SlideContent.tsx create mode 100644 src/features/Home/Carousel/__tests__/Carousel.test.tsx create mode 100644 src/features/Home/Carousel/swiper-custom.scss create mode 100644 src/features/dashboard/components/app-form/__tests__/app-form.test.tsx create mode 100644 src/features/dashboard/components/app-form/app-form.module.scss create mode 100644 src/features/dashboard/components/app-form/app-form.tsx create mode 100644 src/features/dashboard/components/app-form/index.ts create mode 100644 src/features/dashboard/components/dialogs/update-app-dialog/__tests__/update-app-dialog.test.tsx create mode 100644 src/features/dashboard/components/dialogs/update-app-dialog/index.ts create mode 100644 src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.module.scss create mode 100644 src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.tsx create mode 100644 src/features/dashboard/components/no-apps/__tests__/no-apps.test.tsx create mode 100644 src/features/dashboard/components/no-apps/index.ts create mode 100644 src/features/dashboard/components/no-apps/no-apps.module.scss create mode 100644 src/features/dashboard/components/no-apps/no-apps.tsx create mode 100644 src/features/dashboard/hooks/useRegisterApp/__tests__/useRegisterApp.test.tsx create mode 100644 src/features/dashboard/hooks/useRegisterApp/index.tsx create mode 100644 src/features/dashboard/hooks/useUpdateApp/__tests__/useUpdateApp.test.tsx create mode 100644 src/features/dashboard/hooks/useUpdateApp/index.tsx create mode 100644 src/features/dashboard/manage-tokens/__tests__/index.test.tsx create mode 100644 src/features/dashboard/manage-tokens/index.tsx create mode 100644 src/features/dashboard/register-tokens/__test__/register-tokens.test.tsx create mode 100644 src/features/dashboard/register-tokens/index.tsx create mode 100644 static/img/arrow_down.svg create mode 100644 static/img/arrow_left.svg create mode 100644 static/img/arrow_right.svg create mode 100644 static/img/chevron-left.svg create mode 100644 static/img/circle_dot_caption_bold.svg create mode 100644 static/img/circle_dot_caption_fill.svg create mode 100644 static/img/close_dialog.svg create mode 100644 static/img/delete.svg create mode 100644 static/img/deriv-logo.png create mode 100644 static/img/edit.svg create mode 100644 static/img/eye_closed.svg create mode 100644 static/img/eye_open.svg create mode 100644 static/img/gray-logo.svg create mode 100644 static/img/header-mobile.png create mode 100644 static/img/header.png create mode 100644 static/img/language-switcher.svg create mode 100644 static/img/logo.svg create mode 100644 static/img/pattern.svg create mode 100644 static/img/placeholder_icon.svg create mode 100644 static/img/plus.svg create mode 100644 static/img/plus_bold.svg create mode 100644 static/img/register_success.svg create mode 100644 static/img/search-bold.svg create mode 100644 static/img/search.svg create mode 100644 static/img/slack.svg create mode 100644 static/img/success.svg create mode 100644 static/img/table-empty.svg create mode 100644 static/img/telegram.svg create mode 100644 static/img/token_api.png create mode 100644 static/img/undraw_docusaurus_mountain.svg create mode 100644 static/img/undraw_docusaurus_react.svg create mode 100644 static/img/undraw_docusaurus_tree.svg create mode 100644 static/img/warning.svg diff --git a/src/components/AccountSwitcher/__tests__/AccountSwitcher.test.tsx b/src/components/AccountSwitcher/__tests__/AccountSwitcher.test.tsx index f1e510537..34303dcb8 100644 --- a/src/components/AccountSwitcher/__tests__/AccountSwitcher.test.tsx +++ b/src/components/AccountSwitcher/__tests__/AccountSwitcher.test.tsx @@ -37,7 +37,7 @@ mockUseLogout.mockImplementation(() => { }; }); -describe.skip('HeroHeader', () => { +describe('HeroHeader', () => { beforeEach(() => { mockUseAuthContext.mockImplementation(() => { return { @@ -64,13 +64,13 @@ describe.skip('HeroHeader', () => { jest.clearAllMocks(); }); - it('Should render current account ', () => { + it.skip('Should render current account ', () => { const current_account_button = screen.getByRole('button', { name: /CR111111/i }); expect(current_account_button).toBeInTheDocument(); }); - it('Should call do logout on logout button click', async () => { + it.skip('Should call do logout on logout button click', async () => { const current_account_button = await screen.findByRole('button', { name: /CR111111/i }); await act(async () => { @@ -86,7 +86,7 @@ describe.skip('HeroHeader', () => { expect(mockLogout).toHaveBeenCalledTimes(1); }); - it('should be able to close the dropdown by clicking on the arrow', async () => { + it.skip('should be able to close the dropdown by clicking on the arrow', async () => { const current_account_button = await screen.findByRole('button', { name: /CR111111/i }); await act(async () => { @@ -102,7 +102,7 @@ describe.skip('HeroHeader', () => { expect(close_dropdown_button).not.toBeVisible(); }); - it('Should render Accounts when no account is selected', () => { + it.skip('Should render Accounts when no account is selected', () => { cleanup(); mockUseAuthContext.mockImplementation(() => { return { @@ -127,7 +127,7 @@ describe.skip('HeroHeader', () => { expect(accounts_button).toBeInTheDocument(); }); - it('Should render the dropdown menu on current account button click', async () => { + it.skip('Should render the dropdown menu on current account button click', async () => { const current_account_button = screen.getByRole('button', { name: /USD/i }); await act(async () => { @@ -139,7 +139,7 @@ describe.skip('HeroHeader', () => { expect(menu_items.length).toBe(1); }); - it('Should update current account on menu item click', async () => { + it.skip('Should update current account on menu item click', async () => { mockUseAuthContext.mockImplementation(() => { return { loginAccounts: fake_accounts, diff --git a/src/components/ApiTokenNavbarItem/__tests__/ApiTokenNavbarItem.test.tsx b/src/components/ApiTokenNavbarItem/__tests__/ApiTokenNavbarItem.test.tsx new file mode 100644 index 000000000..40e1bbbd7 --- /dev/null +++ b/src/components/ApiTokenNavbarItem/__tests__/ApiTokenNavbarItem.test.tsx @@ -0,0 +1,287 @@ +import useApiToken from '@site/src/hooks/useApiToken'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import userEvent from '@testing-library/user-event'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { render, screen } from '@site/src/test-utils'; + +import React, { act } from 'react'; +import ApiTokenNavbarItem from '..'; +import { TTokensArrayType } from '@site/src/types'; +import { TDashboardTab } from '@site/src/contexts/app-manager/app-manager.context'; + +jest.mock('@site/src/hooks/useApiToken'); +const mockUseApiToken = useApiToken as jest.MockedFunction< + () => Partial> +>; + +jest.mock('@site/src/hooks/useAuthContext'); + +const mockUseAuthContext = useAuthContext as jest.MockedFunction< + () => Partial> +>; + +jest.mock('@site/src/hooks/useAppManager'); + +const mockUseAppManager = useAppManager as jest.MockedFunction< + () => Partial> +>; + +const mockUpdateCurrentTab = jest.fn(); + +mockUseAppManager.mockImplementation(() => ({ + updateCurrentTab: mockUpdateCurrentTab, +})); + +describe('Api Token Navbar Item', () => { + it('Should NOT render anything when user is not logged in or is not authenticated', () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: false, + is_logged_in: false, + })); + + mockUseApiToken.mockImplementation(() => ({ + tokens: [], + currentToken: {}, + isLoadingTokens: true, + })); + + const renderResult = render(); + expect(renderResult.container).toBeEmptyDOMElement(); + }); + + it('Should close the token dropdown when clicking outside of it', async () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, + is_logged_in: true, + })); + + mockUseApiToken.mockImplementation(() => ({ + tokens: [ + { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + { + display_name: 'michio_app_pages', + last_used: '2022-10-04 10:33:51', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'token_2', + valid_for_ip: '', + }, + ], + currentToken: { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + isLoadingTokens: false, + })); + + render(); + + const current_account_button = screen.getByText(/first_token/i); + await act(async () => { + await userEvent.click(current_account_button); + }); + + const alternative_account = screen.getByText(/michio_app_pages/i); + expect(alternative_account).toBeVisible(); + + await act(async () => { + await userEvent.click(document.body); + }); + expect(alternative_account).not.toBeVisible(); + }); + + it('Should render current api token', async () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, + is_logged_in: true, + })); + + mockUseApiToken.mockImplementation(() => ({ + tokens: [ + { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + { + display_name: 'michio_app_pages', + last_used: '2022-10-04 10:33:51', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'token_2', + valid_for_ip: '', + }, + ], + currentToken: { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + isLoadingTokens: false, + })); + + render(); + + const currentTokenButton = screen.getByRole('button'); + + expect(currentTokenButton).toBeInTheDocument(); + + expect(currentTokenButton).toHaveTextContent('first_token'); + }); + + it('Should render please create token when current token is empty', () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, + is_logged_in: true, + })); + + mockUseApiToken.mockImplementation(() => ({ + tokens: [], + currentToken: null, + isLoadingTokens: false, + })); + + render(); + + const currentTokenButton = screen.getByRole('link', { name: /add new token/i }); + + expect(currentTokenButton).toBeInTheDocument(); + }); + + it.skip('Should update app manager page when clicking on add new token', async () => { + render(); + + const create_token = await screen.findByText(/add new token/i); + + await act(async () => { + await userEvent.click(create_token); + }); + + expect(mockUpdateCurrentTab).toHaveBeenCalledTimes(1); + expect(mockUpdateCurrentTab).toHaveBeenCalledWith(TDashboardTab.MANAGE_TOKENS); + }); + + it('Should render token in drop down', async () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, + is_logged_in: true, + })); + + const fake_tokens: TTokensArrayType = [ + { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + { + display_name: 'michio_app_pages', + last_used: '2022-10-04 10:33:51', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'token_2', + valid_for_ip: '', + }, + ]; + + mockUseApiToken.mockImplementation(() => ({ + tokens: [...fake_tokens], + currentToken: { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + isLoadingTokens: false, + })); + + render(); + + const current_account_button = screen.getByRole('button'); + await act(async () => { + await userEvent.click(current_account_button); + }); + const menu_items = screen.getAllByRole('menuitem'); + const tokens = menu_items.slice(0, 2); + + expect(menu_items.length).toBe(1); + + for (const [index, item] of tokens.entries()) { + expect(item).toHaveTextContent(`${fake_tokens[index + 1].display_name}`); + } + }); + + it('Should update current token on menu item click', async () => { + mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, + is_logged_in: true, + })); + + const fake_tokens: TTokensArrayType = [ + { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + { + display_name: 'michio_app_pages', + last_used: '2022-10-04 10:33:51', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'token_2', + valid_for_ip: '', + }, + ]; + + const mockUpdateCurrentToken = jest.fn(); + + mockUseApiToken.mockImplementation(() => ({ + tokens: fake_tokens, + currentToken: { + display_name: 'first_token', + last_used: '', + scopes: ['read', 'trade'], + token: 'token_1', + valid_for_ip: '', + }, + isLoadingTokens: false, + updateCurrentToken: mockUpdateCurrentToken, + })); + + render(); + + const currentTokenButton = screen.getByRole('button'); + await act(async () => { + await userEvent.click(currentTokenButton); + }); + + const first_menu_item = screen.getByText(/michio_app_pages/i); + + await act(async () => { + await userEvent.click(first_menu_item); + }); + + expect(mockUpdateCurrentToken).toHaveBeenCalledTimes(1); + + expect(mockUpdateCurrentToken).toHaveBeenCalledWith({ + display_name: 'michio_app_pages', + last_used: '2022-10-04 10:33:51', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'token_2', + valid_for_ip: '', + }); + }); +}); diff --git a/src/components/ApiTokenNavbarItem/api_token_switcher.module.scss b/src/components/ApiTokenNavbarItem/api_token_switcher.module.scss new file mode 100644 index 000000000..5a9615add --- /dev/null +++ b/src/components/ApiTokenNavbarItem/api_token_switcher.module.scss @@ -0,0 +1,134 @@ +@use 'src/styles/utility' as *; + +.tokenDropdownContainer { + position: relative; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + margin-right: rem(2); + + @media (max-width: 1200px) { + position: absolute; + width: 100%; + top: calc(var(--nav-height) - rem(0.1)); + left: 0; + right: 0; + height: rem(4); + border-bottom: 1px solid var(--ifm-color-emphasis-200); + background-color: var(--ifm-color-emphasis-0); + } + + .tokenContainer { + display: flex; + align-items: center; + justify-content: center; + border-top: 2px solid var(--ifm-color-emphasis-200); + .createToken { + padding: rem(1) 0; + color: var(--ifm-color-emphasis-900); + font-size: rem(1.4); + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + gap: rem(1); + font-family: var(--ibm-font-family-base); + &::before { + content: ''; + display: inline-block; + background-image: url('/img/plus_bold.svg'); + background-size: rem(1.2); + width: rem(1.2); + height: rem(1.2); + transform: rotate(0deg); + transition: transform 0.2s; + } + &:hover { + text-decoration: none; + &::before { + transform: rotate(90deg); + } + } + } + } + > .tokenContainer { + border-top: none; + } + .tokenDropdownButton { + display: flex; + cursor: pointer; + font-weight: bold; + font-size: rem(1.4); + align-items: center; + justify-content: center; + gap: rem(1); + height: var(--nav-height); + + &::after { + content: ''; + display: inline-block; + background-image: url('/img/arrow_down_bold.svg'); + background-repeat: no-repeat; + background-position: center; + background-size: rem(1.5); + width: rem(1.5); + height: rem(1.5); + transform: rotate(0deg); + transition: transform 0.2s ease-in-out; + } + &.active::after { + transform: rotate(-180deg); + } + &.oneToken::after { + display: none; + } + @media (max-width: 1200px) { + margin: 0 auto; + } + @media (min-width: 1201px) { + span { + max-width: rem(15); + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + } + } + .tokenDropdownWrapper { + position: absolute; + background-color: var(--ifm-color-emphasis-0); + width: rem(27); + right: 0; + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.05), 0px 16px 20px rgba(0, 0, 0, 0.05); + top: var(--nav-height); + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + > .tokenContainer .createToken { + font-weight: normal; + &::before { + background-image: url('/img/plus.svg'); + } + } + .tokenDropdown { + padding: rem(0.8); + display: flex; + flex-direction: column; + gap: rem(0.8); + overflow-y: scroll; + max-height: rem(40); + } + @media (min-width: 768px) and (max-width: 1200px) { + position: fixed; + width: 100%; + top: calc(var(--nav-height) + rem(7)); + left: 0; + right: 0; + } + @media (max-width: 768px) { + position: fixed; + width: 100%; + top: calc(var(--nav-height) + rem(3.8)); + } + } +} diff --git a/src/components/ApiTokenNavbarItem/index.tsx b/src/components/ApiTokenNavbarItem/index.tsx new file mode 100644 index 000000000..3f8e10a15 --- /dev/null +++ b/src/components/ApiTokenNavbarItem/index.tsx @@ -0,0 +1,90 @@ +import React, { useState, useRef } from 'react'; +import Link from '@docusaurus/Link'; +import useApiToken from '@site/src/hooks/useApiToken'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import TokenDropdown from '../CustomSelectDropdown/token-dropdown/TokenDropdown'; +import useOnClickOutside from '@site/src/hooks/useOnClickOutside'; +import useAppManager from '@site/src/hooks/useAppManager'; +import styles from './api_token_switcher.module.scss'; +import RenderOfficialContents from '../RenderOfficialContents'; +import { TDashboardTab } from '@site/src/contexts/app-manager/app-manager.context'; +import Translate from '@docusaurus/Translate'; + +const ApiTokenNavbarItem = () => { + const { is_logged_in, is_authorized } = useAuthContext(); + const { tokens, currentToken, isLoadingTokens } = useApiToken(); + const [is_toggle_dropdown, setToggleDropdown] = useState(false); + const { updateCurrentTab, currentTab, is_dashboard } = useAppManager(); + const toggle_dropdown = is_toggle_dropdown ? styles.active : ''; + const has_one_token = + tokens.length <= 1 && is_dashboard && currentTab === TDashboardTab.MANAGE_TOKENS + ? styles.oneToken + : ''; + + const dropdownRef = useRef(null); + + useOnClickOutside(dropdownRef, () => setToggleDropdown(false)); + + if (!is_logged_in || !is_authorized || isLoadingTokens) { + return null; + } + + const CreateToken = () => { + const is_not_on_manage_tab = is_dashboard && !(currentTab === TDashboardTab.REGISTER_TOKENS); + return ( + + {(is_not_on_manage_tab || !is_dashboard) && ( +
+ updateCurrentTab(TDashboardTab.REGISTER_TOKENS)} + className={styles.createToken} + to='/dashboard' + > + Add new token + +
+ )} +
+ ); + }; + + return ( +
+ {currentToken ? ( + + ) : ( + + + + )} + + {is_toggle_dropdown && ( +
{ + setToggleDropdown((prev) => !prev); + }} + > + {tokens.length > 1 && ( +
+ +
+ )} + + + +
+ )} +
+ ); +}; + +export default ApiTokenNavbarItem; diff --git a/src/components/CustomCheckbox/__tests__/CustomCheckbox.test.tsx b/src/components/CustomCheckbox/__tests__/CustomCheckbox.test.tsx index b7cf96d76..752ec177c 100644 --- a/src/components/CustomCheckbox/__tests__/CustomCheckbox.test.tsx +++ b/src/components/CustomCheckbox/__tests__/CustomCheckbox.test.tsx @@ -5,7 +5,7 @@ import userEvent from '@testing-library/user-event'; const registerMock = jest.fn(); -describe('CustomCheckbox', () => { +describe.skip('CustomCheckbox', () => { beforeEach(() => { render( diff --git a/src/components/CustomRadioButton/__tests__/CustomRadioButton.test.tsx b/src/components/CustomRadioButton/__tests__/CustomRadioButton.test.tsx new file mode 100644 index 000000000..60dc49630 --- /dev/null +++ b/src/components/CustomRadioButton/__tests__/CustomRadioButton.test.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { cleanup, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import CustomRadioButton from '..'; + +const onChange = jest.fn(); + +describe('CustomRadioButton', () => { + const renderRadioButton = ({ checked }) => { + render( + + + , + ); + }; + + afterEach(() => { + cleanup(); + }); + + it('should render the radio button', () => { + renderRadioButton({ checked: true }); + const label = screen.getByText('this is a test label'); + expect(label).toBeInTheDocument(); + }); + + it('should render the radio button with checked icon', () => { + renderRadioButton({ checked: true }); + const imgElement = screen.getByRole('img'); + expect(imgElement).toBeInTheDocument(); + expect(imgElement).toHaveAttribute('src', '/img/circle_dot_caption_fill.svg'); + }); + + it('should render the radio button with unchecked icon', () => { + renderRadioButton({ checked: false }); + const imgElement = screen.getByRole('img'); + expect(imgElement).toBeInTheDocument(); + expect(imgElement).toHaveAttribute('src', '/img/circle_dot_caption_bold.svg'); + }); + + it('should fire the onChange event when clicking the button', async () => { + renderRadioButton({ checked: false }); + const radio_button = screen.getByRole('radio', { + name: 'this is a test label', + }); + await userEvent.click(radio_button); + expect(onChange).toBeCalled(); + }); +}); diff --git a/src/components/CustomRadioButton/custom_radio_button.scss b/src/components/CustomRadioButton/custom_radio_button.scss new file mode 100644 index 000000000..74a92a25d --- /dev/null +++ b/src/components/CustomRadioButton/custom_radio_button.scss @@ -0,0 +1,30 @@ +.custom_radio { + position: relative; + + input { + opacity: 0; + position: absolute; + top: 8px; + } + + label { + display: flex; + align-items: baseline; + cursor: pointer; + } + + &__icon { + position: relative; + margin-inline-end: 8px; + top: 6px; + + img { + width: 24px; + height: 24px; + + @media (max-width: 767px) { + width: 48px; + } + } + } +} diff --git a/src/components/CustomRadioButton/index.tsx b/src/components/CustomRadioButton/index.tsx new file mode 100644 index 000000000..ee2aa7d9a --- /dev/null +++ b/src/components/CustomRadioButton/index.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import './custom_radio_button.scss'; + +type CustomRadioButtonProps = { + id: string; + name: string; + value: string; + checked: boolean; + onChange: () => void; +}; + +const CustomRadioButton: React.FC = ({ + id, + name, + value, + checked, + onChange, + children, + ...rest +}) => { + return ( +
+ + +
+ ); +}; + +export default CustomRadioButton; diff --git a/src/components/CustomSelectDropdown/__tests__/CustomSelectDropdown.test.tsx b/src/components/CustomSelectDropdown/__tests__/CustomSelectDropdown.test.tsx new file mode 100644 index 000000000..4145161a8 --- /dev/null +++ b/src/components/CustomSelectDropdown/__tests__/CustomSelectDropdown.test.tsx @@ -0,0 +1,112 @@ +import React, { act } from 'react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import CustomSelectDropdown from '..'; +import AccountDropdown from '../account-dropdown/AccountDropdown'; +import AuthProvider from '@site/src/contexts/auth/auth.provider'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import { IUserLoginAccount } from '@site/src/contexts/auth/auth.context'; + +const registerMock = jest.fn(); + +const fake_accounts: IUserLoginAccount[] = [ + { + currency: 'USD', + name: 'CR111111', + token: 'first_token', + }, + { + currency: 'ETH', + name: 'CR2222222', + token: 'second_token', + }, +]; + +jest.mock('@site/src/hooks/useAuthContext'); + +const mockUseAuthContext = useAuthContext as jest.MockedFunction< + () => Partial> +>; + +const mockUpdateCurrentLoginAccount = jest.fn(); + +mockUseAuthContext.mockImplementation(() => ({ + updateCurrentLoginAccount: mockUpdateCurrentLoginAccount, + loginAccounts: fake_accounts, + currentLoginAccount: { + currency: 'USD', + name: 'CR111111', + token: 'first_token', + }, +})); + +describe('CustomSelectDropdown', () => { + it('should be able to render the component', () => { + render( + +
Selected item element
+
Dropdown element
+
, + ); + + const custom_dropdown = screen.getByTestId('dt_custom_dropdown_test'); + expect(custom_dropdown).toBeInTheDocument(); + }); + + it('should be able to render the component with an error message', () => { + render( + +
Selected item element
+
Dropdown element
+
Error message
+
, + ); + + const error_message = screen.getByText('Error message'); + expect(error_message).toBeVisible(); + }); + + it('should be able to show the dropdown when using hotkeys', async () => { + render( + +
Selected item element
+
Dropdown element
+
, + ); + + await act(async () => { + await userEvent.keyboard('{Tab}{ArrowDown}'); + }); + + const dropdown_list = screen.getByTestId('dt_custom_dropdown_test'); + expect(dropdown_list.classList.contains('active')).toBe(true); + }); + + it('Opens the dropdown and selects a value', async () => { + render( + + +
Selected item element
+ +
+
, + ); + await act(async () => { + await userEvent.keyboard('{Tab}{ArrowDown}'); + }); + + const dropdown_list = screen.getByTestId('dt_custom_dropdown_test'); + expect(dropdown_list.classList.contains('active')).toBe(true); + + await act(async () => { + await userEvent.keyboard('{Tab}{Enter}'); + }); + + expect(mockUpdateCurrentLoginAccount).toBeCalledTimes(1); + expect(mockUpdateCurrentLoginAccount).toHaveBeenCalledWith({ + currency: 'ETH', + name: 'CR2222222', + token: 'second_token', + }); + }); +}); diff --git a/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/__tests__/AccountDropdown.test.tsx b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/__tests__/AccountDropdown.test.tsx new file mode 100644 index 000000000..1d88c4c57 --- /dev/null +++ b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/__tests__/AccountDropdown.test.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import AccountDropdown from '..'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import userEvent from '@testing-library/user-event'; +import AuthProvider from '@site/src/contexts/auth/auth.provider'; +import { render } from '@testing-library/react'; +import { IUserLoginAccount } from '@site/src/contexts/auth/auth.context'; + +jest.mock('@site/src/hooks/useAuthContext'); + +const fake_accounts: IUserLoginAccount[] = [ + { + currency: 'USD', + name: 'CR111111', + token: 'first_token', + }, + { + currency: 'ETH', + name: 'CR2222222', + token: 'second_token', + }, +]; + +const mockUseAuthContext = useAuthContext as jest.MockedFunction< + () => Partial> +>; + +const mockUpdateCurrentLoginAccount = jest.fn(); + +mockUseAuthContext.mockImplementation(() => ({ + updateCurrentLoginAccount: mockUpdateCurrentLoginAccount, + loginAccounts: fake_accounts, + currentLoginAccount: { + currency: 'USD', + name: 'CR111111', + token: 'first_token', + }, +})); + +describe('AccountDropdown', () => { + it('should be able to select an account when pressing Enter', async () => { + render( + + + , + ); + await userEvent.keyboard('{Tab}{Enter}'); + + expect(mockUpdateCurrentLoginAccount).toBeCalledTimes(1); + expect(mockUpdateCurrentLoginAccount).toHaveBeenCalledWith({ + currency: 'ETH', + name: 'CR2222222', + token: 'second_token', + }); + }); +}); diff --git a/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/account_dropdown.module.scss b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/account_dropdown.module.scss new file mode 100644 index 000000000..f7e514eb3 --- /dev/null +++ b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/account_dropdown.module.scss @@ -0,0 +1 @@ +@use '../../custom_select_item.module.scss'; diff --git a/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/index.tsx b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/index.tsx new file mode 100644 index 000000000..c36792bc9 --- /dev/null +++ b/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown/index.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import useAccountSelector from '@site/src/hooks/useAccountSelector'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import CurrencyIcon from '@site/src/components/CurrencyIcon'; +import { getCurrencyObject, isNotDemoCurrency } from '@site/src/utils'; +import styles from './account_dropdown.module.scss'; + +const AccountDropdown = () => { + const { onSelectAccount } = useAccountSelector(); + const { loginAccounts, currentLoginAccount } = useAuthContext(); + + const isNotCurrentAccount = (account_name: string) => { + return account_name !== currentLoginAccount?.name; + }; + + return ( + + {loginAccounts.map((accountItem) => ( + + {isNotCurrentAccount(accountItem.name) && ( +
onSelectAccount(accountItem.name)} + onKeyDown={(e) => e.key === 'Enter' && onSelectAccount(accountItem.name)} + > + +
+
{accountItem.name}
+
+
+ )} +
+ ))} +
+ ); +}; + +export default AccountDropdown; diff --git a/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/index.tsx b/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/index.tsx new file mode 100644 index 000000000..b1052b340 --- /dev/null +++ b/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import CurrencyIcon from '@site/src/components/CurrencyIcon'; +import { isNotDemoCurrency, getCurrencyObject } from '@site/src/utils'; +import styles from './selected_account.module.scss'; + +const SelectedAccount = () => { + const { currentLoginAccount } = useAuthContext(); + return ( +
+ +
+ + {getCurrencyObject(isNotDemoCurrency(currentLoginAccount)).name} + + {currentLoginAccount?.name} +
+
+ ); +}; + +export default SelectedAccount; diff --git a/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/selected_account.module.scss b/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/selected_account.module.scss new file mode 100644 index 000000000..2ea15913f --- /dev/null +++ b/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount/selected_account.module.scss @@ -0,0 +1,26 @@ +@use 'src/styles/utility' as *; + +.selectedAccount { + display: flex; + height: 100%; + align-items: center; + .accountInfoContainer { + display: flex; + flex-direction: column; + margin-left: rem(1); + .accountType { + font-size: rem(1.6); + } + .accountId { + font-size: rem(1.2); + color: var(--ifm-color-emphasis-700); + } + } + div { + line-height: initial; + } + img { + width: rem(2.4); + height: rem(2.4); + } +} diff --git a/src/components/CustomSelectDropdown/custom_select_dropdown.module.scss b/src/components/CustomSelectDropdown/custom_select_dropdown.module.scss new file mode 100644 index 000000000..15b4d0d7a --- /dev/null +++ b/src/components/CustomSelectDropdown/custom_select_dropdown.module.scss @@ -0,0 +1,93 @@ +@use 'src/styles/utility' as *; + +.customSelectField { + position: relative; + .dropdownWrapper { + .dropdown { + position: absolute; + max-height: 200px; + overflow-y: auto; + top: 40px; + left: 0; + gap: rem(1); + width: 100%; + z-index: 10; + padding: rem(1); + background-color: var(--ifm-color-emphasis-0); + box-shadow: 0 rem(1) rem(1.5) rem(0.1) rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 rem(1) rem(1.5) rem(0.1) rgba(0, 0, 0, 0.15); + -webkit-box-shadow: 0 rem(1) rem(1.5) rem(0.1) rgba(0, 0, 0, 0.15); + } + } + .selectWrapper { + position: relative; + margin: rem(1) 0; + width: 100%; + height: rem(4); + line-height: 36px; + border-radius: rem(1.6); + font-size: rem(1.6); + padding: 0 rem(3) 0 rem(1); + color: var(--ifm-color-emphasis-1000); + border: 1px solid var(--colors-greyLight400); + + &.error { + border: 1px solid var(--colors-coral500); + } + &:hover { + border-color: var(--ifm-color-emphasis-500); + } + &:focus { + outline: solid 1px var(--colors-blue500); + border-radius: rem(1.6); + .selectLabel { + color: var(--colors-blue500) !important; + } + } + &:after { + content: ''; + position: absolute; + display: inline-block; + top: 0; + right: 0; + bottom: 0; + width: 40px; + background-position: center; + background-repeat: no-repeat; + background-image: url(/static/img/arrow_down.svg); + border-radius: rem(1.6); + pointer-events: none; + transform: rotate(0deg); + transition: transform 0.2s; + } + &.active { + &:after { + transform: rotate(180deg); + } + .dropdownWrapper { + display: inline-block; + } + } + &.inactive .dropdownWrapper { + display: none; + } + .selectLabel { + color: var(--colors-greyLight600); + width: 100%; + height: 100%; + display: inline-block; + &.active { + color: var(--ifm-color-emphasis-1000); + position: absolute; + font-size: rem(1.2); + background-color: var(--ifm-color-emphasis-0); + bottom: rem(3.7); + left: rem(1); + padding: 0 rem(0.4); + line-height: rem(1); + height: auto; + width: auto; + } + } + } +} diff --git a/src/components/CustomSelectDropdown/custom_select_item.module.scss b/src/components/CustomSelectDropdown/custom_select_item.module.scss new file mode 100644 index 000000000..f3cfbcd98 --- /dev/null +++ b/src/components/CustomSelectDropdown/custom_select_item.module.scss @@ -0,0 +1,31 @@ +@use 'src/styles/utility' as *; + +.customSelectItem { + display: flex; + width: 100%; + align-items: center; + font-size: rem(1.4); + transition: background-color 0.2s; + border-radius: 3px; + padding: rem(1); + height: rem(5.2); + line-height: rem(2); + + &:hover { + cursor: pointer; + background-color: var(--ifm-color-emphasis-100); + } + img { + width: rem(3.2); + height: rem(3.2); + } + .accountInfoContainer { + display: flex; + flex-direction: column; + margin-left: rem(1); + line-height: rem(2); + .accountType { + font-size: rem(1.6); + } + } +} diff --git a/src/components/CustomSelectDropdown/index.tsx b/src/components/CustomSelectDropdown/index.tsx new file mode 100644 index 000000000..6a29861fa --- /dev/null +++ b/src/components/CustomSelectDropdown/index.tsx @@ -0,0 +1,56 @@ +import React, { useState, useRef, ReactElement } from 'react'; +import useOnClickOutside from '@site/src/hooks/useOnClickOutside'; +import { UseFormRegisterReturn } from 'react-hook-form'; +import styles from './custom_select_dropdown.module.scss'; + +type TCustomSelectDropdown = { + children: ReactElement[]; + label: string; + value: string; + register: UseFormRegisterReturn; + is_error?: boolean; +}; + +const CustomSelectDropdown = ({ + children, + label, + register, + value, + is_error = false, +}: TCustomSelectDropdown) => { + const [is_toggle_dropdown, setToggleDropdown] = useState(false); + const toggle_dropdown = is_toggle_dropdown ? styles.active : styles.inactive; + + const SelectInput = () => children[0]; + const SelectDropdown = () => children[1]; + const ErrorMessage = () => children[2]; + + const dropdownRef = useRef(null); + + useOnClickOutside(dropdownRef, () => setToggleDropdown(false)); + + return ( +
+
setToggleDropdown((prev) => !prev)} + onKeyDown={(e) => e.key === 'ArrowDown' && setToggleDropdown((prev) => !prev)} + className={`${styles.selectWrapper} ${toggle_dropdown} ${is_error ? styles.error : ''}`} + data-testid={`dt_custom_dropdown_${value}`} + > + + + +
+
setToggleDropdown((prev) => !prev)}> + +
+
+
+ {is_error && } +
+ ); +}; + +export default CustomSelectDropdown; diff --git a/src/components/CustomSelectDropdown/token-dropdown/SelectedToken/index.tsx b/src/components/CustomSelectDropdown/token-dropdown/SelectedToken/index.tsx new file mode 100644 index 000000000..6c7c1e19d --- /dev/null +++ b/src/components/CustomSelectDropdown/token-dropdown/SelectedToken/index.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import useApiToken from '@site/src/hooks/useApiToken'; + +const SelectedToken = () => { + const { currentToken } = useApiToken(); + + return ( + + {currentToken?.scopes?.includes('admin') && } + + ); +}; + +export default SelectedToken; diff --git a/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/__tests__/TokenDropdown.test.tsx b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/__tests__/TokenDropdown.test.tsx new file mode 100644 index 000000000..a60a38843 --- /dev/null +++ b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/__tests__/TokenDropdown.test.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import userEvent from '@testing-library/user-event'; +import AccountDropdown from '..'; +import ApiTokenProvider from '@site/src/contexts/api-token/api-token.provider'; +import useApiToken from '@site/src/hooks/useApiToken'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import { render } from '@testing-library/react'; + +jest.mock('@site/src/hooks/useAuthContext'); + +const mockUseAuthContext = useAuthContext as jest.MockedFunction< + () => Partial> +>; + +mockUseAuthContext.mockImplementation(() => ({ + is_authorized: true, +})); + +jest.mock('@site/src/hooks/useApiToken'); + +const mockUseApiToken = useApiToken as jest.MockedFunction< + () => Partial> +>; + +const mockUpdateCurrentToken = jest.fn(); + +mockUseApiToken.mockImplementation(() => ({ + currentToken: { + display_name: 'test_token1', + token: 'tokenvalue1', + scopes: ['admin', 'read'], + }, + tokens: [ + { + display_name: 'test_token1', + token: 'tokenvalue1', + scopes: ['admin', 'read'], + }, + { + display_name: 'test_token2', + token: 'tokenvalue2', + scopes: ['admin', 'read', 'trade'], + }, + ], + updateCurrentToken: mockUpdateCurrentToken, +})); + +describe('AccountDropdown', () => { + it('should be able to select an account when pressing Enter', async () => { + render( + + + , + ); + await userEvent.keyboard('{Tab}{Enter}'); + + expect(mockUpdateCurrentToken).toBeCalledTimes(1); + expect(mockUpdateCurrentToken).toHaveBeenCalledWith({ + display_name: 'test_token2', + token: 'tokenvalue2', + scopes: ['admin', 'read', 'trade'], + }); + }); +}); diff --git a/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/index.tsx b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/index.tsx new file mode 100644 index 000000000..34d33d941 --- /dev/null +++ b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/index.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import useApiToken from '@site/src/hooks/useApiToken'; +import useTokenSelector from '@site/src/hooks/useTokenSelector'; +import { TTokenType } from '@site/src/types'; +import styles from './token_dropdown.module.scss'; + +const TokenDropdown = ({ admin_only = false }: { admin_only?: boolean }) => { + const { currentToken, tokens } = useApiToken(); + const { onSelectToken } = useTokenSelector(); + + const isAdmin = (token_item: TTokenType) => token_item?.scopes.includes('admin'); + + const isNotCurrentToken = (token_item: TTokenType) => { + const is_not_admin_token = token_item?.token !== currentToken?.token; + return is_not_admin_token; + }; + + const adminOrAllTokens = (token_item: TTokenType) => + admin_only + ? isNotCurrentToken(token_item) && isAdmin(token_item) + : isNotCurrentToken(token_item); + + const AdminTokens = ({ item }: { item: TTokenType }) => { + return ( + + {adminOrAllTokens(item) && ( +
onSelectToken(item)} + onKeyDown={(e) => e.key === 'Enter' && onSelectToken(item)} + > + {item.display_name} +
+ )} +
+ ); + }; + + return ( + + {tokens.map((item: TTokenType) => ( + + ))} + + ); +}; + +export default TokenDropdown; diff --git a/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/token_dropdown.module.scss b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/token_dropdown.module.scss new file mode 100644 index 000000000..f7e514eb3 --- /dev/null +++ b/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown/token_dropdown.module.scss @@ -0,0 +1 @@ +@use '../../custom_select_item.module.scss'; diff --git a/src/components/UserNavbarItem/__tests__/item.desktop.test.tsx b/src/components/UserNavbarItem/__tests__/item.desktop.test.tsx index 10dd5b275..2f6e4aecf 100644 --- a/src/components/UserNavbarItem/__tests__/item.desktop.test.tsx +++ b/src/components/UserNavbarItem/__tests__/item.desktop.test.tsx @@ -12,7 +12,7 @@ mockUseAuthContext.mockImplementation(() => ({ is_logged_in: true, })); -describe('User Navbar Desktop Item', () => { +describe.skip('User Navbar Desktop Item', () => { describe('Given user is logged out', () => { beforeEach(() => { render(); @@ -41,6 +41,60 @@ describe('User Navbar Desktop Item', () => { }); }); + describe('Search popup', () => { + beforeEach(() => { + render( + + + + , + ); + }); + + afterEach(() => { + cleanup(); + }); + + it('should be able to open search on hotkey command', async () => { + await act(async () => { + await userEvent.keyboard('{Meta>}[KeyK]{/Meta}'); + }); + + const navigation = screen.getByRole('navigation'); + expect(navigation.classList.contains('search-open')); + }); + + it('should be able to close search on same hotkey command', async () => { + await act(async () => { + await userEvent.keyboard('{Meta>}[KeyK]{/Meta}'); + }); + + const navigation = screen.getByRole('navigation'); + expect(navigation.classList.contains('search-open')); + + await act(async () => { + await userEvent.keyboard('{Meta>}[KeyK]{/Meta}'); + }); + + expect(navigation.classList.contains('search-closed')); + }); + + it('should be able to close search when pressing the Escape button', async () => { + await act(async () => { + await userEvent.keyboard('{Meta>}[KeyK]{/Meta}'); + }); + + const navigation = screen.getByRole('navigation'); + expect(navigation.classList.contains('search-open')); + + await act(async () => { + await userEvent.keyboard('{Escape}'); + }); + + expect(navigation.classList.contains('search-closed')); + }); + }); + describe('Bottom Actions Button', () => { const initialProps = { is_logged_in: true, diff --git a/src/features/Apiexplorer/SubscribeRenderer/__tests__/SubscribeRenderer.test.tsx b/src/features/Apiexplorer/SubscribeRenderer/__tests__/SubscribeRenderer.test.tsx index a715bd1fb..46c991c23 100644 --- a/src/features/Apiexplorer/SubscribeRenderer/__tests__/SubscribeRenderer.test.tsx +++ b/src/features/Apiexplorer/SubscribeRenderer/__tests__/SubscribeRenderer.test.tsx @@ -178,7 +178,7 @@ describe('SubscribeRenderer', () => { expect(mockUnsubscribe).toHaveBeenCalledTimes(1); }); - it('should call unsubscribe when pressing the clear button', async () => { + it.skip('should call unsubscribe when pressing the clear button', async () => { cleanup(); jest.clearAllMocks(); @@ -211,9 +211,8 @@ describe('SubscribeRenderer', () => { await act(async () => { await userEvent.click(button); }); - expect(mockUnsubscribe.call.length).toBe(1); + expect(mockUnsubscribe).toBeCalledTimes(1); }); - it('should call unsubscribe when unmounting the component', async () => { const { unmount } = render(); unmount(); diff --git a/src/features/Home/Carousel/Carousel.module.scss b/src/features/Home/Carousel/Carousel.module.scss new file mode 100644 index 000000000..a91c31e5e --- /dev/null +++ b/src/features/Home/Carousel/Carousel.module.scss @@ -0,0 +1,17 @@ +@use 'src/styles/utility' as *; + +.carouselComponent { + .carouselHeading { + margin-bottom: rem(6); + padding: 0 rem(2.5); + } + + .carouselContainer { + display: flex; + flex-direction: row; + width: fit-content; + margin: 0 auto; + align-items: center; + overflow: visible; + } +} diff --git a/src/features/Home/Carousel/Carousel.tsx b/src/features/Home/Carousel/Carousel.tsx new file mode 100644 index 000000000..355ac8bde --- /dev/null +++ b/src/features/Home/Carousel/Carousel.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { Text } from '@deriv/ui'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import { SlideContent } from './SlideContent/SlideContent'; +import NextButton from './NextButton'; +import PrevButton from './PrevButton'; +import styles from './Carousel.module.scss'; +import './swiper-custom.scss'; +import Translate from '@docusaurus/Translate'; + +export const Carousel = () => { + return ( +
+
+ + See what our clients say + +
+
+ + +
+ + + + + + + + + +
+ +
+
+
+ ); +}; diff --git a/src/features/Home/Carousel/NextButton/NextButton.module.scss b/src/features/Home/Carousel/NextButton/NextButton.module.scss new file mode 100644 index 000000000..0207bf13b --- /dev/null +++ b/src/features/Home/Carousel/NextButton/NextButton.module.scss @@ -0,0 +1,16 @@ +@use 'src/styles/utility' as *; + +.next { + width: rem(2); + height: rem(2); + cursor: pointer; + position: absolute; + top: 50%; + transform: translateY(-50%); + z-index: 2; + background: url(/img/arrow_right.svg) no-repeat; + background-size: rem(2); + background-position: center; + overflow: auto; + right: 0; +} diff --git a/src/features/Home/Carousel/NextButton/index.tsx b/src/features/Home/Carousel/NextButton/index.tsx new file mode 100644 index 000000000..ef1d675c1 --- /dev/null +++ b/src/features/Home/Carousel/NextButton/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { useSwiper } from 'swiper/react'; +import styles from './NextButton.module.scss'; + +const NextButton = () => { + const swiper = useSwiper(); + return ( +
swiper.slideNext()} + data-testid='carousel-arrow-next' + /> + ); +}; + +export default NextButton; diff --git a/src/features/Home/Carousel/PrevButton/PrevButton.module.scss b/src/features/Home/Carousel/PrevButton/PrevButton.module.scss new file mode 100644 index 000000000..3277b94a4 --- /dev/null +++ b/src/features/Home/Carousel/PrevButton/PrevButton.module.scss @@ -0,0 +1,15 @@ +@use 'src/styles/utility' as *; + +.prev { + width: rem(2); + height: rem(2); + cursor: pointer; + position: absolute; + top: 50%; + transform: translateY(-50%); + z-index: 2; + background: url(/img/arrow_left.svg) no-repeat; + background-size: rem(2); + background-position: center; + left: 0; +} diff --git a/src/features/Home/Carousel/PrevButton/index.tsx b/src/features/Home/Carousel/PrevButton/index.tsx new file mode 100644 index 000000000..13f1676af --- /dev/null +++ b/src/features/Home/Carousel/PrevButton/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { useSwiper } from 'swiper/react'; +import styles from './PrevButton.module.scss'; + +const PrevButton = () => { + const swiper = useSwiper(); + return ( +
swiper.slidePrev()} + data-testid='carousel-arrow-prev' + /> + ); +}; + +export default PrevButton; diff --git a/src/features/Home/Carousel/SlideContent/SlideContent.module.scss b/src/features/Home/Carousel/SlideContent/SlideContent.module.scss new file mode 100644 index 000000000..e83ce0d18 --- /dev/null +++ b/src/features/Home/Carousel/SlideContent/SlideContent.module.scss @@ -0,0 +1,18 @@ +@use 'src/styles/utility' as *; +.sliderContent { + text-align: left; + border-left: none; + + &:after { + box-sizing: border-box; + content: '\201c'; + position: absolute; + font-size: rem(17); + font-weight: 700; + z-index: -1; + left: 0; + top: rem(-8); + color: var(--colors-blue100); + opacity: 56%; + } +} diff --git a/src/features/Home/Carousel/SlideContent/SlideContent.tsx b/src/features/Home/Carousel/SlideContent/SlideContent.tsx new file mode 100644 index 000000000..8d28a3934 --- /dev/null +++ b/src/features/Home/Carousel/SlideContent/SlideContent.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Text } from '@deriv/ui'; +import styles from './SlideContent.module.scss'; + +type TSlideContent = { + name: React.ReactNode; + name_info: React.ReactNode; + content: React.ReactNode; +}; + +export const SlideContent = ({ name, name_info, content }: TSlideContent) => ( + +
+ + {content} + +
+

+ + {name}, {name_info} + +

+
+); diff --git a/src/features/Home/Carousel/__tests__/Carousel.test.tsx b/src/features/Home/Carousel/__tests__/Carousel.test.tsx new file mode 100644 index 000000000..c5a7f485a --- /dev/null +++ b/src/features/Home/Carousel/__tests__/Carousel.test.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import { Carousel } from '../Carousel'; +import { cleanup, render, screen } from '@site/src/test-utils'; +import userEvent from '@testing-library/user-event'; + +const mockSlidePrev = jest.fn(); +const mockSlideNext = jest.fn(); + +jest.mock('swiper/react', () => ({ + ...jest.requireActual('swiper/react'), + useSwiper: jest.fn().mockImplementation(() => { + return { + slidePrev: mockSlidePrev, + slideNext: mockSlideNext, + }; + }), +})); + +describe('Homepage carousel', () => { + beforeEach(() => { + render(); + }); + + afterEach(() => { + cleanup(); + jest.clearAllMocks(); + }); + + it('Should render the carousel', () => { + const carousel = screen.getByTestId('carousel-component'); + expect(carousel).toBeInTheDocument(); + }); + + it('Should render the title', () => { + const title = screen.getByText(/See what our clients say/i); + expect(title).toBeInTheDocument(); + }); + + it('Should render previous arrow', () => { + const prev_arrow = screen.getByTestId('carousel-arrow-prev'); + expect(prev_arrow).toBeInTheDocument(); + }); + + it('Should render next arrow', () => { + const prev_arrow = screen.getByTestId('carousel-arrow-next'); + expect(prev_arrow).toBeInTheDocument(); + }); + + it('Should render Alessandro slide', () => { + const alessandro_slide = screen.getAllByText(/is one of the best APIs in the trading market/i); + expect(alessandro_slide[0]).toBeInTheDocument(); + }); + + it('Should render Thiago slide', () => { + const thiago_slide = screen.getAllByText(/Probably the best API for making your business/i); + expect(thiago_slide[0]).toBeInTheDocument(); + }); + + it('Should render Josh slide', () => { + const josh_slide = screen.getAllByText(/I have been using the deriv API for 13 years/i); + expect(josh_slide[0]).toBeInTheDocument(); + }); + + it('Should show author Alessandro', () => { + const alessandro = screen.getAllByText(/Alessandro, CEO | Italy/i); + expect(alessandro[0]).toBeInTheDocument(); + }); + + it('Should show author Thiago', () => { + const thiago = screen.getAllByText(/Thiago, entrepreneur | brazil/i); + expect(thiago[0]).toBeInTheDocument(); + }); + + it('Should show author Josh', () => { + const josh = screen.getAllByText(/josh, trader | australia/i); + expect(josh[0]).toBeInTheDocument(); + }); + + it('Should go to prev slide on arrow left click', async () => { + const leftArrow = screen.getByTestId('carousel-arrow-prev'); + + await userEvent.click(leftArrow); + + expect(mockSlidePrev).toHaveBeenCalledTimes(1); + }); + + it('Should go to next slide on arrow right click', async () => { + const rightArrow = screen.getByTestId('carousel-arrow-next'); + + await userEvent.click(rightArrow); + + expect(mockSlideNext).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/features/Home/Carousel/swiper-custom.scss b/src/features/Home/Carousel/swiper-custom.scss new file mode 100644 index 000000000..bf282895c --- /dev/null +++ b/src/features/Home/Carousel/swiper-custom.scss @@ -0,0 +1,19 @@ +@use 'src/styles/utility' as *; +@use 'swiper/scss'; + +.swiper { + min-width: rem(32); + max-width: rem(58.6); + text-align: center; + cursor: pointer; + .swiper-slide { + height: auto; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + span { + font-size: rem(1.4); + } + } +} diff --git a/src/features/dashboard/components/api-token-card/api-token-cards.tsx b/src/features/dashboard/components/api-token-card/api-token-cards.tsx index 8b81def7e..5b24765d8 100644 --- a/src/features/dashboard/components/api-token-card/api-token-cards.tsx +++ b/src/features/dashboard/components/api-token-card/api-token-cards.tsx @@ -5,9 +5,9 @@ import useDeviceType from '@site/src/hooks/useDeviceType'; import CustomCheckbox from '@site/src/components/CustomCheckbox'; import { Text, Heading, Modal, SectionMessage } from '@deriv-com/quill-ui'; import { StandaloneCircleExclamationRegularIcon } from '@deriv/quill-icons'; -import { TApiTokenForm, TApiTokenFormItemsNames } from '../api-token-form/api-token-form'; -import Translate, { translate } from '@docusaurus/Translate'; +import { TApiTokenForm, TApiTokenFormItemsNames } from '../api-token-form/api-token.form'; import styles from './api-token.card.module.scss'; +import Translate, { translate } from '@docusaurus/Translate'; interface IApiTokenCardProps { register: UseFormRegister; diff --git a/src/features/dashboard/components/api-token-form/__tests__/api-token.form.test.tsx b/src/features/dashboard/components/api-token-form/__tests__/api-token.form.test.tsx index 8b485792a..6b95c6906 100644 --- a/src/features/dashboard/components/api-token-form/__tests__/api-token.form.test.tsx +++ b/src/features/dashboard/components/api-token-form/__tests__/api-token.form.test.tsx @@ -57,8 +57,8 @@ const scopes = [ }, ]; -describe('Home Page', () => { - describe('General tests', () => { +describe.skip('Home Page', () => { + describe.skip('General tests', () => { beforeEach(() => { mockUseApiToken.mockImplementation(() => ({ tokens: [ @@ -90,7 +90,7 @@ describe('Home Page', () => { it('Should render first step title', () => { const firstStep = screen.getByTestId('first-step-title'); - expect(firstStep).toBeVisible(); + expect(firstStep).toHaveTextContent(/Select scopes based on the access you need./i); }); it('should show spinner when in token creation process', () => { @@ -116,6 +116,13 @@ describe('Home Page', () => { }); }); + it('Should render second step title', () => { + const secondStep = screen.getByTestId('second-step-title'); + expect(secondStep).toHaveTextContent( + /Name your token and click on Create to generate your token./i, + ); + }); + it('Should check the checkbox when clicked on api token card', async () => { const adminTokenCard = screen.getByTestId('api-token-card-admin'); const withinAdminTokenCard = within(adminTokenCard); @@ -129,7 +136,14 @@ describe('Home Page', () => { expect(adminCheckbox.checked).toBeTruthy(); }); - + + it('Should show dynamic token label', async () => { + const tokenLabel = screen.getByTestId('token-count-label'); + await waitFor(() => { + expect(tokenLabel).toBeVisible(); + }); + }); + it('Should create token on form submit', async () => { const nameInput = screen.getByRole('textbox'); @@ -157,9 +171,27 @@ describe('Home Page', () => { expect(error).toBeVisible; }); - it.skip('should hide restrictions if error is present', async () => { + it('Should update token a value on create token', async () => { + const tokenLabel = screen.getByTestId('token-count-label'); + const nameInput = screen.getByRole('textbox'); + + await act(async () => { + await userEvent.type(nameInput, 'test create token'); + }); + + const submitButton = screen.getByRole('button', { name: /Create/i }); + await act(async () => { + await userEvent.click(submitButton); + }); + + await waitFor(() => { + expect(tokenLabel).toHaveTextContent('2'); + }); + }); + + it('should hide restrictions if error is present', async () => { const nameInput = screen.getByRole('textbox'); - const restrictions = screen.getAllByRole('list'); + const restrictions = screen.getByRole('list'); expect(restrictions).toBeVisible(); await act(async () => { await userEvent.type(nameInput, 'testtoken1'); @@ -194,7 +226,7 @@ describe('Home Page', () => { expect(submitButton).toBeDisabled(); }); }); - describe('Token limit', () => { + describe.skip('Token limit', () => { const createMaxTokens = () => { const token_array = []; for (let i = 0; i < 30; i++) { @@ -210,7 +242,7 @@ describe('Home Page', () => { }; it('Should show an error when the user tries to create more than 30 tokens', async () => { - mockUseApiToken.mockImplementation(() => ({ tokens: createMaxTokens(), lastTokenDisplayName: '' })); + mockUseApiToken.mockImplementation(() => ({ tokens: createMaxTokens() })); render(); const nameInput = screen.getByRole('textbox'); diff --git a/src/features/dashboard/components/api-token-form/api-token-form.tsx b/src/features/dashboard/components/api-token-form/api-token-form.tsx index fb7740e42..ff31c5e91 100644 --- a/src/features/dashboard/components/api-token-form/api-token-form.tsx +++ b/src/features/dashboard/components/api-token-form/api-token-form.tsx @@ -2,7 +2,7 @@ import React, { HTMLAttributes, useCallback, useEffect, useState } from 'react'; import * as yup from 'yup'; import Translate, { translate } from '@docusaurus/Translate'; import { useForm } from 'react-hook-form'; -import { Text } from '@deriv-com/quill-ui'; +import { Text } from '@deriv/ui'; import { yupResolver } from '@hookform/resolvers/yup'; import { scopesObjectToArray } from '@site/src/utils'; import useCreateToken from '@site/src/features/dashboard/hooks/useCreateToken'; @@ -147,7 +147,7 @@ const ApiTokenForm = (props: HTMLAttributes) => { {isCreatingToken && }
- + Select scopes based on the access you need.
@@ -179,7 +179,7 @@ const ApiTokenForm = (props: HTMLAttributes) => { {!hiderestrictions && }
- + Copy and paste the token into the app.
diff --git a/src/features/dashboard/components/app-form/__tests__/app-form.test.tsx b/src/features/dashboard/components/app-form/__tests__/app-form.test.tsx new file mode 100644 index 000000000..550c94cc4 --- /dev/null +++ b/src/features/dashboard/components/app-form/__tests__/app-form.test.tsx @@ -0,0 +1,352 @@ +import useApiToken from '@site/src/hooks/useApiToken'; +import { render, screen, cleanup } from '@site/src/test-utils'; +import { TTokensArrayType } from '@site/src/types'; +import userEvent from '@testing-library/user-event'; +import React, { act } from 'react'; +import AppForm from '..'; +import { ApplicationObject } from '@deriv/api-types'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { app_name_error_map } from '../../app-register/types'; + +jest.mock('@site/src/hooks/useApiToken'); +jest.mock('@site/src/utils', () => ({ + ...jest.requireActual('@site/src/utils'), +})); +jest.mock('@site/src/hooks/useAppManager'); + +const mockUseApiToken = useApiToken as jest.MockedFunction< + () => Partial> +>; + +mockUseApiToken.mockImplementation(() => ({ + tokens: [], + updateCurrentToken: jest.fn(), +})); + +const mockUseAppManager = useAppManager as jest.MockedFunction< + () => Partial> +>; +mockUseAppManager.mockImplementation(() => ({ + apps: [], + getApps: jest.fn(), +})); + +describe('App Form', () => { + const mockOnSubmit = jest.fn(); + + beforeEach(() => { + render(); + }); + + afterEach(() => { + cleanup(); + jest.clearAllMocks(); + }); + + it('Should show error message for using an appname that already exists', async () => { + const fakeApps: ApplicationObject[] = [ + { + active: 1, + app_id: 12345, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'duplicate_app', + redirect_uri: 'https://example.com', + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + last_used: '', + official: 1, + }, + { + active: 1, + app_id: 12345, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'testApp', + redirect_uri: 'https://example.com', + scopes: ['read', 'trade'], + verification_uri: 'https://example.com', + last_used: '', + official: 1, + }, + ]; + const mockGetApps = jest.fn(); + + mockUseAppManager.mockImplementation(() => ({ + apps: fakeApps, + getApps: mockGetApps, + })); + + const submitButton = screen.getByText('Register Application'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.type(tokenNameInput, 'duplicate_app'); + await userEvent.click(submitButton); + await userEvent.clear(tokenNameInput); + await userEvent.type(tokenNameInput, 'duplicate_app'); + }); + + const appNameErrorText = await screen.findByText('That name is taken. Choose another.'); + + expect(appNameErrorText).toBeInTheDocument(); + }); + + it('Should show error message for having no admin token', async () => { + const fakeTokens: TTokensArrayType = [ + { + display_name: 'first', + last_used: '', + scopes: ['read', 'trade', 'admin'], + token: 'first_token', + valid_for_ip: '', + }, + { + display_name: 'second', + last_used: '', + scopes: ['read', 'trade'], + token: 'second_token', + valid_for_ip: '', + }, + ]; + + mockUseApiToken.mockImplementation(() => ({ + tokens: fakeTokens, + updateCurrentToken: jest.fn(), + })); + + const errorText = screen.getByText( + /This account doesn't have API tokens with the admin scope. Choose another account./i, + ); + + expect(errorText).toBeInTheDocument(); + }); + + it('Should show error message for empty app name', async () => { + const submitButton = screen.getByText('Register Application'); + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.clear(tokenNameInput); + await userEvent.click(submitButton); + }); + + const appNameErrorText = await screen.findByText('Enter your app name.'); + + expect(appNameErrorText).toBeInTheDocument(); + }); + + it('Should show error for long app name', async () => { + const submitButton = screen.getByText('Register Application'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + await act(async () => { + await userEvent.type( + tokenNameInput, + 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi corrupti neque ratione repudiandae in dolores reiciendis sequi', + ); + await userEvent.click(submitButton); + }); + + const appNameErrorText = await screen.findByText(app_name_error_map.error_code_2); + + expect(appNameErrorText).toBeInTheDocument(); + }); + + it('Should show error for using non alphanumeric characters except underscore or space', async () => { + const submitButton = screen.getByText('Register Application'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.type(tokenNameInput, 'invalid-token...'); + await userEvent.click(submitButton); + }); + + const appNameErrorText = await screen.findByText(app_name_error_map.error_code_1); + + expect(appNameErrorText).toBeInTheDocument(); + }); + + it('Should show error message for long app markup percentage', async () => { + const submitButton = screen.getByText('Register Application'); + + const appMarkupPercentageInput = screen.getByRole('spinbutton', { + name: 'Markup percentage (optional)', + }); + + await act(async () => { + await userEvent.type(appMarkupPercentageInput, '12.222222'); + await userEvent.click(submitButton); + }); + + const appMarkupPercentageError = await screen.findByText( + 'The name can contain up to 48 characters.', + ); + + expect(appMarkupPercentageError).toBeInTheDocument(); + }); + + it('Should show error for invalid Auth url', async () => { + const submitButton = screen.getByText('Register Application'); + + const authURLInput = screen.getByRole('textbox', { + name: 'Redirect URL (optional)', + }); + + await act(async () => { + await userEvent.type(authURLInput, 'http:invalidAUTHurl.com'); + await userEvent.click(submitButton); + }); + + const authURLInputError = await screen.queryByText( + 'Enter a valid URL. (Example: https://www.[YourDomainName].com)', + ); + + expect(authURLInputError).toBeInTheDocument(); + }); + + it('Should show error for invalid Verification url', async () => { + const submitButton = screen.getByText('Register Application'); + + const authURLInput = screen.getByRole('textbox', { + name: 'Verification URL (optional)', + }); + + await act(async () => { + await userEvent.type(authURLInput, 'http:invalidVERIurl.com'); + await userEvent.click(submitButton); + }); + + const authURLInputError = await screen.queryByText( + 'Enter a valid URL. (Example: https://www.[YourDomainName].com)', + ); + + expect(authURLInputError).toBeInTheDocument(); + }); + + it('Should show error message for wrong value', async () => { + const fakeTokens: TTokensArrayType = [ + { + display_name: 'first', + last_used: '', + scopes: ['read', 'trade'], + token: 'first_token', + valid_for_ip: '', + }, + { + display_name: 'second', + last_used: '2023-01-19 15:09:39', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'second_token', + valid_for_ip: '', + }, + { + display_name: 'third', + last_used: '', + scopes: ['read', 'trade', 'payments', 'admin'], + token: 'third_token', + valid_for_ip: '', + }, + ]; + + mockUseApiToken.mockImplementation(() => ({ + tokens: fakeTokens, + updateCurrentToken: jest.fn(), + })); + + const submitButton = screen.getByText('Register Application'); + + const appMarkupPercentageInput = screen.getByRole('spinbutton', { + name: 'Markup percentage (optional)', + }); + + await act(async () => { + await userEvent.type(appMarkupPercentageInput, '5.01'); + await userEvent.click(submitButton); + }); + + const appMarkupPercentageError = await screen.findByText( + 'Your markup value must be no more than 3.00.', + ); + + expect(appMarkupPercentageError).toBeInTheDocument(); + }); + it('Should call onSubmit on submitting the form', async () => { + const submitButton = screen.getByText('Register Application'); + + const selectTokenOption = screen.getByTestId('select-token'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + const appRedirectUrlInput = screen.getByRole('textbox', { + name: 'Redirect URL (optional)', + }); + + const appVerificationUrlInput = screen.getByRole('textbox', { + name: 'Verification URL (optional)', + }); + + await act(async () => { + await userEvent.click(selectTokenOption); + }); + + const tokenOption = screen.getByText('second'); + + await act(async () => { + await userEvent.click(tokenOption); + await userEvent.type(tokenNameInput, 'test app name'); + await userEvent.type(appRedirectUrlInput, 'https://example.com'); + await userEvent.type(appVerificationUrlInput, 'https://example.com'); + await userEvent.click(submitButton); + }); + + expect(mockOnSubmit).toHaveBeenCalledTimes(1); + }); + + it('Should display restrictions when app name is in focus', async () => { + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.type(tokenNameInput, 'Lorem ipsum dolor sit amet'); + }); + + const restrictionsList = screen.queryByRole('list'); + expect(restrictionsList).toBeInTheDocument(); + }); + + it('Should hide restrictions when error occurs', async () => { + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.type( + tokenNameInput, + 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi corrupti neque ratione repudiandae in dolores reiciendis sequi nvrohgoih iuhwr uiwhrug uwhiog iouwhg ouwhg', + ); + }); + + const restrictionsList = screen.queryByRole('list'); + expect(restrictionsList).not.toBeInTheDocument(); + }); +}); diff --git a/src/features/dashboard/components/app-form/app-form.module.scss b/src/features/dashboard/components/app-form/app-form.module.scss new file mode 100644 index 000000000..4da8acfb2 --- /dev/null +++ b/src/features/dashboard/components/app-form/app-form.module.scss @@ -0,0 +1,222 @@ +@use 'src/styles/utility' as *; + +fieldset .customTextInput:last-child { + margin-top: rem(1.5); +} + +.customTextInput { + align-items: center; + border: 1px solid var(--colors-greyLight400); + border-radius: rem(1.6); + display: flex; + position: relative; + box-sizing: border-box; + &:focus-within { + border-color: var(--colors-blue400); + border-radius: rem(1.6); + } + &:hover { + border: 1px solid var(--colors-greyLight600); + } + label { + position: absolute; + color: var(--colors-greyLight600); + left: rem(1.2); + pointer-events: none; + transform-origin: top left; + transition: all 0.25s ease; + white-space: nowrap; + } + input[type='text'], + input[type='number'] { + background: 0 0; + box-sizing: border-box; + color: var(--ifm-color-emphasis-1000); + height: rem(4); + min-width: 0; + width: 100%; + border: none; + text-indent: rem(1.2); + font-size: rem(1.6); + &:not(:placeholder-shown) ~ label { + color: var(--colors-blue400); + background-color: var(--ifm-color-emphasis-0); + padding: 0 rem(0.4); + transform: translateY(rem(-2)) scale(0.75); + } + &:focus { + outline-color: unset; + outline: 1px solid var(--colors-blue500); + border-radius: rem(1.6); + & ~ label { + color: var(--colors-blue400); + background-color: var(--ifm-color-emphasis-0); + padding: 0 rem(0.4); + transform: translateY(rem(-2)) scale(0.75); + } + } + } +} + +.helperMargin { + margin: rem(1) 0 0; +} +.verificationMargin { + margin: rem(2) 0; +} +.apps_form { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + + .formContent { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + &.noAdmin { + .apiTokenWrapper { + ~ div, + .customTextInput { + opacity: 0.2; + pointer-events: none; + } + } + } + .scopes { + display: flex; + flex-direction: column; + margin-bottom: rem(2.5); + @media screen and (min-width: 992px) { + .scopesWrapper { + margin-left: rem(1.6); + } + } + } + .disableTokenDropdown { + opacity: 0.2; + pointer-events: none; + } + .helperText { + width: 100%; + padding-left: rem(1); + padding-bottom: rem(1); + color: var(--colors-greyLight600); + margin-bottom: 0; + } + .apiTokenWrapper { + display: flex; + flex-direction: column; + gap: rem(1); + margin-bottom: rem(2); + } + .formHeaderContainer { + font-size: rem(1.4); + display: flex; + padding: rem(1) 0; + gap: rem(1); + margin-top: rem(1.5); + flex-direction: column; + + .subHeading { + margin-left: rem(1); + } + .formsubHeading { + margin-left: rem(1.6); + display: inline-block; + } + .wrapperHeading { + margin-left: rem(1.6); + } + } + .markup { + margin-bottom: rem(1); + span { + font-size: rem(1.2); + @media screen and (min-width: 992px) { + font-size: rem(1.4); + } + } + } + } +} + +.submit_container { + margin-top: rem(2.5); + margin-bottom: rem(5.5); + display: flex; + align-items: center; + justify-content: center; +} +.scopeItem { + border: 1.6px solid var(--ifm-color-emphasis-800); + border-radius: 6.4px; + padding: rem(1.28) rem(0.64); +} + +.updateState .customTextInput .apiTokenInput[readonly] { + color: var(--ifm-color-emphasis-500); + cursor: not-allowed; + & ~ label { + color: var(--ifm-color-emphasis-500) !important; + } +} + +@media screen and (min-width: 320px) and (max-width: 1024px) { + .infoIcon:hover .tooltip { + width: rem(14); + transform: translate(-19%, calc(-100% - rem(1))); + } +} + +.customCheckboxWrapper { + display: flex; + gap: rem(1); + font-size: rem(1.2); + @media screen and (min-width: 992px) { + font-size: rem(1.4); + } + + label { + cursor: pointer; + } +} + +.termsOfConditionRegister { + font-size: rem(1); + text-align: center; + @media screen and (min-width: 992px) { + font-size: rem(1.4); + } + + a:hover { + color: var(--component-textIcon-normal-prominent); + } +} + +.buttons { + display: flex; + gap: rem(2.4); +} + +.errorAppname { + border-color: var(--colors-coral500) !important; + &:focus-within { + border-color: var(--colors-coral500) !important; + } + input[type='text'], + input[type='number'] { + &:not(:placeholder-shown) ~ label { + color: var(--colors-coral500) !important; + } + &:focus { + outline: var(--colors-coral500) !important; + & ~ label { + color: var(--colors-coral500) !important; + } + } + } +} diff --git a/src/features/dashboard/components/app-form/app-form.tsx b/src/features/dashboard/components/app-form/app-form.tsx new file mode 100644 index 000000000..0e829cd2d --- /dev/null +++ b/src/features/dashboard/components/app-form/app-form.tsx @@ -0,0 +1,428 @@ +import React, { Dispatch, ReactNode, SetStateAction, useEffect, useState } from 'react'; +import clsx from 'clsx'; +import { useForm } from 'react-hook-form'; +import { Button, Text } from '@deriv/ui'; +import Translate, { translate } from '@docusaurus/Translate'; +import { yupResolver } from '@hookform/resolvers/yup'; +import useWS from '@site/src/hooks/useWs'; +import useApiToken from '@site/src/hooks/useApiToken'; +import useAuthContext from '@site/src/hooks/useAuthContext'; +import CustomSelectDropdown from '@site/src/components/CustomSelectDropdown'; +import SelectedToken from '@site/src/components/CustomSelectDropdown/token-dropdown/SelectedToken'; +import TokenDropdown from '@site/src/components/CustomSelectDropdown/token-dropdown/TokenDropdown'; +import SelectedAccount from '@site/src/components/CustomSelectDropdown/account-dropdown/SelectedAccount'; +import AccountDropdown from '@site/src/components/CustomSelectDropdown/account-dropdown/AccountDropdown'; +import CustomCheckbox from '@site/src/components/CustomCheckbox'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { appRegisterSchema, appEditSchema, IRegisterAppForm } from '../../types'; +import RestrictionsAppname from '../restrictions-appname'; +import styles from './app-form.module.scss'; +import { Link } from '@deriv-com/quill-ui'; + + +type TAppFormProps = { + initialValues?: Partial; + isUpdating?: boolean; + submit: (data: IRegisterAppForm) => void; + is_update_mode?: boolean; + formIsCleared: boolean; + setFormIsCleared: Dispatch>; + cancelButton?: () => ReactNode; +}; + +const AppForm = ({ + initialValues, + submit, + is_update_mode = false, + formIsCleared, + setFormIsCleared, + cancelButton, +}: TAppFormProps) => { + const { + register, + handleSubmit, + reset, + formState: { errors }, + } = useForm({ + mode: 'all', + criteriaMode: 'firstError', + resolver: yupResolver(is_update_mode ? appEditSchema : appRegisterSchema), + defaultValues: initialValues, + }); + + const { currentToken, tokens } = useApiToken(); + const { currentLoginAccount } = useAuthContext(); + const { getApps, apps } = useAppManager(); + const [input_value, setInputValue] = useState(''); + const { is_loading } = useWS('app_register'); + + useEffect(() => { + if (formIsCleared) { + setInputValue(''); + setFormIsCleared(false); + reset(); + } + getApps(); + }, [formIsCleared, getApps]); + + const [display_restrictions, setDisplayRestrictions] = useState(true); + + const admin_token = currentToken?.scopes?.includes('admin') && currentToken.token; + + const appNamesArray = apps?.map((app) => app.name); + const app_name_exists = appNamesArray?.includes(input_value); + const disable_register_btn = + app_name_exists || input_value === '' || Object.keys(errors).length > 0 || is_loading; + const disable_btn = is_update_mode ? is_loading : disable_register_btn; + const error_border_active = (!is_update_mode && app_name_exists) || errors.name; + + useEffect(() => { + errors.name?.message || app_name_exists + ? setDisplayRestrictions(false) + : setDisplayRestrictions(true); + }, [errors.name?.message, app_name_exists]); + + const accountHasAdminToken = () => { + const admin_check_array = []; + tokens.forEach((token) => { + const has_admin_scope = token.scopes && token.scopes.includes('admin'); + has_admin_scope ? admin_check_array.push(true) : admin_check_array.push(false); + }); + return admin_check_array.includes(true); + }; + + const AccountErrorMessage = () => ( + + {!accountHasAdminToken() && ( + + + This account doesn't have API tokens with the admin scope. Choose another account. + + + )} + + ); + + const renderButtons = () => { + return ( +
+ + {is_update_mode && cancelButton()} +
+ ); + }; + return ( + +
+
+
+
+
+

+ App information +

+ {!is_update_mode && ( + + Select your api token ( it should have admin scope ) + + )} +
+ {!is_update_mode && ( + +
+ + + + + +
+
+ + + + +
+
+ )} +
+
{ + setInputValue((e.target as HTMLInputElement).value); + }} + > + + +
+ {errors && errors.name ? ( + + {errors.name.message} + + ) : !is_update_mode && app_name_exists ? ( + + That name is taken. Choose another. + + ) : ( + display_restrictions && + )} +
+
+
+

+ Markup +

+
+ + + You can earn commission by adding a markup to the price of each trade. Enter + your markup percentage here. + + +
+ +

+ + Note: Markup is only available for real accounts. + +

+
+
+
+
+
+
+ + +
+ + + Enter 0 if you don‘t want to earn a markup. Max markup: 3% + + + {errors && errors.app_markup_percentage && ( + + {errors.app_markup_percentage.message} + + )} +
+
+
+

+ OAuth details +

+
+ + + This allows clients to log in to your app using their Deriv accounts without an + API token. + + +
+
+
+
+ + +
+ + + Please note that this URL will be used as the OAuth redirect URL for the OAuth + authorization. + + + {errors && errors?.redirect_uri && ( + {errors.redirect_uri?.message} + )} +
+ +
+
+ + +
+ {errors && errors.verification_uri && ( + {errors.verification_uri.message} + )} +
+ +
+
+
+

+ Scope of authorization +

+
+ + Select the scope for your app: + +
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + {translate({ message: `By registering your application, you acknowledge that you‘ve read and accepted the Deriv API` })} {' '} + + + terms and conditions + +
+ {renderButtons &&
{renderButtons()}
} +
+
+
+
+ ); +}; + +export default AppForm; diff --git a/src/features/dashboard/components/app-form/index.ts b/src/features/dashboard/components/app-form/index.ts new file mode 100644 index 000000000..8e48024a8 --- /dev/null +++ b/src/features/dashboard/components/app-form/index.ts @@ -0,0 +1,3 @@ +import AppForm from './app-form'; + +export default AppForm; diff --git a/src/features/dashboard/components/dialogs/update-app-dialog/__tests__/update-app-dialog.test.tsx b/src/features/dashboard/components/dialogs/update-app-dialog/__tests__/update-app-dialog.test.tsx new file mode 100644 index 000000000..544251225 --- /dev/null +++ b/src/features/dashboard/components/dialogs/update-app-dialog/__tests__/update-app-dialog.test.tsx @@ -0,0 +1,221 @@ +import React, { act } from 'react'; +import { ApplicationObject } from '@deriv/api-types'; +import useApiToken from '@site/src/hooks/useApiToken'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { render, screen, cleanup } from '@site/src/test-utils'; +import makeMockSocket from '@site/src/__mocks__/socket.mock'; +import userEvent from '@testing-library/user-event'; +import { WS } from 'jest-websocket-mock'; +import UpdateAppDialog from '..'; + +jest.mock('@site/src/hooks/useApiToken'); + +const mockUseApiToken = useApiToken as jest.MockedFunction< + () => Partial> +>; + +mockUseApiToken.mockImplementation(() => ({ + tokens: [ + { + display_name: 'first', + last_used: '', + scopes: ['read', 'trade'], + token: 'first_token', + valid_for_ip: '', + }, + { + display_name: 'second', + last_used: '2023-01-19 15:09:39', + scopes: ['read', 'trade', 'payments', 'trading_information', 'admin'], + token: 'first_token', + valid_for_ip: '', + }, + { + display_name: 'third', + last_used: '', + scopes: ['read', 'trade', 'payments', 'admin'], + token: 'third_token', + valid_for_ip: '', + }, + ], +})); + +const connection = makeMockSocket(); + +jest.mock('@site/src/hooks/useAppManager'); + +const mockGetApps = jest.fn(); + +const mockUseAppManager = useAppManager as jest.MockedFunction< + () => Partial> +>; + +mockUseAppManager.mockImplementation(() => ({ + getApps: mockGetApps, +})); + +const fakeApp: ApplicationObject = { + active: 1, + app_id: 12345, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'testApp', + redirect_uri: 'https://example.com', + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + last_used: '', + official: 0, +}; + +describe('Update App Dialog', () => { + const mockOnClose = jest.fn(); + + let wsServer: WS; + + beforeEach(async () => { + wsServer = await connection.setup(); + await wsServer.connected; + render(); + }); + + afterEach(() => { + connection.tearDown(); + cleanup(); + }); + + it('Should render the form', () => { + const form = screen.getByRole('form'); + expect(form).toBeInTheDocument(); + }); + + it('Should render button properly ', () => { + const primaryButton = screen.getByRole('submit'); + const secondaryButton = screen.getByRole('button', { name: /cancel/i }); + + expect(primaryButton).toBeInTheDocument(); + expect(secondaryButton).toBeInTheDocument(); + }); + + it('Should close the modal on cancel button click', async () => { + const secondaryButton = screen.getByRole('button', { name: /cancel/i }); + await act(async () => { + await userEvent.click(secondaryButton); + }); + + expect(mockOnClose).toBeCalled(); + }); + + it('Should close the modal on modal close button click', async () => { + const closeButton = screen.getByTestId('close-button'); + await act(async () => { + await userEvent.click(closeButton); + }); + + expect(mockOnClose).toBeCalled(); + }); + + it('Should update application on submit click', async () => { + const submitButton = screen.getByText('Update Application'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.clear(tokenNameInput); + await userEvent.type(tokenNameInput, 'test app name updated'); + + await userEvent.click(submitButton); + }); + + await expect(wsServer).toReceiveMessage({ + app_markup_percentage: 0, + app_update: 12345, + name: 'test app name updated', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + }); + + wsServer.send({ + app_update: { + app_markup_percentage: 0, + app_update: 12345, + name: 'test app name updated', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + }, + echo_req: { + app_markup_percentage: 0, + app_update: 35565, + name: 'test app name updated', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + }, + msg_type: 'app_update', + req_id: 1, + }); + + await screen.findByText('Update App'); + expect(mockGetApps).toBeCalled(); + expect(mockOnClose).toBeCalled(); + }); + + it.skip('Should render error on error response', async () => { + const submitButton = screen.getByText('Update Application'); + + const tokenNameInput = screen.getByRole('textbox', { + name: 'App name (required)', + }); + + await act(async () => { + await userEvent.clear(tokenNameInput); + await userEvent.type(tokenNameInput, 'test app wrong name fake'); + + await userEvent.click(submitButton); + }); + + await expect(wsServer).toReceiveMessage({ + app_markup_percentage: 0, + app_update: 12345, + name: 'test app wrong name fake', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + }); + + wsServer.send({ + echo_req: { + app_markup_percentage: 0, + app_update: 12345, + name: 'test app wrong name fake', + redirect_uri: 'https://example.com', + req_id: 4, + scopes: ['read', 'trade', 'trading_information'], + verification_uri: 'https://example.com', + }, + error: { + code: 'InputValidationFailed', + details: { + name: "String does not match '^[\\w\\s-]{1,48}$'", + }, + message: 'Input validation failed: name', + }, + msg_type: 'app_update', + req_id: 1, + }); + + const errorContent = await screen.findByText('Input validation failed: name'); + + expect(errorContent).toBeInTheDocument(); + }); +}); diff --git a/src/features/dashboard/components/dialogs/update-app-dialog/index.ts b/src/features/dashboard/components/dialogs/update-app-dialog/index.ts new file mode 100644 index 000000000..29f5f3850 --- /dev/null +++ b/src/features/dashboard/components/dialogs/update-app-dialog/index.ts @@ -0,0 +1,3 @@ +import UpdateAppDialog from './update-app-dialog'; + +export default UpdateAppDialog; diff --git a/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.module.scss b/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.module.scss new file mode 100644 index 000000000..ca2bd56ed --- /dev/null +++ b/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.module.scss @@ -0,0 +1,11 @@ +@use 'src/styles/utility' as *; + +.update_dialog { + height: 80vh !important; + overflow: auto; + width: 80vw; + + .update_app_content { + margin: rem(1); + } +} diff --git a/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.tsx b/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.tsx new file mode 100644 index 000000000..0e75f2d3d --- /dev/null +++ b/src/features/dashboard/components/dialogs/update-app-dialog/update-app-dialog.tsx @@ -0,0 +1,115 @@ +import React, { useCallback, useEffect } from 'react'; +import AppForm from '../../app-form'; +import useWS from '@site/src/hooks/useWs'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { Button, Modal } from '@deriv/ui'; +import { IRegisterAppForm } from '../../../types'; +import { ApplicationObject } from '@deriv/api-types'; +import { RegisterAppDialogError } from '../register-app-dialog-error'; +import { scopesArrayToObject, scopesObjectToArray } from '@site/src/utils'; +import styles from './update-app-dialog.module.scss'; +import Translate, { translate } from '@docusaurus/Translate'; + +interface IUpdateAppDialog { + app: ApplicationObject; + onClose: () => void; +} + +const UpdateAppDialog = ({ app, onClose }: IUpdateAppDialog) => { + const { send: updateApp, data, error, clear } = useWS('app_update'); + const { getApps } = useAppManager(); + + const scopes = scopesArrayToObject(app.scopes); + const initialValues: Partial = { + ...app, + ...scopes, + app_markup_percentage: app.app_markup_percentage, + }; + + const onOpenChange = useCallback( + (open: boolean) => { + if (!open) { + onClose(); + } + }, + [onClose], + ); + + useEffect(() => { + if (data) { + getApps(); + onClose(); + } + }, [data, getApps, onClose]); + + const onSubmit = useCallback( + (data: IRegisterAppForm) => { + const { name, redirect_uri, verification_uri, app_markup_percentage } = data; + + const has_redirect_uri = redirect_uri !== '' && { redirect_uri }; + const has_verification_uri = verification_uri !== '' && { verification_uri }; + const markup = { + app_markup_percentage: Number(app_markup_percentage), + }; + + const selectedScopes = scopesObjectToArray({ + admin: data.admin, + payments: data.payments, + read: data.read, + trade: data.trade, + trading_information: data.trading_information, + }); + updateApp({ + app_update: data.app_id, + name, + ...has_redirect_uri, + ...has_verification_uri, + ...markup, + scopes: selectedScopes, + }); + }, + [updateApp], + ); + + const cancelButton = () => { + return ( + + ); + }; + + return ( + + +
+ + +
+ +
+ {error && } +
+
+
+
+ ); +}; + +export default UpdateAppDialog; diff --git a/src/features/dashboard/components/no-apps/__tests__/no-apps.test.tsx b/src/features/dashboard/components/no-apps/__tests__/no-apps.test.tsx new file mode 100644 index 000000000..7d56bf8a2 --- /dev/null +++ b/src/features/dashboard/components/no-apps/__tests__/no-apps.test.tsx @@ -0,0 +1,45 @@ +import useAppManager from '@site/src/hooks/useAppManager'; +import { render, cleanup, screen } from '@site/src/test-utils'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; +import NoApps from '..'; +import { TDashboardTab } from '@site/src/contexts/app-manager/app-manager.context'; + +jest.mock('@site/src/hooks/useAppManager'); + +const mockUseAppManager = useAppManager as jest.MockedFunction< + () => Partial> +>; + +const mockUpdateCurrentTab = jest.fn(); + +mockUseAppManager.mockImplementation(() => ({ + updateCurrentTab: mockUpdateCurrentTab, +})); + +describe('No Apps', () => { + beforeEach(() => { + render(); + }); + + afterEach(() => { + cleanup(); + jest.clearAllMocks(); + }); + + it('Should render description', () => { + const descriptionText = screen.getByTestId('no-apps-description'); + expect(descriptionText).toHaveTextContent( + 'To see your details reflected, please register your app via the registration form.', + ); + }); + + it('Should navigate to REGISTER_APP Tab on Register now click', async () => { + const registerNowButton = screen.getByRole('button'); + + await userEvent.click(registerNowButton); + + expect(mockUpdateCurrentTab).toHaveBeenCalledTimes(1); + expect(mockUpdateCurrentTab).toHaveBeenCalledWith(TDashboardTab.REGISTER_APP); + }); +}); diff --git a/src/features/dashboard/components/no-apps/index.ts b/src/features/dashboard/components/no-apps/index.ts new file mode 100644 index 000000000..420404f9c --- /dev/null +++ b/src/features/dashboard/components/no-apps/index.ts @@ -0,0 +1,3 @@ +import NoApps from './no-apps'; + +export default NoApps; diff --git a/src/features/dashboard/components/no-apps/no-apps.module.scss b/src/features/dashboard/components/no-apps/no-apps.module.scss new file mode 100644 index 000000000..fd1769d7c --- /dev/null +++ b/src/features/dashboard/components/no-apps/no-apps.module.scss @@ -0,0 +1,48 @@ +@use 'src/styles/utility' as *; + +.noAppsWrapper { + width: calc(100% - rem(3.2)); +} + +.noApps { + padding-top: rem(7.2); + margin: 0 auto; + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: calc(rem(32) - rem(3.2)); + position: relative; + margin: 0 auto; +} + +.noAppsIcon { + margin-top: rem(1.6); + margin-bottom: rem(2); + background-image: url(/img/table-empty.svg); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + width: rem(10); + height: rem(10); +} + +.noAppsText p { + text-align: center; + margin-bottom: rem(2); +} + +[data-state*='responsive.desktop'] { + .noAppsWrapper { + position: relative; + } + .noApps { + padding-top: rem(7.2); + margin: 0 auto; + position: relative; + } + .noAppsText { + width: rem(39); + } +} diff --git a/src/features/dashboard/components/no-apps/no-apps.tsx b/src/features/dashboard/components/no-apps/no-apps.tsx new file mode 100644 index 000000000..eeca662b0 --- /dev/null +++ b/src/features/dashboard/components/no-apps/no-apps.tsx @@ -0,0 +1,34 @@ +import React, { useCallback } from 'react'; +import styles from './no-apps.module.scss'; +import { Button, Text } from '@deriv/ui'; +import useAppManager from '@site/src/hooks/useAppManager'; +import { TDashboardTab } from '@site/src/contexts/app-manager/app-manager.context'; +import Translate from '@docusaurus/Translate'; + +const NoApps = () => { + const { updateCurrentTab } = useAppManager(); + + const onRegisterClick = useCallback(() => { + updateCurrentTab(TDashboardTab.REGISTER_APP); + }, [updateCurrentTab]); + + return ( +
+
+
+
+ + + To see your details reflected, please register your app via the registration form. + + +
+ +
+
+ ); +}; + +export default NoApps; diff --git a/src/features/dashboard/components/token-register/token-register.tsx b/src/features/dashboard/components/token-register/token-register.tsx index 6d09bddd8..080583aa7 100644 --- a/src/features/dashboard/components/token-register/token-register.tsx +++ b/src/features/dashboard/components/token-register/token-register.tsx @@ -5,13 +5,51 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { scopesObjectToArray } from '@site/src/utils'; import ApiTokenCard from '../api-token-card'; import useCreateToken from '@site/src/features/dashboard/hooks/useCreateToken'; +import * as yup from 'yup'; +import './token-register.scss'; import CreateTokenField from '../api-token-form/create-token-field'; import AccountSwitcher from '@site/src/components/AccountSwitcher'; import Translate, { translate } from '@docusaurus/Translate'; -import { TApiTokenForm, tokenRegisterSchema, TScope } from './types'; -import './token-register.scss'; -// FIXME: Move scopes to an exportable separate file for reusability (scopes.ts) +const schema = yup + .object({ + read: yup.boolean(), + trade: yup.boolean(), + payments: yup.boolean(), + trading_information: yup.boolean(), + admin: yup.boolean(), + name: yup + .string() + .min(2, translate({ message: 'Your token name must be atleast 2 characters long.' })) + .max(32, translate({ message: 'Only up to 32 characters are allowed.' })) + .matches(/^(?=.*[a-zA-Z0-9])[a-zA-Z0-9_ ]*$/, { + message: translate({ + message: + 'Only alphanumeric characters with spaces and underscores are allowed. (Example: my_application)', + }), + excludeEmptyString: true, + }) + .matches( + /^(?!.*deriv|.*d3r1v|.*der1v|.*d3riv|.*b1nary|.*binary|.*b1n4ry|.*bin4ry|.*blnary|.*b\|nary).*$/i, + { + message: translate({ + message: 'The name cannot contain “Binary”, “Deriv”, or similar words.', + }), + excludeEmptyString: true, + }, + ), + }) + .required(); + +export type TApiTokenForm = yup.InferType; +export type TApiTokenFormItemsNames = keyof TApiTokenForm; + +type TScope = { + name: TApiTokenFormItemsNames; + description: string; + label: string; +}; + const scopes: TScope[] = [ { name: 'read', @@ -66,7 +104,7 @@ const TokenRegister = (props: HTMLAttributes) => { reset, formState: { errors }, } = useForm({ - resolver: yupResolver(tokenRegisterSchema), + resolver: yupResolver(schema), mode: 'all', }); const onSubmit = useCallback( diff --git a/src/features/dashboard/components/token-register/types.ts b/src/features/dashboard/components/token-register/types.ts index 405384a41..70f5c9476 100644 --- a/src/features/dashboard/components/token-register/types.ts +++ b/src/features/dashboard/components/token-register/types.ts @@ -1,42 +1,59 @@ import { translate } from '@docusaurus/Translate'; +import { UseFormRegisterReturn } from 'react-hook-form'; import * as yup from 'yup'; -export const tokenRegisterSchema = yup - .object({ - read: yup.boolean(), - trade: yup.boolean(), - payments: yup.boolean(), - trading_information: yup.boolean(), - admin: yup.boolean(), - name: yup - .string() - .min(2, translate({ message: 'Your token name must be atleast 2 characters long.' })) - .max(32, translate({ message: 'Only up to 32 characters are allowed.' })) - .matches(/^(?=.*[a-zA-Z0-9])[a-zA-Z0-9_ ]*$/, { - message: translate({ - message: - 'Only alphanumeric characters with spaces and underscores are allowed. (Example: my_application)', - }), +export const token_name_error_map = { + error_code_1: translate({ + message: 'Only alphanumeric characters with spaces and underscores are allowed.', + }), + error_code_2: translate({ message: `Only 2-32 characters are allowed` }), + error_code_3: translate({ + message: `No duplicate token names are allowed for the same account.`, + }), + error_code_4: translate({ + message: `No keywords "deriv" or "binary" or words that look similar, e.g. "_binary_" or "d3riv" are allowed.`, + }), +}; + +export const tokenRegisterSchema = yup.object({ + account_type: yup.string().required(translate({ message: 'Select an account type.' })), + token_name: yup + .string() + .required(translate({ message: 'Enter your token name.' })) + .min(2, token_name_error_map.error_code_2) + .max(32, token_name_error_map.error_code_2) + .matches(/^(?=.*[a-zA-Z0-9])[a-zA-Z0-9_ ]*$/, { + message: token_name_error_map.error_code_1, + excludeEmptyString: true, + }) + .matches( + /^(?!.*deriv|.*d3r1v|.*der1v|.*d3riv|.*b1nary|.*binary|.*b1n4ry|.*bin4ry|.*blnary|.*b\|nary).*$/i, + { + message: token_name_error_map.error_code_4, excludeEmptyString: true, - }) - .matches( - /^(?!.*deriv|.*d3r1v|.*der1v|.*d3riv|.*b1nary|.*binary|.*b1n4ry|.*bin4ry|.*blnary|.*b\|nary).*$/i, - { - message: translate({ - message: 'The name cannot contain “Binary”, “Deriv”, or similar words.', - }), - excludeEmptyString: true, - }, - ), - }) - .required(); + }, + ), + read: yup.boolean(), + trade: yup.boolean(), + payments: yup.boolean(), + trading_information: yup.boolean(), + admin: yup.boolean(), +}); + +export type ITokenRegisterForm = yup.InferType; -export type TApiTokenForm = yup.InferType; +export type TTokenRegisterProps = { + onCancel?: () => void; + submit: (data: ITokenRegisterForm) => void; +}; -export type TApiTokenFormItemsNames = keyof TApiTokenForm; +export type TCustomCheckboxProps = { + name: string; + id: string; + register: UseFormRegisterReturn; + onChange?: (e: React.ChangeEvent) => void; +}; -export type TScope = { - name: TApiTokenFormItemsNames; - description: string; - label: string; -}; \ No newline at end of file +export type TRestrictionComponentProps = { + error: string; +}; diff --git a/src/features/dashboard/hooks/useRegisterApp/__tests__/useRegisterApp.test.tsx b/src/features/dashboard/hooks/useRegisterApp/__tests__/useRegisterApp.test.tsx new file mode 100644 index 000000000..1de91d550 --- /dev/null +++ b/src/features/dashboard/hooks/useRegisterApp/__tests__/useRegisterApp.test.tsx @@ -0,0 +1,88 @@ +import makeMockSocket from '@site/src/__mocks__/socket.mock'; +import { cleanup, renderHook, act, waitFor } from '@testing-library/react'; +import { WS } from 'jest-websocket-mock'; +import useRegisterApp from '..'; + +const connection = makeMockSocket(); + +describe('Use Delete App', () => { + let wsServer: WS; + beforeEach(async () => { + wsServer = await connection.setup(); + await wsServer.connected; + }); + + afterEach(() => { + connection.tearDown(); + cleanup(); + }); + + it('Should register app with provided values', async () => { + const { result } = renderHook(() => useRegisterApp()); + + expect(result.current.is_loading).toBeFalsy(); + + act(() => { + result.current.registerApp({ + name: 'app', + scopes: ['admin', 'payments'], + redirect_uri: 'https://example.com', + verification_uri: 'https://example.com', + }); + }); + + expect(result.current.is_loading).toBeTruthy(); + + await expect(wsServer).toReceiveMessage({ + app_register: 1, + name: 'app', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['admin', 'payments'], + verification_uri: 'https://example.com', + }); + + wsServer.send({ + app_register: { + active: 1, + app_id: 12345, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'app', + redirect_uri: 'https://example.com', + scopes: ['admin', 'payments'], + verification_uri: 'https://example.com', + }, + echo_req: { + app_register: 1, + name: 'app', + redirect_uri: 'https://example.com', + req_id: 1, + scopes: ['admin', 'payments'], + verification_uri: 'https://example.com', + }, + msg_type: 'app_register', + req_id: 1, + }); + + await waitFor(() => { + expect(result.current.is_loading).toBeFalsy(); + expect(result.current.data).toStrictEqual({ + active: 1, + app_id: 12345, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'app', + redirect_uri: 'https://example.com', + scopes: ['admin', 'payments'], + verification_uri: 'https://example.com', + }); + }); + }); +}); diff --git a/src/features/dashboard/hooks/useRegisterApp/index.tsx b/src/features/dashboard/hooks/useRegisterApp/index.tsx new file mode 100644 index 000000000..bbe5fd674 --- /dev/null +++ b/src/features/dashboard/hooks/useRegisterApp/index.tsx @@ -0,0 +1,18 @@ +import { TSocketRequestCleaned } from '@site/src/configs/websocket/types'; +import useWS from '@site/src/hooks/useWs'; +import { useCallback } from 'react'; + +const useRegisterApp = () => { + const { send, data, is_loading } = useWS('app_register'); + + const registerApp = useCallback( + (data: TSocketRequestCleaned<'app_register'>) => { + send(data); + }, + [send], + ); + + return { registerApp, data, is_loading }; +}; + +export default useRegisterApp; diff --git a/src/features/dashboard/hooks/useUpdateApp/__tests__/useUpdateApp.test.tsx b/src/features/dashboard/hooks/useUpdateApp/__tests__/useUpdateApp.test.tsx new file mode 100644 index 000000000..14c0f3995 --- /dev/null +++ b/src/features/dashboard/hooks/useUpdateApp/__tests__/useUpdateApp.test.tsx @@ -0,0 +1,84 @@ +import makeMockSocket from '@site/src/__mocks__/socket.mock'; +import { cleanup, renderHook, act, waitFor } from '@testing-library/react'; +import { WS } from 'jest-websocket-mock'; +import useUpdateApp from '..'; + +const connection = makeMockSocket(); + +describe('Use Delete App', () => { + let wsServer: WS; + beforeEach(async () => { + wsServer = await connection.setup(); + await wsServer.connected; + }); + + afterEach(() => { + connection.tearDown(); + cleanup(); + }); + + it('Should register app with provided values', async () => { + const { result } = renderHook(() => useUpdateApp()); + + expect(result.current.is_loading).toBeFalsy(); + + act(() => { + result.current.updateApp({ + app_update: 1234, + name: 'test update app', + scopes: ['admin', 'trade'], + }); + }); + + expect(result.current.is_loading).toBeTruthy(); + + await expect(wsServer).toReceiveMessage({ + app_update: 1234, + name: 'test update app', + req_id: 1, + scopes: ['admin', 'trade'], + }); + + wsServer.send({ + app_update: { + active: 1, + app_id: 1234, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'app', + redirect_uri: 'https://example.com', + scopes: ['admin', 'trade'], + verification_uri: 'https://example.com', + }, + echo_req: { + app_update: 1234, + name: 'test update app', + req_id: 1, + scopes: ['admin', 'trade'], + }, + msg_type: 'app_update', + req_id: 1, + }); + + await waitFor(() => { + expect(result.current.is_loading).toBeFalsy(); + + expect(result.current.data).toStrictEqual({ + active: 1, + app_id: 1234, + app_markup_percentage: 0, + appstore: '', + github: '', + googleplay: '', + homepage: '', + name: 'app', + redirect_uri: 'https://example.com', + scopes: ['admin', 'trade'], + verification_uri: 'https://example.com', + }); + }); + }); +}); diff --git a/src/features/dashboard/hooks/useUpdateApp/index.tsx b/src/features/dashboard/hooks/useUpdateApp/index.tsx new file mode 100644 index 000000000..11e9c2e26 --- /dev/null +++ b/src/features/dashboard/hooks/useUpdateApp/index.tsx @@ -0,0 +1,18 @@ +import { TSocketRequestCleaned } from '@site/src/configs/websocket/types'; +import useWS from '@site/src/hooks/useWs'; +import { useCallback } from 'react'; + +const useUpdateApp = () => { + const { send, data, is_loading } = useWS('app_update'); + + const updateApp = useCallback( + (data: TSocketRequestCleaned<'app_update'>) => { + send(data); + }, + [send], + ); + + return { updateApp, data, is_loading }; +}; + +export default useUpdateApp; diff --git a/src/features/dashboard/manage-tokens/__tests__/index.test.tsx b/src/features/dashboard/manage-tokens/__tests__/index.test.tsx new file mode 100644 index 000000000..58fbb08b4 --- /dev/null +++ b/src/features/dashboard/manage-tokens/__tests__/index.test.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { cleanup, render, screen } from '@site/src/test-utils'; +import ApiToken from '..'; +import ApiTokenTable from '../../components/api-token-table'; + +describe('Home Page', () => { + beforeEach(() => { + render(); + }); + + afterEach(() => { + cleanup(); + }); + + it('Should render Page Heading', () => { + const heading = screen.getByRole('heading', { level: 2 }); + expect(heading).toBeInTheDocument(); + expect(heading.textContent).toMatch(/API Token Manager/i); + }); + + it('Should render api token from', () => { + const form = screen.getByRole('form'); + expect(form).toBeInTheDocument(); + }); + + it('Should render api token table', () => { + ; + }); +}); diff --git a/src/features/dashboard/manage-tokens/index.tsx b/src/features/dashboard/manage-tokens/index.tsx new file mode 100644 index 000000000..11796c0c0 --- /dev/null +++ b/src/features/dashboard/manage-tokens/index.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Text } from '@deriv/ui'; +import styles from './manage-tokens.module.scss'; +import ApiTokenForm from '../components/api-token-form/api-token-form'; +import ApiTokenTable from '../components/api-token-table'; +import Translate from '@docusaurus/Translate'; + +const ApiToken = () => { + return ( +
+ + API Token Manager + + + +
+ ); +}; + +export default ApiToken; diff --git a/src/features/dashboard/register-tokens/__test__/register-tokens.test.tsx b/src/features/dashboard/register-tokens/__test__/register-tokens.test.tsx new file mode 100644 index 000000000..f0d3e9d2b --- /dev/null +++ b/src/features/dashboard/register-tokens/__test__/register-tokens.test.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { render, screen } from '@site/src/test-utils'; +import TokenRegistration from '..'; + +describe('Register Tokens', () => { + const renderRegisterTokenComponent = () => { + return render(); + }; + + it('Should render the component', () => { + renderRegisterTokenComponent(); + const headingText = screen.getByText('Create new token'); + expect(headingText).toBeInTheDocument(); + }); +}); diff --git a/src/features/dashboard/register-tokens/index.tsx b/src/features/dashboard/register-tokens/index.tsx new file mode 100644 index 000000000..b8d36c76b --- /dev/null +++ b/src/features/dashboard/register-tokens/index.tsx @@ -0,0 +1,8 @@ +import React from 'react'; +import TokenRegister from '../components/token-register'; + +const TokenRegistration: React.FC = () => { + return ; +}; + +export default TokenRegistration; diff --git a/static/img/arrow_down.svg b/static/img/arrow_down.svg new file mode 100644 index 000000000..1aa8372c3 --- /dev/null +++ b/static/img/arrow_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/arrow_left.svg b/static/img/arrow_left.svg new file mode 100644 index 000000000..18ea2acc1 --- /dev/null +++ b/static/img/arrow_left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/arrow_right.svg b/static/img/arrow_right.svg new file mode 100644 index 000000000..864bd1913 --- /dev/null +++ b/static/img/arrow_right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/chevron-left.svg b/static/img/chevron-left.svg new file mode 100644 index 000000000..4dfab339e --- /dev/null +++ b/static/img/chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/circle_dot_caption_bold.svg b/static/img/circle_dot_caption_bold.svg new file mode 100644 index 000000000..986d59044 --- /dev/null +++ b/static/img/circle_dot_caption_bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/circle_dot_caption_fill.svg b/static/img/circle_dot_caption_fill.svg new file mode 100644 index 000000000..4c4f0a128 --- /dev/null +++ b/static/img/circle_dot_caption_fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/close_dialog.svg b/static/img/close_dialog.svg new file mode 100644 index 000000000..f5a9814e5 --- /dev/null +++ b/static/img/close_dialog.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/delete.svg b/static/img/delete.svg new file mode 100644 index 000000000..92adce2ba --- /dev/null +++ b/static/img/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/deriv-logo.png b/static/img/deriv-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c97199874b5048a25e1614f8420973a21274f2 GIT binary patch literal 2757 zcmV;$3Oef6wk_H#aT@k{}W#5~Pe(so^3fVAMcN)h{ZJWvp6I?9h%_KWS$= zG95p(osMFsovJt@wSpRIm6RkKaI_;Rgn@>O1VSzw1Lmsay1DJ{>4$VNU2@q?_PyuL`gP2&TeK<)ML-d7JdUCX1(r|9 zeBfoelB?B*{Kul$PuilM$}b>5sUB_Vif{l?zmV;pR8OTE%{(B8Y(L-zc}44XbVrd- zK#r-6`Rk`rjV_~7ZOV?rmvRu)ay{BJfOl{t{9N8B_C{Jzx3Hi#+_?zs$ABcg+SHjN zxLk$u*L{~FDWrJ_3L)oz?sB_rk z^5xCa3*qF}%>yo@hMopIy0@zvvIxJgTy4sq5l(L11(3Ht>mb0RfKTtXb!0I^^1fQP z&OT8_{XGDXo%;`=)JulnTxpvMNb2~*M15h1008t}^%AJh4QpQ?o>NccKQLYfL+?)2 zlZEr}`Az^SM%tk%igp5Wqr6kzI@)RDJOCJ;DX6DR5H2)aLt-{IwQa0EFjN2ldHcYJ zz?(+fp)o&EkFC9Lv=fF40Dvog3s7aW8JZ&McWUd_EBf0M0>~T1UIOwkihjdGhIZ*j z>JB~<`q@n(0D!zxej1Tq8*PWS$X1n?=NNg!Gy(vyvwRy+YP1;|vXBhtLn9BEN&o?c zJ%)DCMx7O@4I!V|e5l9QtR+AhCbe&hDEul*b{(h#lX*Z8*}1pTqvcP{FWSY^oL>-@8EAN#zn%4sW`MbLYWqa0W zJ2W9q-3?|ALH|SEEq@EeZo|Vy)WeXh0SgEKK-|z~5YKSLjFrSnf`3^7wZ33Eq7DLa zM%xl40wlSnS;GSW+2yVvAhEQIX2UzU&@uu5uxRB=z^6u=5j6s8v1LL~5cSB~41^QF zRYuz~WkjC0mInaxUU?&8d(vn-qJmP^xdx0xc9ney5(~R%(=90g06oqvD5^|wF`YsZ zYkB~H6c>B3srA5s(Y8z;m0(!`0A$zxN<^MF+Kx%1q}$R00I=KrDvDy`!^tEPbXi`2 z;qRi^H=<}V+LnkB6$2gsNKt7UqMjf)uB?KRj+hVtK;GY9j#4ih9#$er0nW#a007MV z?gbP_j5Z@|0{$w?Ek#U(T33*TsN;aychUM$Gm>M=0{|&<*AS2`hKHAl(^)Ah^2eM2 z0J6uu1K4G>9pj=n3Rc+>n-qb~K)umcjEM|is~i*Mvnn->gZIr#b54tQPWUw~WALjZ z5ThP&c16x_d;5lV#yjn^jkaYBx^c{?f*2IwboTAL>M!*DCUb70NryfF6~T88#Y_lN z+1YU?hg@GYH1#c=lj34}qQkuR#Ut)jVnTomcQ2oHw8?g|t)p+Qh_Eoj?60Gc%K}(F z1U2O3+~{e<)7CLC7vSnyPNpTAd|dg4V#5P!Z(nt9T~q%@-hQ70Km@X`Nj7ij8Kz$L ze$o>B$Fd%9cEze^>n?bUgPjjBcXm9<31+_b0;vC6tFojARNb2Mn&)EA)BeEs$3!4& zZlZBUg^gHO00naDmX#&-Eq(W>kT7%2tOSzcO+51nBDTXL|Fw(&t$BIL$J+WUTiW^; zgq{Kq$DQXIy34xze9qC%i@<`b6U`rb0F*i$ddSqXpt{>uJy~<1=fGH<50GJ<(NE|F z7)&g{xn;S3Jb$rw`@m3OOdD+?!=v9Si0ujiOc#O_$eADId|dlY@BN`Oolr7T<4JJZ ztr32posUcFLJyis099D%I(4z5qOrw$^F(=V!PsvV6o+M$p<)^VTJwH9r=tGb6YX7t zY2oC*HZ6hpILnNFMvMPol50T2irnn#3+;8`cD_yE`Z;D_@eDz(oB@FeJfJo^cYRGu z|KIut{b5gK=BFhMkACamV^AtaJ7K5*=a%NaSli-#amcU2em===6RuCU$h<#@qC!eb zyGA=@m;k4jtbDhw$-6!<(Nrgd`RR!`<4h4b!$;(ku}NTAgg`?7L<%k^UR5_=_T095 z@z=EhPh01}q&nYW6Ef2+IQm828*Tm{L>B>Svsc~gY4x7$@D5J;f!WOTMB?lgi~SJ5 zFFVJ}pm_+Y&c5TB`nH~J1HQndpTv%{+nAqfv6&BmVxN?hjQb-$nhJ1cN$y|jTDmv; z15@ici;jK}HQ{U5G!a07oVsaciKoqbkBV@b8H&>(%%7bQCChZ>bJ^$qbfQdA7ohp( zwMoZ^y8hGrZU4e()R&o>gu`aJnGZ-Htgp{TRe48MVM#vuyS4)$QJ@Xmviog7hRD){Fg}D8hcvT~s`vX6fq38d`gI^pCT9 z6)CPb8`q{JSTFP-&q--`zn}zB@PO)DbAMmk+_N*9oe!`eH3_@Ta^E4`OKItjND55a z0~E+tH|G@9H1|Fj?Lq2t*vOb=x!7NWEB^8E?s`XKQUa*LLf5IUJC8KBdvBRc`H9F% zPsT2heiTFLL8*u2qmMcwEf}!?t$BHKj@DnQZ0j0GkF;z!#K+mlNU_u}p%0?eI&r&C zOr~%|aodx<>elm(y|r3(K0sDlGB&YH?DqqYirZZ_*$Tq;0MD}357f8yec&DRX|@-b z;IuREssspsgUm<2T6R7_R;p!2e-8xi6?e%8Q>|!1 z52#v_v!kZD=ZPt4$-Y4kS%+pz^+ z6SrHJmjF5ds&85SYE66hGd``SIw2&-JD4-wrE8m4Ak+dSAbXgRbSU@^2fc87^~2n< zn)dDjJ!U$g+%P*CLGv}AA)p6ECqf%Y4NwbI;^UBfR?@6#>l5%_fR>|aA$rmA00000 LNkvXXu0mjf_9!_O literal 0 HcmV?d00001 diff --git a/static/img/edit.svg b/static/img/edit.svg new file mode 100644 index 000000000..24f55a9af --- /dev/null +++ b/static/img/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/eye_closed.svg b/static/img/eye_closed.svg new file mode 100644 index 000000000..0a2650ef2 --- /dev/null +++ b/static/img/eye_closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/eye_open.svg b/static/img/eye_open.svg new file mode 100644 index 000000000..007553acc --- /dev/null +++ b/static/img/eye_open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/gray-logo.svg b/static/img/gray-logo.svg new file mode 100644 index 000000000..0ae29bacb --- /dev/null +++ b/static/img/gray-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/img/header-mobile.png b/static/img/header-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..59581f33b265c488bcff36037c331d150d481bb2 GIT binary patch literal 67551 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

-q-}L02-Bcdc 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 z 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 + + + + + + + + + diff --git a/static/img/logo.svg b/static/img/logo.svg new file mode 100644 index 000000000..3eefe502f --- /dev/null +++ b/static/img/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/pattern.svg b/static/img/pattern.svg new file mode 100644 index 000000000..e91d4e7c7 --- /dev/null +++ b/static/img/pattern.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/placeholder_icon.svg b/static/img/placeholder_icon.svg new file mode 100644 index 000000000..f6913457d --- /dev/null +++ b/static/img/placeholder_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/plus.svg b/static/img/plus.svg new file mode 100644 index 000000000..98dca5036 --- /dev/null +++ b/static/img/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/plus_bold.svg b/static/img/plus_bold.svg new file mode 100644 index 000000000..b992bd802 --- /dev/null +++ b/static/img/plus_bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/register_success.svg b/static/img/register_success.svg new file mode 100644 index 000000000..271526d75 --- /dev/null +++ b/static/img/register_success.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/search-bold.svg b/static/img/search-bold.svg new file mode 100644 index 000000000..9fe31e469 --- /dev/null +++ b/static/img/search-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/search.svg b/static/img/search.svg new file mode 100644 index 000000000..cbacf3c67 --- /dev/null +++ b/static/img/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/slack.svg b/static/img/slack.svg new file mode 100644 index 000000000..7e70693f8 --- /dev/null +++ b/static/img/slack.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/img/success.svg b/static/img/success.svg new file mode 100644 index 000000000..749adf687 --- /dev/null +++ b/static/img/success.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/table-empty.svg b/static/img/table-empty.svg new file mode 100644 index 000000000..9ee986698 --- /dev/null +++ b/static/img/table-empty.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/img/telegram.svg b/static/img/telegram.svg new file mode 100644 index 000000000..563829711 --- /dev/null +++ b/static/img/telegram.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/token_api.png b/static/img/token_api.png new file mode 100644 index 0000000000000000000000000000000000000000..8078e38d027077c1227ed047819558edd16e8b9e GIT binary patch literal 42831 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 literal 0 HcmV?d00001 diff --git a/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 000000000..af961c49a --- /dev/null +++ b/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg new file mode 100644 index 000000000..94b5cf08f --- /dev/null +++ b/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 000000000..d9161d339 --- /dev/null +++ b/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/warning.svg b/static/img/warning.svg new file mode 100644 index 000000000..80cfc05b2 --- /dev/null +++ b/static/img/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file