refactor: remove backup path display from OpenClaw save toasts

Backup paths are internal implementation details not actionable by users.
Simplify toast notifications to show only success/failure messages.
This commit is contained in:
Jason
2026-03-09 15:00:30 +08:00
parent 99ef870077
commit 44096b0e44
5 changed files with 51 additions and 37 deletions

View File

@@ -53,6 +53,9 @@ const providersApiUpdateMock = vi.fn();
const providersApiUpdateTrayMenuMock = vi.fn();
const settingsApiGetMock = vi.fn();
const settingsApiApplyMock = vi.fn();
const openclawApiGetModelCatalogMock = vi.fn();
const openclawApiGetDefaultModelMock = vi.fn();
const openclawApiSetDefaultModelMock = vi.fn();
vi.mock("@/lib/api", () => ({
providersApi: {
@@ -65,6 +68,14 @@ vi.mock("@/lib/api", () => ({
applyClaudePluginConfig: (...args: unknown[]) =>
settingsApiApplyMock(...args),
},
openclawApi: {
getModelCatalog: (...args: unknown[]) =>
openclawApiGetModelCatalogMock(...args),
getDefaultModel: (...args: unknown[]) =>
openclawApiGetDefaultModelMock(...args),
setDefaultModel: (...args: unknown[]) =>
openclawApiSetDefaultModelMock(...args),
},
}));
interface WrapperProps {
@@ -100,6 +111,9 @@ beforeEach(() => {
providersApiUpdateTrayMenuMock.mockReset();
settingsApiGetMock.mockReset();
settingsApiApplyMock.mockReset();
openclawApiGetModelCatalogMock.mockReset();
openclawApiGetDefaultModelMock.mockReset();
openclawApiSetDefaultModelMock.mockReset();
toastSuccessMock.mockReset();
toastErrorMock.mockReset();
@@ -450,6 +464,35 @@ describe("useProviderActions", () => {
expect(result.current.isLoading).toBe(true);
});
it("does not show backup details when setting OpenClaw default model", async () => {
openclawApiSetDefaultModelMock.mockResolvedValueOnce({
backupPath: "/tmp/openclaw-backup.json5",
warnings: [],
});
const { wrapper } = createWrapper();
const provider = createProvider({
settingsConfig: {
models: [{ id: "gpt-4.1" }, { id: "gpt-4.1-mini" }],
},
});
const { result } = renderHook(() => useProviderActions("openclaw"), {
wrapper,
});
await act(async () => {
await result.current.setAsDefaultModel(provider);
});
expect(openclawApiSetDefaultModelMock).toHaveBeenCalledWith({
primary: "provider-1/gpt-4.1",
fallbacks: ["provider-1/gpt-4.1-mini"],
});
expect(toastSuccessMock).toHaveBeenCalledTimes(1);
expect(toastSuccessMock.mock.calls[0]?.[1]).toEqual({ closeButton: true });
});
});
it("clears loading flag when all mutations idle", () => {
addProviderMutation.isPending = false;