fix: completed cycle issue transfer validation (#5494)

This commit is contained in:
Anmol Singh Bhatia 2024-09-02 18:01:37 +05:30 committed by GitHub
parent 6c3a8a9647
commit e9f486eec6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 31 deletions

View file

@ -1,44 +1,17 @@
"use client";
import React from "react";
import isEmpty from "lodash/isEmpty";
import { useParams } from "next/navigation";
import useSWR from "swr";
// component
import { AlertCircle } from "lucide-react";
// ui
import { Button, TransferIcon } from "@plane/ui";
// icon
// services
import { CYCLE_DETAILS } from "@/constants/fetch-keys";
import { CycleService } from "@/services/cycle.service";
// fetch-key
type Props = {
handleClick: () => void;
canTransferIssues?: boolean;
disabled?: boolean;
};
const cycleService = new CycleService();
export const TransferIssues: React.FC<Props> = (props) => {
const { handleClick, disabled = false } = props;
const { workspaceSlug, projectId, cycleId } = useParams();
const { data: cycleDetails } = useSWR(
cycleId ? CYCLE_DETAILS(cycleId as string) : null,
workspaceSlug && projectId && cycleId
? () => cycleService.getCycleDetails(workspaceSlug as string, projectId as string, cycleId as string)
: null
);
const transferableIssuesCount = cycleDetails
? cycleDetails.backlog_issues + cycleDetails.unstarted_issues + cycleDetails.started_issues
: 0;
const { handleClick, canTransferIssues = false, disabled = false } = props;
return (
<div className="-mt-2 mb-4 flex items-center justify-between px-4 pt-6">
<div className="flex items-center gap-2 text-sm text-custom-text-200">
@ -46,7 +19,7 @@ export const TransferIssues: React.FC<Props> = (props) => {
<span>Completed cycles are not editable.</span>
</div>
{isEmpty(cycleDetails?.progress_snapshot) && transferableIssuesCount > 0 && (
{canTransferIssues && (
<div>
<Button
variant="primary"

View file

@ -67,6 +67,11 @@ export const CycleLayoutRoot: React.FC = observer(() => {
const cycleDetails = cycleId ? getCycleById(cycleId.toString()) : undefined;
const cycleStatus = cycleDetails?.status?.toLocaleLowerCase() ?? "draft";
const isCompletedCycle = cycleStatus === "completed";
const isProgressSnapshotEmpty = isEmpty(cycleDetails?.progress_snapshot);
const transferableIssuesCount = cycleDetails
? cycleDetails.backlog_issues + cycleDetails.unstarted_issues + cycleDetails.started_issues
: 0;
const canTransferIssues = isProgressSnapshotEmpty && transferableIssuesCount > 0;
if (!workspaceSlug || !projectId || !cycleId) return <></>;
@ -77,6 +82,7 @@ export const CycleLayoutRoot: React.FC = observer(() => {
{cycleStatus === "completed" && (
<TransferIssues
handleClick={() => setTransferIssuesModal(true)}
canTransferIssues={canTransferIssues}
disabled={!isEmpty(cycleDetails?.progress_snapshot) ?? false}
/>
)}