diff --git a/packages/app/src/components/invite-members/index.tsx b/packages/app/src/components/invite-members/index.tsx index 12ee3e406a..2d8ceefccf 100644 --- a/packages/app/src/components/invite-members/index.tsx +++ b/packages/app/src/components/invite-members/index.tsx @@ -10,7 +10,7 @@ import { toast } from '@/ui/toast'; interface LoginModalProps { open: boolean; onClose: () => void; - workSpaceId: string; + workspaceId: string; } export const debounce = any>( fn: T, @@ -41,7 +41,7 @@ const gmailReg = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@gmail\.com$/; export const InviteMembers = ({ open, onClose, - workSpaceId, + workspaceId, }: LoginModalProps) => { const [canInvite, setCanInvite] = useState(true); const [email, setEmail] = useState(''); @@ -55,7 +55,10 @@ export const InviteMembers = ({ setShowTip(false); debounce( () => { - getUserByEmail({ email: value }).then(data => { + getUserByEmail({ + email: value, + workspaceId, + }).then(data => { if (data?.name) { setUserData(data); setShowTip(false); @@ -122,7 +125,7 @@ export const InviteMembers = ({ shape="circle" type="primary" onClick={() => { - inviteMember({ id: workSpaceId, email: email }) + inviteMember({ id: workspaceId, email: email }) .then(() => { onClose(); }) diff --git a/packages/app/src/components/workspace-setting/workspace-setting.tsx b/packages/app/src/components/workspace-setting/workspace-setting.tsx index 1a8f79d566..48e43ee3ae 100644 --- a/packages/app/src/components/workspace-setting/workspace-setting.tsx +++ b/packages/app/src/components/workspace-setting/workspace-setting.tsx @@ -207,7 +207,7 @@ const MembersPage = ({ workspace }: { workspace: Workspace }) => { onClose={() => { setIsInviteModalShow(false); }} - workSpaceId={workspace.id} + workspaceId={workspace.id} open={isInviteModalShow} > diff --git a/packages/app/src/pages/invite/Icon.png b/packages/app/src/pages/invite/Icon.png deleted file mode 100644 index 15dea37003..0000000000 Binary files a/packages/app/src/pages/invite/Icon.png and /dev/null differ diff --git a/packages/app/src/pages/invite/[invite_code].tsx b/packages/app/src/pages/invite/[invite_code].tsx new file mode 100644 index 0000000000..be1e6a8c2e --- /dev/null +++ b/packages/app/src/pages/invite/[invite_code].tsx @@ -0,0 +1,132 @@ +import { styled } from '@/styles'; +import { Empty } from '@/ui/empty'; +import { Avatar } from '@mui/material'; +import { acceptInviting } from '@pathfinder/data-services'; +import { useRouter } from 'next/router'; +import { useState } from 'react'; + +const User = ({ name, avatar }: { name: string; avatar?: string }) => { + return ( + + {avatar ? ( + + ) : ( + {name.slice(0, 1)} + )} + {name} + + ); +}; + +export default function DevPage() { + const router = useRouter(); + const [successInvited, setSuccessInvited] = useState(false); + acceptInviting({ invitingCode: router.query.invite_code as string }) + .then(data => { + setSuccessInvited(true); + }) + .catch(err => {}); + return ( + +
+ + + invited you to join + + {successInvited ? ( + + + + + + Successfully joined + + ) : ( + + + + + + The link has expired + + )} + +
+
+ ); +} +const UserIcon = styled('div')({ + display: 'inline-block', + width: '28px', + height: '28px', + borderRadius: '50%', + backgroundColor: '#FFF5AB', + textAlign: 'center', + color: '#896406', + lineHeight: '28px', +}); + +const Invited = styled('div')(({ theme }) => { + return { + height: '100vh', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + textAlign: 'center', + color: theme.colors.textColor, + backgroundColor: theme.colors.pageBackground, + }; +}); + +const Content = styled('div')({ + fontSize: '16px', + marginTop: '35px', +}); + +const UserContent = styled('span')({ + fontSize: '18px', + marginLeft: '12px', + span: { + padding: '0 12px', + }, +}); + +const Status = styled('div')(({ theme }) => { + return { + marginTop: '16px', + svg: { + verticalAlign: 'middle', + marginRight: '12px', + }, + }; +}); diff --git a/packages/app/src/pages/invite/index.tsx b/packages/app/src/pages/invite/index.tsx deleted file mode 100644 index e40c0f1b0f..0000000000 --- a/packages/app/src/pages/invite/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import Icon from './Icon.png'; -import { styled } from '@/styles'; - -const User = ({ name, avatar }: { name: string; avatar?: string }) => { - return ( - - {name.slice(0, 1)} {name} - - ); -}; - -export default function DevPage() { - return ( - -
- - - invited you to join - -

Successfully joined

-
-
-
- ); -} - -const ImageStyle = styled('img')({ - width: '400px', - height: '400px', -}); - -const UserIcon = styled('span')({ - display: 'inline-block', - width: '28px', - height: '28px', - borderRadius: '50%', - backgroundColor: '#FFF5AB', - textAlign: 'center', - color: '#896406', - lineHeight: '28px', -}); - -const Invited = styled('div')({ - height: '100vh', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - textAlign: 'center', -}); - -const Content = styled('div')({ - fontSize: '16px', -}); - -const UserContent = styled('span')({ - fontSize: '18px', - margin: '0 5px', -}); - -const InviteStatus = styled('div')({ - fontSize: '16px', - marginTop: '16px', -}); diff --git a/packages/data-services/src/sdks/user.ts b/packages/data-services/src/sdks/user.ts index d91babb5b3..ecc9a4e5f4 100644 --- a/packages/data-services/src/sdks/user.ts +++ b/packages/data-services/src/sdks/user.ts @@ -38,6 +38,7 @@ export async function login(params: LoginParams): Promise { export interface GetUserByEmailParams { email: string; + workspaceId: string; } export interface User { diff --git a/tests/exception-page.spec.ts b/tests/exception-page.spec.ts new file mode 100644 index 0000000000..3512934e9c --- /dev/null +++ b/tests/exception-page.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test'; +import { loadPage } from './libs/load-page'; + +loadPage(); + +// ps aux | grep 8080 +test.describe('exception page', () => { + test('bisit 404 page', async ({ page }) => { + await page.goto('http://localhost:8080/404'); + await page.waitForTimeout(300); + const notFoundTipDom = await page.getByText('404 - Page Not Found'); + + await expect(await notFoundTipDom.isVisible()).toBe(true); + }); +});