Skip to content

Commit

Permalink
feat: add issueExtraDetails fetch
Browse files Browse the repository at this point in the history
Part of #870
  • Loading branch information
MarceloRobert committed Feb 13, 2025
1 parent 2d2ea8e commit fdd4d61
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 3 deletions.
72 changes: 72 additions & 0 deletions dashboard/src/api/issueExtras.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { useQuery, type UseQueryResult } from '@tanstack/react-query';

import type {
IssueExtraDetailsResponse,
IssueKeyList,
} from '@/types/issueExtras';

import type { TIssue } from '@/types/issues';

import { RequestData } from './commonRequest';

const fetchIssueExtraDetailsData = async (
issueKeyList?: IssueKeyList,
): Promise<IssueExtraDetailsResponse> => {
const body = {
issues: issueKeyList,
};

const data = await RequestData.post<IssueExtraDetailsResponse>(
`/api/issue/extras/`,
body,
);

return data;
};

export interface ITabsIssues {
buildIssues?: TIssue[];
bootIssues?: TIssue[];
testIssues?: TIssue[];
}

const makeIssueKeyList = ({
buildIssues,
bootIssues,
testIssues,
}: ITabsIssues): IssueKeyList => {
const result: IssueKeyList = [];

buildIssues?.forEach(issue => {
result.push([issue.id, issue.version]);
});
bootIssues?.forEach(issue => {
result.push([issue.id, issue.version]);
});
testIssues?.forEach(issue => {
result.push([issue.id, issue.version]);
});

return result;
};

export const useIssueExtraDetails = ({
buildIssues,
bootIssues,
testIssues,
enabled = true,
}: ITabsIssues & {
enabled: boolean;
}): UseQueryResult<IssueExtraDetailsResponse> => {
const issueKeyList = makeIssueKeyList({
buildIssues,
bootIssues,
testIssues,
});

return useQuery({
queryKey: ['issueExtraData', issueKeyList],
queryFn: () => fetchIssueExtraDetailsData(issueKeyList),
enabled,
});
};
12 changes: 9 additions & 3 deletions dashboard/src/types/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,24 @@ interface IEnvironmentMisc {
platform?: string;
}

export type TestHistory = {
export type TreeBranchItem = {
tree_name?: string;
git_repository_branch?: string;
};

export type TestHistory = TreeBranchItem & {
start_time: string;
status: Status;
path: string;
id: string;
duration?: number;
environment_compatible?: string[];
environment_misc?: IEnvironmentMisc;
tree_name?: string;
git_repository_branch?: string;
};

/**
* @deprecated Use a more generic approach to the misc field.
*/
interface ITreeDetailsMisc {
kernel_type?: string;
dtb?: string;
Expand Down
21 changes: 21 additions & 0 deletions dashboard/src/types/issueExtras.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type { TreeBranchItem } from './general';
import type { IssueKeys } from './issues';

type PossibleIssueTags = 'mainline' | 'stable' | 'linux-next';

type TIssueExtraDetails = IssueKeys & {
first_seen?: Date;
trees?: TreeBranchItem[];
tags?: PossibleIssueTags[];
};

export type IssueKeyList = [string, number][];

export type IssueExtraDetailsDict = Record<
string,
Record<number, TIssueExtraDetails>
>;

export type IssueExtraDetailsResponse = {
issues: IssueExtraDetailsDict;
};

0 comments on commit fdd4d61

Please sign in to comment.