Restore dashboards: Filter out v0 dashboards from v2 response (#111165)

This commit is contained in:
Alex Khomenko
2025-09-17 12:49:50 +03:00
committed by GitHub
parent 0248a393d7
commit 8c284cbcba
3 changed files with 9 additions and 11 deletions
@@ -128,9 +128,7 @@ export function RecentlyDeletedActions() {
results.forEach((result, index) => {
const dashboardUid = selectedDashboards[index];
if (result.status === 'rejected') {
failed.push(dashboardUid);
} else if (result.value.error) {
if (result.status === 'rejected' || result.value.error) {
failed.push(dashboardUid);
} else if ('data' in result.value && result.value.data?.name) {
successful.push(result.value.data.name);
@@ -8,10 +8,10 @@ import { SaveDashboardCommand } from '../components/SaveDashboard/types';
import { DashboardAPI, DashboardVersionError, DashboardWithAccessInfo, ListDeletedDashboardsOptions } from './types';
import {
failedFromVersion,
isDashboardV2Spec,
isV1DashboardCommand,
isV2DashboardCommand,
failedFromVersion,
isV2StoredVersion,
} from './utils';
import { K8sDashboardAPI } from './v1';
@@ -69,14 +69,14 @@ export class UnifiedDashboardAPI
options: ListDeletedDashboardsOptions
): Promise<ResourceList<Dashboard | DashboardV2Spec>> {
const v1Response = await this.v1Client.listDeletedDashboards(options);
const filteredV1Items = v1Response.items.filter((item) => !failedFromVersion(item, 'v2'));
const filteredV1Items = v1Response.items.filter((item) => !failedFromVersion(item, ['v2']));
if (filteredV1Items.length === v1Response.items.length) {
return v1Response;
}
const v2Response = await this.v2Client.listDeletedDashboards(options);
const filteredV2Items = v2Response.items.filter((item) => !failedFromVersion(item, 'v1'));
const filteredV2Items = v2Response.items.filter((item) => !failedFromVersion(item, ['v0', 'v1']));
return {
...v2Response,
+5 -5
View File
@@ -100,15 +100,15 @@ export function getFailedVersion(
}
/**
* Helper function to check if a dashboard resource has a failed conversion from a specific version family
* Helper function to check if a dashboard resource has a failed conversion from specific versions
* @param item - Dashboard resource item
* @param versionPrefix - Version prefix to check (e.g., 'v1', 'v2')
* @returns True if conversion failed and stored version starts with the specified prefix
* @param versionPrefixes - Array of version prefixes to check (e.g., ['v1', 'v2'])
* @returns True if conversion failed and stored version starts with any of the specified prefixes
*/
export function failedFromVersion(
item: Resource<Dashboard | DashboardV2Spec | DashboardDataDTO, Status>,
versionPrefix: string
versionPrefixes: string[]
): boolean {
const storedVersion = getFailedVersion(item);
return !!storedVersion && storedVersion.startsWith(versionPrefix);
return !!storedVersion && versionPrefixes.some((prefix) => storedVersion.startsWith(prefix));
}