fix: avoid duplicate hidden map recovery

This commit is contained in:
Nico 2026-06-04 07:05:38 -07:00
parent 214df9faec
commit 11ac4c9eb2
2 changed files with 8 additions and 4 deletions

View File

@ -94,6 +94,8 @@ export default function LocationMapBottomSheet({
const visibleAreaCount = filters.showZones
? Math.max(0, totalAreaCount - hiddenAreaCount)
: 0;
const hasNoVisibleAreas =
filters.showZones && totalAreaCount > 0 && visibleAreaCount === 0 && hiddenAreaCount > 0;
const showMapOverview = mode !== "edit" && !selectedObject;
const unlinkedAreaCount = useMemo(
() => mapObjects.filter((object) => !objectZoneId(object)).length,
@ -109,6 +111,8 @@ export default function LocationMapBottomSheet({
const hasHiddenUnmappedItems =
filters.showUnmapped && unmappedItemCount > 0 && visibleUnmappedItems.length === 0;
const hiddenAreaLabel = `Show Hidden Areas (${hiddenAreaCount})`;
const showHiddenAreaAction =
showEditorControls && hiddenAreaCount > 0 && filters.showZones && !hasNoVisibleAreas;
const saveDraftLabel = savingAction === "save" ? "Saving..." : "Save Draft";
const publishLabel = savingAction === "publish" ? "Publishing..." : "Publish";
const mappedItemSummary = assignedItemCount === visibleAssignedItemCount
@ -236,7 +240,7 @@ export default function LocationMapBottomSheet({
</div>
) : editorActions}
{showEditorControls && hiddenAreaCount > 0 ? (
{showHiddenAreaAction ? (
<div className="location-map-hidden-areas">
<button type="button" onClick={onShowHiddenAreas} disabled={saving}>
{hiddenAreaLabel}

View File

@ -1003,7 +1003,7 @@ test("admin can recover hidden map areas from the empty canvas", async ({ page }
await expect(page.locator(".location-map-sheet-header strong")).toHaveText("Edit Areas");
await expect(page.getByText("No visible map areas")).toBeVisible();
await expect(page.locator(".location-map-empty-canvas").getByRole("button", { name: "Show Hidden" })).toBeVisible();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toBeVisible();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toHaveCount(0);
await expect(page.locator(".location-map-status")).toHaveText("Unsaved Draft");
await page.locator(".location-map-empty-canvas").getByRole("button", { name: "Show Hidden" }).click();
@ -1462,14 +1462,14 @@ test("admin save progress locks empty-canvas recovery actions", async ({ page })
await expect(
page.locator(".location-map-empty-canvas").getByRole("button", { name: "Show Hidden" })
).toBeEnabled();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toBeEnabled();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toHaveCount(0);
await page.getByRole("button", { name: "Save Draft" }).click();
await expect.poll(() => saveStarted).toBe(true);
await expect(
page.locator(".location-map-empty-canvas").getByRole("button", { name: "Show Hidden" })
).toBeDisabled();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toBeDisabled();
await expect(page.getByRole("button", { name: "Show Hidden Areas (1)" })).toHaveCount(0);
releaseSave();
await expect(page.locator(".location-map-status")).toHaveText("Draft");