fix: alert box state

This commit is contained in:
LAKHAN BAHETI 2023-12-04 18:47:24 +05:30
parent 85d295b21d
commit fa4e87238a
5 changed files with 17 additions and 11 deletions

View File

@ -2,7 +2,6 @@ import { ChangeEvent, FC, useCallback, useEffect, useState } from "react";
import { Controller, useForm } from "react-hook-form"; import { Controller, useForm } from "react-hook-form";
import { useMobxStore } from "lib/mobx/store-provider"; import { useMobxStore } from "lib/mobx/store-provider";
// hooks // hooks
import useReloadConfirmations from "hooks/use-reload-confirmation";
import debounce from "lodash/debounce"; import debounce from "lodash/debounce";
// components // components
import { TextArea } from "@plane/ui"; import { TextArea } from "@plane/ui";
@ -27,12 +26,13 @@ export interface IssueDetailsProps {
workspaceSlug: string; workspaceSlug: string;
handleFormSubmit: (value: IssueDescriptionFormValues) => Promise<void>; handleFormSubmit: (value: IssueDescriptionFormValues) => Promise<void>;
isAllowed: boolean; isAllowed: boolean;
setShowAlert: (value: boolean) => void;
} }
const fileService = new FileService(); const fileService = new FileService();
export const IssueDescriptionForm: FC<IssueDetailsProps> = (props) => { export const IssueDescriptionForm: FC<IssueDetailsProps> = (props) => {
const { issue, handleFormSubmit, workspaceSlug, isAllowed } = props; const { issue, handleFormSubmit, workspaceSlug, isAllowed,setShowAlert } = props;
// states // states
const [characterLimit, setCharacterLimit] = useState(false); const [characterLimit, setCharacterLimit] = useState(false);
@ -41,7 +41,6 @@ export const IssueDescriptionForm: FC<IssueDetailsProps> = (props) => {
projectIssues: { setIsSubmitting }, projectIssues: { setIsSubmitting },
} = useMobxStore(); } = useMobxStore();
const { setShowAlert } = useReloadConfirmations();
const editorSuggestion = useEditorSuggestions(); const editorSuggestion = useEditorSuggestions();
const { const {
@ -87,7 +86,7 @@ export const IssueDescriptionForm: FC<IssueDetailsProps> = (props) => {
}, [issue, reset]); }, [issue, reset]);
const debouncedFormSave = debounce(async () => { const debouncedFormSave = debounce(async () => {
handleSubmit(handleDescriptionFormSubmit)().finally(() => setIsSubmitting("submitted")); handleSubmit(handleDescriptionFormSubmit)();
}, 1500); }, 1500);
return ( return (

View File

@ -7,7 +7,6 @@ import { TextArea } from "@plane/ui";
import { IssueReaction } from "./reactions"; import { IssueReaction } from "./reactions";
// hooks // hooks
import debounce from "lodash/debounce"; import debounce from "lodash/debounce";
import useReloadConfirmations from "hooks/use-reload-confirmation";
import useEditorSuggestions from "hooks/use-editor-suggestions"; import useEditorSuggestions from "hooks/use-editor-suggestions";
// types // types
import { IIssue } from "types"; import { IIssue } from "types";
@ -25,14 +24,15 @@ interface IPeekOverviewIssueDetails {
issueUpdate: (issue: Partial<IIssue>) => void; issueUpdate: (issue: Partial<IIssue>) => void;
issueReactionCreate: (reaction: string) => void; issueReactionCreate: (reaction: string) => void;
issueReactionRemove: (reaction: string) => void; issueReactionRemove: (reaction: string) => void;
setShowAlert: (value: boolean) => void;
} }
export const PeekOverviewIssueDetails: FC<IPeekOverviewIssueDetails> = (props) => { export const PeekOverviewIssueDetails: FC<IPeekOverviewIssueDetails> = (props) => {
const { workspaceSlug, issue, issueReactions, user, issueUpdate, issueReactionCreate, issueReactionRemove } = props; const { workspaceSlug, issue, issueReactions, user, issueUpdate, issueReactionCreate, issueReactionRemove,setShowAlert } = props;
// store // store
const { const {
user: userStore, user: userStore,
projectIssues: { isSubmitting, setIsSubmitting }, projectIssues: { setIsSubmitting },
} = useMobxStore(); } = useMobxStore();
const { currentProjectRole } = userStore; const { currentProjectRole } = userStore;
const isAllowed = [15, 20].includes(currentProjectRole || 0); const isAllowed = [15, 20].includes(currentProjectRole || 0);
@ -40,7 +40,6 @@ export const PeekOverviewIssueDetails: FC<IPeekOverviewIssueDetails> = (props) =
const [characterLimit, setCharacterLimit] = useState(false); const [characterLimit, setCharacterLimit] = useState(false);
// hooks // hooks
const { setShowAlert } = useReloadConfirmations();
const editorSuggestions = useEditorSuggestions(); const editorSuggestions = useEditorSuggestions();
const { const {

View File

@ -287,6 +287,7 @@ export const IssueView: FC<IIssueView> = observer((props) => {
<div className="absolute top-0 left-0 h-full min-h-full w-full z-[9] flex items-center justify-center bg-custom-background-100 opacity-60" /> <div className="absolute top-0 left-0 h-full min-h-full w-full z-[9] flex items-center justify-center bg-custom-background-100 opacity-60" />
)} )}
<PeekOverviewIssueDetails <PeekOverviewIssueDetails
setShowAlert={(value) => setShowAlert(value)}
workspaceSlug={workspaceSlug} workspaceSlug={workspaceSlug}
issue={issue} issue={issue}
issueUpdate={issueUpdate} issueUpdate={issueUpdate}
@ -321,6 +322,7 @@ export const IssueView: FC<IIssueView> = observer((props) => {
<div className="relative w-full h-full space-y-6 p-4 py-5 overflow-auto"> <div className="relative w-full h-full space-y-6 p-4 py-5 overflow-auto">
<div className={isArchived ? "pointer-events-none" : ""}> <div className={isArchived ? "pointer-events-none" : ""}>
<PeekOverviewIssueDetails <PeekOverviewIssueDetails
setShowAlert={(value) => setShowAlert(value)}
workspaceSlug={workspaceSlug} workspaceSlug={workspaceSlug}
issue={issue} issue={issue}
issueReactions={issueReactions} issueReactions={issueReactions}

View File

@ -31,6 +31,7 @@ type Props = {
issueDetails: IIssue; issueDetails: IIssue;
submitChanges: (formData: Partial<IIssue>) => Promise<void>; submitChanges: (formData: Partial<IIssue>) => Promise<void>;
uneditable?: boolean; uneditable?: boolean;
setShowAlert: (value: boolean) => void;
}; };
// services // services
@ -38,7 +39,7 @@ const issueService = new IssueService();
const issueCommentService = new IssueCommentService(); const issueCommentService = new IssueCommentService();
export const IssueMainContent: React.FC<Props> = observer((props) => { export const IssueMainContent: React.FC<Props> = observer((props) => {
const { issueDetails, submitChanges, uneditable = false } = props; const { issueDetails, submitChanges, uneditable = false, setShowAlert } = props;
const router = useRouter(); const router = useRouter();
const { workspaceSlug, projectId, issueId } = router.query; const { workspaceSlug, projectId, issueId } = router.query;
@ -195,6 +196,7 @@ export const IssueMainContent: React.FC<Props> = observer((props) => {
</div> </div>
<IssueDescriptionForm <IssueDescriptionForm
setShowAlert={setShowAlert}
workspaceSlug={workspaceSlug as string} workspaceSlug={workspaceSlug as string}
issue={issueDetails} issue={issueDetails}
handleFormSubmit={submitChanges} handleFormSubmit={submitChanges}

View File

@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import useSWR, { mutate } from "swr"; import useSWR, { mutate } from "swr";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { useMobxStore } from "lib/mobx/store-provider"; import { useMobxStore } from "lib/mobx/store-provider";
import { observer } from "mobx-react-lite/dist/observer"; import { observer } from "mobx-react-lite";
// services // services
import { IssueService } from "services/issue"; import { IssueService } from "services/issue";
// layouts // layouts
@ -142,7 +142,11 @@ const IssueDetailsPage: NextPageWithLayout = observer(() => {
) : issueDetails && projectId ? ( ) : issueDetails && projectId ? (
<div className="flex h-full overflow-hidden"> <div className="flex h-full overflow-hidden">
<div className="w-2/3 h-full overflow-y-auto space-y-5 divide-y-2 divide-custom-border-300 p-5"> <div className="w-2/3 h-full overflow-y-auto space-y-5 divide-y-2 divide-custom-border-300 p-5">
<IssueMainContent issueDetails={issueDetails} submitChanges={submitChanges} /> <IssueMainContent
setShowAlert={(value) => setShowAlert(value)}
issueDetails={issueDetails}
submitChanges={submitChanges}
/>
</div> </div>
<div className="w-1/3 h-full space-y-5 border-l border-custom-border-300 py-5 overflow-hidden"> <div className="w-1/3 h-full space-y-5 border-l border-custom-border-300 py-5 overflow-hidden">
<IssueDetailsSidebar <IssueDetailsSidebar