[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 <prateekshourya29@gmail.com>
This commit is contained in:
parent
2792d48288
commit
a0a45b7916
5 changed files with 19 additions and 11 deletions
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
|||
<div className={`h-screen w-full overflow-hidden bg-custom-background-100`}>
|
||||
<div className="grid h-full place-items-center p-4">
|
||||
<div className="space-y-8 text-center">
|
||||
<div className="space-y-2 relative flex flex-col justify-center items-center">
|
||||
<div className="space-y-2 relative flex flex-col justify-center items-center">
|
||||
<h3 className="text-lg font-semibold">Yikes! That doesn{"'"}t look good.</h3>
|
||||
<p className="mx-auto md:w-1/2 text-sm text-custom-text-200">
|
||||
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() {
|
|||
</p>
|
||||
</div>
|
||||
<div className="flex items-center justify-center gap-2">
|
||||
<Button variant="primary" size="md" onClick={handleRefresh}>
|
||||
Refresh
|
||||
</Button>
|
||||
<Link href="/" className={cn(getButtonStyling("primary", "md"))}>
|
||||
Go to home
|
||||
</Link>
|
||||
<Button variant="neutral-primary" size="md" onClick={handleSignOut}>
|
||||
Sign out
|
||||
</Button>
|
||||
|
|
|
|||
|
|
@ -72,10 +72,9 @@ export const SettingsHeader = observer(() => {
|
|||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<div className="flex flex-col gap-2">
|
||||
<div className="flex flex-col gap-1.5">
|
||||
{/* Description */}
|
||||
<div className="text-custom-text-100 font-semibold text-2xl">{t("settings")}</div>
|
||||
{!isScrolled && <div className="text-custom-text-200 text-base">{t("settings_description")}</div>}
|
||||
{/* Actions */}
|
||||
<SettingsTabs />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ const SettingsTabs = observer(() => {
|
|||
: TABS.workspace;
|
||||
|
||||
return (
|
||||
<div className="flex w-fit min-w-fit items-center justify-between gap-1.5 rounded-md text-sm p-0.5 bg-custom-background-80 mt-2">
|
||||
<div className="flex w-fit min-w-fit items-center justify-between gap-1.5 rounded-md text-sm p-0.5 bg-custom-background-80">
|
||||
{Object.values(TABS).map((tab) => {
|
||||
const isActive = currentTab?.key === tab.key;
|
||||
const href = tab.key === TABS.projects.key ? `${tab.href}${joinedProjectIds[0] || ""}` : tab.href;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue