[WEB-1970] fix: onboarding invitation page fluctuation on refresh. (#5627)

This commit is contained in:
Prateek Shourya 2024-09-19 17:51:22 +05:30 committed by GitHub
parent 450bb42c46
commit 361ef9236e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 4 additions and 6 deletions

View file

@ -61,6 +61,7 @@ export const CreateOrJoinWorkspaces: React.FC<Props> = observer((props) => {
<div className="flex flex-col w-full items-center justify-center p-8 mt-6"> <div className="flex flex-col w-full items-center justify-center p-8 mt-6">
{currentView === ECreateOrJoinWorkspaceViews.WORKSPACE_JOIN ? ( {currentView === ECreateOrJoinWorkspaceViews.WORKSPACE_JOIN ? (
<Invitations <Invitations
invitations={invitations}
handleNextStep={handleNextStep} handleNextStep={handleNextStep}
handleCurrentViewChange={() => setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_CREATE)} handleCurrentViewChange={() => setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_CREATE)}
/> />

View file

@ -1,14 +1,12 @@
"use client"; "use client";
import React, { useState } from "react"; import React, { useState } from "react";
import useSWR from "swr";;
// types // types
import { IWorkspaceMemberInvitation } from "@plane/types"; import { IWorkspaceMemberInvitation } from "@plane/types";
// ui // ui
import { Button, Checkbox, Spinner } from "@plane/ui"; import { Button, Checkbox, Spinner } from "@plane/ui";
// constants // constants
import { MEMBER_ACCEPTED } from "@/constants/event-tracker"; import { MEMBER_ACCEPTED } from "@/constants/event-tracker";
import { USER_WORKSPACE_INVITATIONS } from "@/constants/fetch-keys";
import { ROLE } from "@/constants/workspace"; import { ROLE } from "@/constants/workspace";
// helpers // helpers
import { truncateText } from "@/helpers/string.helper"; import { truncateText } from "@/helpers/string.helper";
@ -19,13 +17,14 @@ import { useEventTracker, useUserSettings, useWorkspace } from "@/hooks/store";
import { WorkspaceService } from "@/plane-web/services"; import { WorkspaceService } from "@/plane-web/services";
type Props = { type Props = {
invitations: IWorkspaceMemberInvitation[];
handleNextStep: () => Promise<void>; handleNextStep: () => Promise<void>;
handleCurrentViewChange: () => void; handleCurrentViewChange: () => void;
}; };
const workspaceService = new WorkspaceService(); const workspaceService = new WorkspaceService();
export const Invitations: React.FC<Props> = (props) => { export const Invitations: React.FC<Props> = (props) => {
const { handleNextStep, handleCurrentViewChange } = props; const { invitations, handleNextStep, handleCurrentViewChange } = props;
// states // states
const [isJoiningWorkspaces, setIsJoiningWorkspaces] = useState(false); const [isJoiningWorkspaces, setIsJoiningWorkspaces] = useState(false);
const [invitationsRespond, setInvitationsRespond] = useState<string[]>([]); const [invitationsRespond, setInvitationsRespond] = useState<string[]>([]);
@ -34,8 +33,6 @@ export const Invitations: React.FC<Props> = (props) => {
const { fetchWorkspaces } = useWorkspace(); const { fetchWorkspaces } = useWorkspace();
const { fetchCurrentUserSettings } = useUserSettings(); const { fetchCurrentUserSettings } = useUserSettings();
const { data: invitations } = useSWR(USER_WORKSPACE_INVITATIONS, () => workspaceService.userWorkspaceInvitations());
const handleInvitation = (workspace_invitation: IWorkspaceMemberInvitation, action: "accepted" | "withdraw") => { const handleInvitation = (workspace_invitation: IWorkspaceMemberInvitation, action: "accepted" | "withdraw") => {
if (action === "accepted") { if (action === "accepted") {
setInvitationsRespond((prevData) => [...prevData, workspace_invitation.id]); setInvitationsRespond((prevData) => [...prevData, workspace_invitation.id]);