Fix delete provider freezing UI (#468)

Fixes #394
This commit is contained in:
Will Chen
2025-06-23 14:53:54 -07:00
committed by GitHub
parent 2f00dc5955
commit 05fb096348
2 changed files with 35 additions and 16 deletions

View File

@@ -0,0 +1,12 @@
import { test } from "./helpers/test_helper";
test("delete custom provider should not freeze", async ({ po }) => {
await po.setUp();
await po.goToSettingsTab();
await po.page.getByTestId("custom-provider-more-options").click();
await po.page.getByRole("button", { name: "Delete Provider" }).click();
await po.page.getByRole("button", { name: "Delete Provider" }).click();
// Make sure UI hasn't freezed
await po.goToAppsTab();
});

View File

@@ -17,11 +17,11 @@ import { AlertTriangle } from "lucide-react";
import { useState } from "react"; import { useState } from "react";
import { import {
DropdownMenu, Popover,
DropdownMenuContent, PopoverContent,
DropdownMenuItem, PopoverTrigger,
DropdownMenuTrigger, } from "@/components/ui/popover";
} from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button";
import { import {
AlertDialog, AlertDialog,
AlertDialogAction, AlertDialogAction,
@@ -143,22 +143,29 @@ export function ProviderSettingsGrid() {
className="absolute top-2 right-2" className="absolute top-2 right-2"
onClick={(e) => e.stopPropagation()} onClick={(e) => e.stopPropagation()}
> >
<DropdownMenu> <Popover>
<DropdownMenuTrigger className="focus:outline-none"> <PopoverTrigger asChild>
<div className="p-1 hover:bg-muted rounded-full"> <Button
variant="ghost"
size="sm"
className="p-1 hover:bg-muted rounded-full focus:outline-none"
data-testid="custom-provider-more-options"
>
<MoreVertical className="h-4 w-4 text-muted-foreground" /> <MoreVertical className="h-4 w-4 text-muted-foreground" />
</div> </Button>
</DropdownMenuTrigger> </PopoverTrigger>
<DropdownMenuContent align="end"> <PopoverContent align="end" className="w-48 p-2">
<DropdownMenuItem <Button
className="text-destructive focus:text-destructive" variant="ghost"
size="sm"
className="w-full justify-start text-destructive hover:text-destructive hover:bg-destructive/10"
onClick={() => setProviderToDelete(provider.id)} onClick={() => setProviderToDelete(provider.id)}
> >
<Trash2 className="h-4 w-4 mr-2" /> <Trash2 className="h-4 w-4 mr-2" />
Delete Provider Delete Provider
</DropdownMenuItem> </Button>
</DropdownMenuContent> </PopoverContent>
</DropdownMenu> </Popover>
</div> </div>
)} )}
</Card> </Card>