mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: deduplicate agent script timings (#15631)
Related to https://github.com/coder/coder/issues/15413
This commit is contained in:
@@ -104,3 +104,17 @@ export const NavigateToStartStage: Story = {
|
||||
await canvas.findByText("Startup Script");
|
||||
},
|
||||
};
|
||||
|
||||
// Test case for https://github.com/coder/coder/issues/15413
|
||||
export const DuplicatedScriptTiming: Story = {
|
||||
args: {
|
||||
agentScriptTimings: [
|
||||
WorkspaceTimingsResponse.agent_script_timings[0],
|
||||
{
|
||||
...WorkspaceTimingsResponse.agent_script_timings[0],
|
||||
started_at: "2021-09-01T00:00:00Z",
|
||||
ended_at: "2021-09-01T00:00:00Z",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
@@ -9,6 +9,8 @@ import type {
|
||||
AgentScriptTiming,
|
||||
ProvisionerTiming,
|
||||
} from "api/typesGenerated";
|
||||
import sortBy from "lodash/sortBy";
|
||||
import uniqBy from "lodash/uniqBy";
|
||||
import { type FC, useState } from "react";
|
||||
import { type TimeRange, calcDuration, mergeTimeRanges } from "./Chart/utils";
|
||||
import { ResourcesChart, isCoderResource } from "./ResourcesChart";
|
||||
@@ -42,11 +44,20 @@ export const WorkspaceTimings: FC<WorkspaceTimingsProps> = ({
|
||||
defaultIsOpen = false,
|
||||
}) => {
|
||||
const [view, setView] = useState<TimingView>({ name: "default" });
|
||||
// This is a workaround to deal with the BE returning multiple timings for a
|
||||
// single agent script when it should return only one. Reference:
|
||||
// https://github.com/coder/coder/issues/15413#issuecomment-2493663571
|
||||
const uniqScriptTimings = uniqBy(
|
||||
sortBy(agentScriptTimings, (t) => new Date(t.started_at).getTime() * -1),
|
||||
(t) => t.display_name,
|
||||
);
|
||||
const timings = [
|
||||
...provisionerTimings,
|
||||
...agentScriptTimings,
|
||||
...uniqScriptTimings,
|
||||
...agentConnectionTimings,
|
||||
];
|
||||
].sort((a, b) => {
|
||||
return new Date(a.started_at).getTime() - new Date(b.started_at).getTime();
|
||||
});
|
||||
const [isOpen, setIsOpen] = useState(defaultIsOpen);
|
||||
const isLoading = timings.length === 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user