Skip to content

Commit b21c23b

Browse files
alsakhaevNi-2
andauthored
feat: teaser page for connected accounts (DAP-4807) (#50)
* test: recover Switch Mutation test * fix: change Switch Mutation test for overlay flow * feat: add routing to the Overlay; add Profile page * refactor: imports optimization --------- Co-authored-by: Nikita Teremovskiy <ni-2@mail.ru>
1 parent 7f78b0f commit b21c23b

File tree

22 files changed

+439
-217
lines changed

22 files changed

+439
-217
lines changed

apps/extension/playwright.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default {
1818
use: { ...devices['Desktop Chrome'], channel: 'chromium' },
1919
},
2020
],
21+
timeout: 60000,
2122
// webServer: [
2223
// {
2324
// command: 'npm run modules',

apps/extension/src/contentscript/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { NetworkId, setupWalletSelector } from '@near-wallet-selector/core'
2-
import { EventEmitter as NEventEmitter } from 'events'
3-
import { customElements, MutableWebProvider, ShadowDomWrapper } from '@mweb/engine'
41
import { EngineConfig } from '@mweb/backend'
2+
import { customElements, MutableWebProvider, ShadowDomWrapper } from '@mweb/engine'
3+
import { setupWalletSelector } from '@near-wallet-selector/core'
4+
import { EventEmitter as NEventEmitter } from 'events'
55
import { useInitNear } from 'near-social-vm'
66
import React, { FC, useEffect } from 'react'
77
import { createRoot } from 'react-dom/client'
88
import browser from 'webextension-polyfill'
9-
import { NearNetworkId, networkConfigs } from '../common/networks'
109
import Background from '../common/background'
10+
import { NearNetworkId, networkConfigs } from '../common/networks'
1111
import { ExtensionStorage } from './extension-storage'
1212
import { MultitablePanel } from './multitable-panel/multitable-panel'
1313
import { setupWallet } from './wallet'

