chore: minor improvements related to members dropdown and project member list (#6340)

This commit is contained in:
Prateek Shourya 2025-01-07 15:04:10 +05:30 committed by GitHub
parent 906d095a1e
commit 5b96c970cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 7 deletions

View file

@ -24,6 +24,7 @@ type Props = {
onClose?: () => void;
renderByDefault?: boolean;
optionsClassName?: string;
memberIds?: string[];
} & MemberDropdownProps;
export const MemberDropdown: React.FC<Props> = observer((props) => {
@ -52,6 +53,7 @@ export const MemberDropdown: React.FC<Props> = observer((props) => {
value,
icon,
renderByDefault = true,
memberIds,
} = props;
// states
const [isOpen, setIsOpen] = useState(false);
@ -169,6 +171,7 @@ export const MemberDropdown: React.FC<Props> = observer((props) => {
>
{isOpen && (
<MemberOptions
memberIds={memberIds}
optionsClassName={optionsClassName}
isOpen={isOpen}
projectId={projectId}

View file

@ -20,6 +20,7 @@ import { usePlatformOS } from "@/hooks/use-platform-os";
import { EUserPermissions } from "@/plane-web/constants";
interface Props {
memberIds?: string[];
className?: string;
optionsClassName?: string;
projectId?: string;
@ -29,7 +30,7 @@ interface Props {
}
export const MemberOptions: React.FC<Props> = observer((props: Props) => {
const { projectId, referenceElement, placement, isOpen, optionsClassName = "" } = props;
const { memberIds: propsMemberIds, projectId, referenceElement, placement, isOpen, optionsClassName = "" } = props;
// states
const [query, setQuery] = useState("");
const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null);
@ -67,7 +68,7 @@ export const MemberOptions: React.FC<Props> = observer((props: Props) => {
}
}, [isOpen, isMobile]);
const memberIds = projectId ? getProjectMemberIds(projectId) : workspaceMemberIds;
const memberIds = propsMemberIds ? propsMemberIds : projectId ? getProjectMemberIds(projectId) : workspaceMemberIds;
const onOpen = () => {
if (!memberIds && workspaceSlug && projectId) fetchProjectMembers(workspaceSlug.toString(), projectId);
};

View file

@ -38,9 +38,9 @@ export const ProjectMemberListItem: React.FC<Props> = observer((props) => {
if (!workspaceSlug || !projectId || !memberId) return;
if (memberId === currentUser?.id) {
router.push(`/${workspaceSlug}/projects`);
await leaveProject(workspaceSlug.toString(), projectId.toString())
.then(async () => {
router.push(`/${workspaceSlug}/projects`);
captureEvent(PROJECT_MEMBER_LEAVE, {
state: "SUCCESS",
element: "Project settings members page",
@ -50,7 +50,7 @@ export const ProjectMemberListItem: React.FC<Props> = observer((props) => {
.catch((err) =>
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
title: "You cant leave this project yet.",
message: err?.error || "Something went wrong. Please try again.",
})
);
@ -58,14 +58,13 @@ export const ProjectMemberListItem: React.FC<Props> = observer((props) => {
await removeMemberFromProject(workspaceSlug.toString(), projectId.toString(), memberId).catch((err) =>
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
title: "You cant remove the member from this project yet.",
message: err?.error || "Something went wrong. Please try again.",
})
);
};
if (!memberDetails) return null;
removeMemberModal && console.log("removeMemberModal", JSON.parse(JSON.stringify(removeMemberModal?.member)));
return (
<>
{removeMemberModal && (

View file

@ -154,7 +154,7 @@ export const AccountTypeColumn: React.FC<AccountTypeProps> = observer((props) =>
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
title: "You cant change this role yet.",
message: errorString ?? "An error occurred while updating member role. Please try again.",
});
});