Use fetched project members data in members tab panel (#25)

* Use fetched project members data in members tab panel

* Handle review changes

---------

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
This commit is contained in:
prathamesh0 2024-01-19 10:54:52 +05:30 committed by Ashwin Phatak
parent d2187cbec2
commit d2d26885ce
3 changed files with 21 additions and 31 deletions

View File

@ -9,17 +9,17 @@ import {
IconButton,
} from '@material-tailwind/react';
import { Member } from '../../../../types/project';
import ConfirmDialog from '../../../shared/ConfirmDialog';
import { Member } from '../../../../types/project';
const PERMISSION_OPTIONS = [
{
label: 'View only',
value: 'view',
value: 'View',
},
{
label: 'View and edit',
value: 'view+edit',
value: 'View+Edit',
},
];

View File

@ -1,12 +1,10 @@
import React, { useCallback, useMemo, useState } from 'react';
import { useParams } from 'react-router-dom';
import { useOutletContext, useParams } from 'react-router-dom';
import toast, { Toaster } from 'react-hot-toast';
import { Chip, Button, Typography } from '@material-tailwind/react';
import MemberCard from './MemberCard';
import membersData from '../../../../assets/members.json';
import projectData from '../../../../assets/projects.json';
import { Member } from '../../../../types/project';
import AddMemberDialog from './AddMemberDialog';
@ -17,30 +15,16 @@ const MembersTabPanel = () => {
const { id } = useParams();
const [addmemberDialogOpen, setAddMemberDialogOpen] = useState(false);
// @ts-expect-error create context type for projects
const { projects } = useOutletContext();
const currProject = useMemo(() => {
return projectData.find((data) => data.id === Number(id));
return projects.find((project: any) => project.id === id);
}, [id]);
const members = useMemo(() => {
return membersData.filter(
(member) =>
currProject?.members.some(
(projectMember) => projectMember.id === member.id,
),
);
}, [currProject]);
const [updatedMembers, setUpdatedMembers] = useState([...members]);
const getMemberPermissions = useCallback(
(id: number) => {
return (
currProject?.members.find((projectMember) => projectMember.id === id)
?.permissions || []
);
},
[updatedMembers],
);
const [updatedMembers, setUpdatedMembers] = useState([
...currProject?.members,
]);
const addMemberHandler = useCallback((member: Member) => {
setUpdatedMembers((val) => [...val, member]);
@ -69,15 +53,15 @@ const MembersTabPanel = () => {
</Button>
</div>
</div>
{(updatedMembers as Member[]).map((member, index) => {
{updatedMembers.map((member, index) => {
return (
<MemberCard
member={member}
member={member.member}
key={member.id}
isFirstCard={index === FIRST_MEMBER_CARD}
isOwner={member.id === currProject?.ownerId}
isOwner={member.member.id === currProject?.owner.id}
isPending={member.name === ''}
permissions={getMemberPermissions(member.id)}
permissions={member.permissions}
handleDeletePendingMember={(id: number) => {
setUpdatedMembers(
updatedMembers.filter((member) => member.id !== id),

View File

@ -35,6 +35,12 @@ query {
webhooks
members {
id
permissions
member{
id
name
email
}
}
environmentVariables {
id