From a0a45b791690a4c75d841c2fab52c96e5a1bac48 Mon Sep 17 00:00:00 2001 From: Akshita Goyal <36129505+gakshita@users.noreply.github.com> Date: Wed, 4 Jun 2025 16:38:35 +0530 Subject: [PATCH] [WEB-4249] fix: settings header css + cta on error page + project member list (#7159) * fix: settings header css + cta on error page * [WEB-4249] fix: filter out inactive workspace members from project member list --------- Co-authored-by: Prateek Shourya --- apiserver/plane/app/views/project/member.py | 8 +++++++- apiserver/plane/app/views/workspace/member.py | 5 +++-- web/app/error.tsx | 12 +++++++----- web/core/components/settings/header.tsx | 3 +-- web/core/components/settings/tabs.tsx | 2 +- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/apiserver/plane/app/views/project/member.py b/apiserver/plane/app/views/project/member.py index 7b910509c..60d960fe5 100644 --- a/apiserver/plane/app/views/project/member.py +++ b/apiserver/plane/app/views/project/member.py @@ -168,6 +168,8 @@ class ProjectMemberViewSet(BaseViewSet): workspace__slug=slug, member__is_bot=False, is_active=True, + member__member_workspace__workspace__slug=slug, + member__member_workspace__is_active=True, ).select_related("project", "member", "workspace") serializer = ProjectMemberRoleSerializer( @@ -313,7 +315,11 @@ class UserProjectRolesEndpoint(BaseAPIView): def get(self, request, slug): project_members = ProjectMember.objects.filter( - workspace__slug=slug, member_id=request.user.id, is_active=True + workspace__slug=slug, + member_id=request.user.id, + is_active=True, + member__member_workspace__workspace__slug=slug, + member__member_workspace__is_active=True, ).values("project_id", "role") project_members = { diff --git a/apiserver/plane/app/views/workspace/member.py b/apiserver/plane/app/views/workspace/member.py index 5dde2f78c..eda7c34fd 100644 --- a/apiserver/plane/app/views/workspace/member.py +++ b/apiserver/plane/app/views/workspace/member.py @@ -1,5 +1,6 @@ # Django imports from django.db.models import Count, Q, OuterRef, Subquery, IntegerField +from django.utils import timezone from django.db.models.functions import Coalesce # Third party modules @@ -133,7 +134,7 @@ class WorkSpaceMemberViewSet(BaseViewSet): # Deactivate the users from the projects where the user is part of _ = ProjectMember.objects.filter( workspace__slug=slug, member_id=workspace_member.member_id, is_active=True - ).update(is_active=False) + ).update(is_active=False, updated_at=timezone.now()) workspace_member.is_active = False workspace_member.save() @@ -194,7 +195,7 @@ class WorkSpaceMemberViewSet(BaseViewSet): # # Deactivate the users from the projects where the user is part of _ = ProjectMember.objects.filter( workspace__slug=slug, member_id=workspace_member.member_id, is_active=True - ).update(is_active=False) + ).update(is_active=False, updated_at=timezone.now()) # # Deactivate the user workspace_member.is_active = False diff --git a/web/app/error.tsx b/web/app/error.tsx index b176799b4..348bc6b64 100644 --- a/web/app/error.tsx +++ b/web/app/error.tsx @@ -1,8 +1,10 @@ "use client"; // ui -import { Button, TOAST_TYPE, setToast } from "@plane/ui"; +import Link from "next/link"; +import { Button, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui"; // helpers +import { cn } from "@plane/utils"; import { API_BASE_URL } from "@/helpers/common.helper"; // hooks import { useAppRouter } from "@/hooks/use-app-router"; @@ -39,7 +41,7 @@ export default function CustomErrorComponent() {
-
+

Yikes! That doesn{"'"}t look good.

That crashed Plane, pun intended. No worries, though. Our engineers have been notified. If you have more @@ -60,9 +62,9 @@ export default function CustomErrorComponent() {

- + + Go to home + diff --git a/web/core/components/settings/header.tsx b/web/core/components/settings/header.tsx index 0dbee0995..0beb28c93 100644 --- a/web/core/components/settings/header.tsx +++ b/web/core/components/settings/header.tsx @@ -72,10 +72,9 @@ export const SettingsHeader = observer(() => {
-
+
{/* Description */}
{t("settings")}
- {!isScrolled &&
{t("settings_description")}
} {/* Actions */}
diff --git a/web/core/components/settings/tabs.tsx b/web/core/components/settings/tabs.tsx index 59f6aee1f..286d6c097 100644 --- a/web/core/components/settings/tabs.tsx +++ b/web/core/components/settings/tabs.tsx @@ -36,7 +36,7 @@ const SettingsTabs = observer(() => { : TABS.workspace; return ( -
+
{Object.values(TABS).map((tab) => { const isActive = currentTab?.key === tab.key; const href = tab.key === TABS.projects.key ? `${tab.href}${joinedProjectIds[0] || ""}` : tab.href;