apps/extension/src/contentscript/multitable-panel/components/dropdown.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { EyeFilled, EyeInvisibleFilled } from '@ant-design/icons'
2+
import { EntitySourceType } from '@mweb/backend'
3+
import { useMutableWeb } from '@mweb/engine'
14
import React, { DetailedHTMLProps, FC, HTMLAttributes, useMemo, useState } from 'react'
25
import {
36
OpenList,
@@ -6,15 +9,12 @@ import {
69
SelectedMutationDescription,
710
SelectedMutationId,
811
SelectedMutationInfo,
12+
SpanStyled,
913
StarSelectedMutationWrapper,
1014
WrapperDropdown,
11-
SpanStyled,
1215
} from '../assets/styles-dropdown'
1316
import { IconDropdown, StarSelectMutation, StarSelectMutationDefault } from '../assets/vectors'
14-
import { useMutableWeb } from '@mweb/engine'
15-
import { EntitySourceType } from '@mweb/backend'
1617
import { Badge } from './badge'
17-
import { EyeFilled, EyeInvisibleFilled } from '@ant-design/icons'
1818
import { MutationVersionDropdown } from './mutation-version-dropdown'
1919

2020
export type DropdownProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {

apps/extension/src/contentscript/multitable-panel/multitable-panel.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
import { EventEmitter as NEventEmitter } from 'events'
1+
import { EntitySourceType } from '@mweb/backend'
22
import { useMutableWeb } from '@mweb/engine'
3+
import { EventEmitter as NEventEmitter } from 'events'
34
import React, { FC, useEffect, useRef, useState } from 'react'
45
import Draggable from 'react-draggable'
56
import styled from 'styled-components'
7+
import { NearNetworkId } from '../../common/networks'
68
import { getIsPanelUnpinned, removePanelUnpinnedFlag, setPanelUnpinnedFlag } from '../storage'
79
import { PinOutlineIcon, PinSolidIcon } from './assets/vectors'
810
import { Dropdown } from './components/dropdown'
911
import { MutationEditorModal } from './components/mutation-editor-modal'
1012
import MutableOverlayContainer from './mutable-overlay-container'
11-
import { NearNetworkId } from '../../common/networks'
12-
import { EntitySourceType } from '@mweb/backend'
1313

1414
const WrapperPanel = styled.div<{ $isAnimated?: boolean }>`
1515
// Global Styles
@@ -116,7 +116,7 @@ interface MultitablePanelProps {
116116

117117
export const MultitablePanel: FC<MultitablePanelProps> = ({ eventEmitter }) => {
118118
const { mutations, allApps, selectedMutation, config } = useMutableWeb()
119-
const [isDropdownVisible, setIsDropdownVisible] = useState(false)
119+
const [isOverlayOpened, setIsOverlayOpened] = useState(false)
120120
const [isPin, setPin] = useState(!getIsPanelUnpinned())
121121
const [isDragging, setIsDragging] = useState(false)
122122
const [isNotchDisplayed, setIsNotchDisplayed] = useState(true)
@@ -160,7 +160,7 @@ export const MultitablePanel: FC<MultitablePanelProps> = ({ eventEmitter }) => {
160160

161161
const handleMutateButtonClick = () => {
162162
setIsModalOpen(true)
163-
setIsDropdownVisible(false)
163+
setIsOverlayOpened(false)
164164
}
165165

166166
const handleModalClose = () => {
@@ -176,8 +176,8 @@ export const MultitablePanel: FC<MultitablePanelProps> = ({ eventEmitter }) => {
176176
notchRef={notchRef}
177177
networkId={config.networkId as NearNetworkId}
178178
eventEmitter={eventEmitter}
179-
setOpen={setIsDropdownVisible}
180-
open={isDropdownVisible}
179+
setOpen={setIsOverlayOpened}
180+
open={isOverlayOpened}
181181
handleMutateButtonClick={handleMutateButtonClick}
182182
/>
183183
<WrapperPanel $isAnimated={!isDragging} data-testid="mutation-panel">
@@ -206,12 +206,12 @@ export const MultitablePanel: FC<MultitablePanelProps> = ({ eventEmitter }) => {
206206
className={
207207
isPin
208208
? 'visible-pin'
209-
: isNotchDisplayed || isDropdownVisible || isDragging
209+
: isNotchDisplayed || isOverlayOpened || isDragging
210210
? 'visible-default'
211211
: 'visible-notch'
212212
}
213213
$isAnimated={!isDragging}
214-
$isOpen={isDropdownVisible}
214+
$isOpen={isOverlayOpened}
215215
ref={notchRef}
216216
>
217217
<NotchButtonWrapper className="dragWrapper">
@@ -220,8 +220,8 @@ export const MultitablePanel: FC<MultitablePanelProps> = ({ eventEmitter }) => {
220220
</IconWrapper>
221221
</NotchButtonWrapper>
222222
<Dropdown
223-
isVisible={isDropdownVisible}
224-
onVisibilityChange={setIsDropdownVisible}
223+
isVisible={isOverlayOpened}
224+
onVisibilityChange={setIsOverlayOpened}
225225
onMutateButtonClick={handleMutateButtonClick}
226226
/>
227227
<NotchButtonWrapper onClick={handlePin}>

apps/extension/src/contentscript/multitable-panel/mutable-overlay-container.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { EventEmitter as NEventEmitter } from 'events'
2-
import { useMutableWeb, useMutationApp } from '@mweb/engine'
31
import { AppInstanceWithSettings } from '@mweb/backend'
2+
import { useMutableWeb, useMutationApp } from '@mweb/engine'
43
import { AppSwitcher, MiniOverlay } from '@mweb/shared-components'
5-
import React, { useState } from 'react'
4+
import { EventEmitter as NEventEmitter } from 'events'
5+
import React from 'react'
66
import Background from '../../common/background'
77
import { NearNetworkId } from '../../common/networks'
88

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { expect, test } from '../fixtures/browser'
2+
3+
// ToDo: qase mw-1
4+
test('open Profile page through the button in Mini Overlay', async ({ page }) => {
5+
const url = 'https://github.com/dapplets/dapplet-extension/pull/217'
6+
7+
await page.goto(url)
8+
9+
// ToDo: move to POM
10+
await expect(page.getByTestId('mweb-overlay')).toBeVisible({ timeout: 60_000 })
11+
12+
// actions
13+
await page.getByTestId('profile-action-button').click()
14+
15+
// results
16+
await expect(page.getByTestId('side-panel')).toBeVisible()
17+
await expect(page.getByTestId('profile-page')).toBeVisible()
18+
})

apps/extension/tests/scenarios/switch-mutation.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ test('switch mutation', async ({ page }) => {
1111
await page.goto(url)
1212

1313
// ToDo: move to POM
14-
await expect(page.getByTestId('mweb-overlay')).toBeVisible({ timeout: 30_000 })
14+
await expect(page.getByTestId('mweb-overlay')).toBeVisible({ timeout: 60_000 })
1515
await page.getByTestId('mutation-button').click()
1616
await expect(page.getByTestId('side-panel')).toBeVisible()
1717
await expect(page.getByTestId('side-panel').getByTestId('recently-used-mutations')).toContainText(

libs/engine/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838
},
3939
"dependencies": {
4040
"@ant-design/cssinjs": "^1.21.0",
41+
"@mweb/backend": "workspace:*",
4142
"@mweb/core": "workspace:*",
4243
"@mweb/react": "workspace:*",
43-
"@mweb/backend": "workspace:*",
4444
"antd": "^5.18.3",
4545
"big.js": "^6.2.1",
4646
"caching-decorator": "^1.0.3",

libs/shared-components/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,18 @@
2727
"styled-components": "^5.3.6"
2828
},
2929
"dependencies": {
30+
"@ant-design/icons": "5.5.1",
3031
"@codemirror/state": "^6.4.1",
31-
"@mweb/engine": "workspace:*",
3232
"@mweb/backend": "workspace:*",
33+
"@mweb/engine": "workspace:*",
3334
"@uiw/codemirror-extensions-langs": "^4.23.3",
3435
"@uiw/react-codemirror": "^4.23.3",
3536
"antd": "^5.18.3",
36-
"@ant-design/icons": "5.5.1",
3737
"codemirror": "^6.0.1",
3838
"ethereum-blockies-base64": "^1.0.2",
3939
"json-stringify-deterministic": "^1.0.12",
4040
"react-codemirror-merge": "^4.23.3",
41-
"react-diff-viewer": "^3.1.1"
41+
"react-diff-viewer": "^3.1.1",
42+
"react-router": "^7.0.2"
4243
}
4344
}

libs/shared-components/src/mini-overlay/assets/icons/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Disconnect from './disconnect'
1212
import OpenOverlay from './open-overlay'
1313
import OpenOverlayWithCircle from './open-overlay-with-circle'
1414
import Logo from './logo'
15+
import PersonAddAlt from './person-add-alt'
1516

1617
export {
1718
MutationFallbackIcon,
@@ -28,4 +29,5 @@ export {
2829
OpenOverlay,
2930
OpenOverlayWithCircle,
3031
Logo,
32+
PersonAddAlt,
3133
}

0 commit comments

Comments
 (0)