Skip to content

Commit

Permalink
feat(web-ui): add page to create new chat
Browse files Browse the repository at this point in the history
  • Loading branch information
Johan Book authored and Johan Book committed Jul 13, 2024
1 parent 2d2acd2 commit e402098
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 1 deletion.
5 changes: 5 additions & 0 deletions services/web-ui/src/Router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { BlogPostListPage } from "src/features/blogs/pages/BlogPostListPage";
import { BlogPostPage } from "src/features/blogs/pages/BlogPostPage";
import { ChatListPage } from "src/features/chat/pages/ChatListPage";
import { ChatPage } from "src/features/chat/pages/ChatPage";
import { CreateChatPage } from "src/features/chat/pages/CreateChatPage";

Check warning on line 11 in services/web-ui/src/Router.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/Router.tsx#L9-L11

Added lines #L9 - L11 were not covered by tests
import { CreateOrganizationPage } from "src/pages/CreateOrganizationPage";
import { CurrentOrganizationPage } from "src/pages/CurrentOrganizationPage";
import { CurrentProfilePage } from "src/pages/CurrentProfilePage";
Expand Down Expand Up @@ -46,6 +47,10 @@ const router = createBrowserRouter([
path: "/chat",
element: <ChatListPage />,
},
{
path: "/chat/create",
element: <CreateChatPage />,
},
{
path: "/chat/:id",
element: <ChatPage />,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export function ChatListPageContainer(): ReactElement {
const { t } = useTranslation("connections");

const { error, data, isPending } = useQuery({
queryKey: ["chat-conversations"],
queryKey: ["chats"],
queryFn: () => chatsApi.getConversations(),
});

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { ReactElement, useState } from "react";

Check warning on line 1 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L1

Added line #L1 was not covered by tests

import { Autocomplete, TextField } from "@mui/material";

Check warning on line 3 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L3

Added line #L3 was not covered by tests

import { chatsApi, organizationsApi } from "src/apis";
import { Button } from "src/components/ui";
import { useMutation, useQuery } from "src/core/query";
import { ErrorView } from "src/views/ErrorView";

Check warning on line 8 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L5-L8

Added lines #L5 - L8 were not covered by tests

import { CreateChatPageNav } from "./CreateChatPage.nav";
import { CreateChatPageSkeleton } from "./CreateChatPage.skeleton";

Check warning on line 11 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L10-L11

Added lines #L10 - L11 were not covered by tests

interface Option {
id: number;
label: string;
}

export function CreateChatPageContainer(): ReactElement {
const { error, data, isPending } = useQuery({

Check warning on line 19 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L18-L19

Added lines #L18 - L19 were not covered by tests
queryKey: ["members"],
queryFn: () => organizationsApi.getCurrentOrganizationMembers(),

Check warning on line 21 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L21

Added line #L21 was not covered by tests
});

const [members, setMembers] = useState<Option[]>([]);

Check warning on line 24 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L24

Added line #L24 was not covered by tests

const createChatMutation = useMutation({
mutationFn: () => chatsApi.getConversations(),

Check warning on line 27 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L26-L27

Added lines #L26 - L27 were not covered by tests
});

if (error) {
return (

Check warning on line 31 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L31

Added line #L31 was not covered by tests
<CreateChatPageNav>
<ErrorView />
</CreateChatPageNav>
);
}

if (isPending) {
return (

Check warning on line 39 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L39

Added line #L39 was not covered by tests
<CreateChatPageNav>
<CreateChatPageSkeleton />
</CreateChatPageNav>
);
}

const options = data.map((x) => ({ id: x.id, label: x.name }));

Check warning on line 46 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L46

Added line #L46 was not covered by tests

return (

Check warning on line 48 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L48

Added line #L48 was not covered by tests
<CreateChatPageNav>
<Autocomplete
multiple
onChange={(_, newValue) => setMembers(newValue)}

Check warning on line 52 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L52

Added line #L52 was not covered by tests
options={options}
renderInput={(params) => <TextField label="Members" {...params} />}

Check warning on line 54 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L54

Added line #L54 was not covered by tests
value={members}
/>

<Button
disabled={members.length === 0}
loading={createChatMutation.isPending}
onClick={() => createChatMutation.mutate()}

Check warning on line 61 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.container.tsx#L61

Added line #L61 was not covered by tests
sx={{ mt: 2 }}
variant="contained"
>
Create
</Button>
</CreateChatPageNav>
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { ReactElement, ReactNode } from "react";

import { Box } from "@mui/material";

Check warning on line 3 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx#L3

Added line #L3 was not covered by tests

interface CreateChatPageNavProps {
children: ReactNode;
}

export function CreateChatPageNav({

Check warning on line 9 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx#L9

Added line #L9 was not covered by tests
children,
}: CreateChatPageNavProps): ReactElement {
return <Box sx={{ p: 2 }}>{children}</Box>;

Check warning on line 12 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.nav.tsx#L11-L12

Added lines #L11 - L12 were not covered by tests
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ReactElement } from "react";

export function CreateChatPageSkeleton(): ReactElement {
return <>Loading...</>;

Check warning on line 4 in services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.skeleton.tsx

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/CreateChatPage.skeleton.tsx#L3-L4

Added lines #L3 - L4 were not covered by tests
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { CreateChatPageContainer as CreateChatPage } from "./CreateChatPage.container";

Check warning on line 1 in services/web-ui/src/features/chat/pages/CreateChatPage/index.ts

View check run for this annotation

Codecov / codecov/patch

services/web-ui/src/features/chat/pages/CreateChatPage/index.ts#L1

Added line #L1 was not covered by tests

0 comments on commit e402098

Please sign in to comment.