fix: Empty survey list state after deleting the last survey.

This commit is contained in:
Varun Singh
2025-06-21 00:37:17 +05:30
parent c3547ccb36
commit d13037cb50
5 changed files with 33 additions and 2 deletions

View File

@@ -60,6 +60,8 @@ describe("SurveyCard", () => {
deleteSurvey={mockDeleteSurvey}
locale="en-US"
publicDomain={WEBAPP_URL}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
// Draft survey => link should point to edit
@@ -77,6 +79,8 @@ describe("SurveyCard", () => {
deleteSurvey={mockDeleteSurvey}
locale="en-US"
publicDomain={WEBAPP_URL}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
// When it's read only and draft, we expect no link
@@ -94,6 +98,8 @@ describe("SurveyCard", () => {
deleteSurvey={mockDeleteSurvey}
locale="en-US"
publicDomain={WEBAPP_URL}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
// For non-draft => link to summary

View File

@@ -8,7 +8,7 @@ import { TSurvey } from "@/modules/survey/list/types/surveys";
import { SurveyStatusIndicator } from "@/modules/ui/components/survey-status-indicator";
import { useTranslate } from "@tolgee/react";
import Link from "next/link";
import { useMemo } from "react";
import React, { SetStateAction, useMemo } from "react";
import { TUserLocale } from "@formbricks/types/user";
import { SurveyDropDownMenu } from "./survey-dropdown-menu";
@@ -20,6 +20,8 @@ interface SurveyCardProps {
duplicateSurvey: (survey: TSurvey) => void;
deleteSurvey: (surveyId: string) => void;
locale: TUserLocale;
surveyCount: number;
setIsFetching: React.Dispatch<SetStateAction<boolean>>;
}
export const SurveyCard = ({
survey,
@@ -29,6 +31,8 @@ export const SurveyCard = ({
deleteSurvey,
duplicateSurvey,
locale,
surveyCount,
setIsFetching,
}: SurveyCardProps) => {
const { t } = useTranslate();
const surveyStatusLabel = (() => {
@@ -108,6 +112,8 @@ export const SurveyCard = ({
isSurveyCreationDeletionDisabled={isSurveyCreationDeletionDisabled}
duplicateSurvey={duplicateSurvey}
deleteSurvey={deleteSurvey}
surveyCount={surveyCount}
setIsFetching={setIsFetching}
/>
</button>
</>

View File

@@ -63,6 +63,8 @@ describe("SurveyDropDownMenu", () => {
refreshSingleUseId={mockRefresh}
duplicateSurvey={mockDuplicateSurvey}
deleteSurvey={mockDeleteSurvey}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
@@ -97,6 +99,8 @@ describe("SurveyDropDownMenu", () => {
deleteSurvey={vi.fn()}
disabled={false}
isSurveyCreationDeletionDisabled={false}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
@@ -135,6 +139,8 @@ describe("SurveyDropDownMenu", () => {
refreshSingleUseId={vi.fn()}
duplicateSurvey={vi.fn()}
deleteSurvey={vi.fn()}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
@@ -158,6 +164,8 @@ describe("SurveyDropDownMenu", () => {
refreshSingleUseId={vi.fn()}
duplicateSurvey={vi.fn()}
deleteSurvey={vi.fn()}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
@@ -184,6 +192,8 @@ describe("SurveyDropDownMenu", () => {
refreshSingleUseId={vi.fn()}
duplicateSurvey={mockDuplicateSurvey}
deleteSurvey={vi.fn()}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);
@@ -211,6 +221,8 @@ describe("SurveyDropDownMenu", () => {
refreshSingleUseId={vi.fn()}
duplicateSurvey={mockDuplicateSurvey}
deleteSurvey={vi.fn()}
surveyCount={1}
setIsFetching={vi.fn()}
/>
);

View File

@@ -30,7 +30,7 @@ import {
} from "lucide-react";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useMemo, useState } from "react";
import React, { SetStateAction, useMemo, useState } from "react";
import toast from "react-hot-toast";
import { CopySurveyModal } from "./copy-survey-modal";
@@ -43,6 +43,8 @@ interface SurveyDropDownMenuProps {
isSurveyCreationDeletionDisabled?: boolean;
duplicateSurvey: (survey: TSurvey) => void;
deleteSurvey: (surveyId: string) => void;
surveyCount: number;
setIsFetching: React.Dispatch<SetStateAction<boolean>>;
}
export const SurveyDropDownMenu = ({
@@ -54,6 +56,8 @@ export const SurveyDropDownMenu = ({
isSurveyCreationDeletionDisabled,
deleteSurvey,
duplicateSurvey,
surveyCount,
setIsFetching,
}: SurveyDropDownMenuProps) => {
const { t } = useTranslate();
const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);
@@ -70,6 +74,7 @@ export const SurveyDropDownMenu = ({
setLoading(true);
try {
await deleteSurveyAction({ surveyId });
if (surveyCount - 1 === 0) setIsFetching(true);
deleteSurvey(surveyId);
router.refresh();
setDeleteDialogOpen(false);

View File

@@ -160,6 +160,8 @@ export const SurveysList = ({
duplicateSurvey={handleDuplicateSurvey}
deleteSurvey={handleDeleteSurvey}
locale={locale}
surveyCount={surveys.length}
setIsFetching={setIsFetching}
/>
);
})}