Skip to content

Commit 3764e8e

Browse files
feat(bulk-import): Use enums for importFlow and TaskStatus (#1718)
1 parent c1b60c7 commit 3764e8e

12 files changed

Lines changed: 68 additions & 48 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-bulk-import': minor
3+
---
4+
5+
Use enums for importFlow and TaskStatus
6+
7+
- Convert TaskStatus from union type to enum for better status handling and type safety
8+
- Add ImportFlow enum to standardize import flow configuration values

workspaces/bulk-import/plugins/bulk-import/src/api/BulkImportBackendClient.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
import {
2929
AddedRepositoryColumnNameEnum,
3030
ApprovalTool,
31+
ImportFlow,
3132
RepositoryStatus,
3233
SortingOrderEnum,
3334
} from '../types';
@@ -180,7 +181,7 @@ beforeAll(() => server.listen());
180181
afterEach(() => server.restoreHandlers());
181182
afterAll(() => server.close());
182183

183-
const getConfigApi = (importAPI: 'open-pull-requests' | 'scaffolder') => ({
184+
const getConfigApi = (importAPI: ImportFlow) => ({
184185
has: jest.fn(),
185186
keys: jest.fn(),
186187
get: jest.fn(),
@@ -222,7 +223,7 @@ describe('BulkImportBackendClient with open-pull-requests', () => {
222223

223224
beforeEach(() => {
224225
bulkImportApi = new BulkImportBackendClient({
225-
configApi: getConfigApi('open-pull-requests'),
226+
configApi: getConfigApi(ImportFlow.OpenPullRequests),
226227
identityApi: identityApi,
227228
});
228229
});
@@ -446,7 +447,7 @@ describe('BulkImportBackendClient with scaffolder', () => {
446447

447448
beforeEach(() => {
448449
bulkImportApi = new BulkImportBackendClient({
449-
configApi: getConfigApi('scaffolder'),
450+
configApi: getConfigApi(ImportFlow.Scaffolder),
450451
identityApi: identityApi,
451452
});
452453
});

workspaces/bulk-import/plugins/bulk-import/src/api/BulkImportBackendClient.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
APITypes,
2626
ApprovalTool,
2727
CreateImportJobRepository,
28+
ImportFlow,
2829
ImportJobResponse,
2930
ImportJobs,
3031
ImportJobStatus,
@@ -108,13 +109,13 @@ export class BulkImportBackendClient implements BulkImportAPI {
108109
this.identityApi = options.identityApi;
109110
const importAPI =
110111
this.configApi.getOptionalString('bulkImport.importAPI') ??
111-
'open-pull-requests';
112+
ImportFlow.OpenPullRequests;
112113

113114
switch (importAPI) {
114-
case 'scaffolder':
115+
case ImportFlow.Scaffolder:
115116
this.pathProvider = new ScaffolderBulkImportBackendClientPathProvider();
116117
break;
117-
case 'open-pull-requests':
118+
case ImportFlow.OpenPullRequests:
118119
this.pathProvider = new PRBulkImportBackendClientPathProvider();
119120
break;
120121
default:

workspaces/bulk-import/plugins/bulk-import/src/components/AddRepositories/AddRepositoriesFormFooter.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ import { useFormikContext } from 'formik';
2626
import { useGitlabConfigured } from '../../hooks';
2727
import { useImportFlow } from '../../hooks/useImportFlow';
2828
import { useTranslation } from '../../hooks/useTranslation';
29-
import { AddRepositoriesFormValues, ApprovalTool } from '../../types';
29+
import {
30+
AddRepositoriesFormValues,
31+
ApprovalTool,
32+
ImportFlow,
33+
} from '../../types';
3034

3135
export const AddRepositoriesFormFooter = () => {
3236
const { t } = useTranslation();
@@ -40,7 +44,7 @@ export const AddRepositoriesFormFooter = () => {
4044
Object.keys(values.repositories || []).length > 1;
4145

4246
const getGitSubmitTitle = (isGitlabConfigured: boolean) => {
43-
if (isGitlabConfigured || importFlow === 'scaffolder') {
47+
if (isGitlabConfigured || importFlow === ImportFlow.Scaffolder) {
4448
return t('common.import');
4549
}
4650
return isPluralRepositories
@@ -62,7 +66,7 @@ export const AddRepositoriesFormFooter = () => {
6266
[ApprovalTool.Git]: {
6367
submitTitle: getGitSubmitTitle(gitlabConfigured),
6468
toolTipTitle:
65-
gitlabConfigured || importFlow === 'scaffolder'
69+
gitlabConfigured || importFlow === ImportFlow.Scaffolder
6670
? t('forms.footer.importTooltip')
6771
: t('forms.footer.pullRequestTooltip'),
6872
},

workspaces/bulk-import/plugins/bulk-import/src/components/AddRepositories/CatalogInfoStatus.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { useTranslation } from '../../hooks/useTranslation';
2727
import {
2828
AddRepositoriesFormValues,
2929
AddRepositoryData,
30+
ImportFlow,
3031
RepositoryStatus,
3132
} from '../../types';
3233
import {
@@ -79,7 +80,7 @@ export const CatalogInfoStatus = ({
7980

8081
const importFlow = useImportFlow();
8182
if (
82-
importFlow !== 'scaffolder' &&
83+
importFlow !== ImportFlow.Scaffolder &&
8384
!isDrawer &&
8485
(isSelected ||
8586
(data?.totalReposInOrg && data.totalReposInOrg > 0 && allSelected))

workspaces/bulk-import/plugins/bulk-import/src/components/Repositories/AddedRepositoryTableRow.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
AddRepositoriesFormValues,
2929
AddRepositoryData,
3030
ApprovalTool,
31+
ImportFlow,
3132
} from '../../types';
3233
import {
3334
calculateLastUpdated,
@@ -82,7 +83,7 @@ export const AddedRepositoryTableRow = ({
8283
return (
8384
<TableRow hover>
8485
<TableCell component="th" scope="row" className={classes.tableCellStyle}>
85-
{importFlow === 'scaffolder' ? (
86+
{importFlow === ImportFlow.Scaffolder ? (
8687
<Link
8788
to={`/bulk-import/repositories/tasks/${encodeURIComponent(
8889
data.repoUrl || '',

workspaces/bulk-import/plugins/bulk-import/src/components/Repositories/DeleteRepository.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import Typography from '@mui/material/Typography';
2121

2222
import { useImportFlow } from '../../hooks/useImportFlow';
2323
import { useTranslation } from '../../hooks/useTranslation';
24-
import { AddRepositoryData } from '../../types';
24+
import { AddRepositoryData, ImportFlow } from '../../types';
2525
import { useDeleteDialog } from '../DeleteDialogContext';
2626

2727
const DeleteRepository = ({ data }: { data: AddRepositoryData }) => {
@@ -36,7 +36,7 @@ const DeleteRepository = ({ data }: { data: AddRepositoryData }) => {
3636
const importFlow = useImportFlow();
3737
let tooltipMessage;
3838
let delDisabled;
39-
if (importFlow === 'scaffolder') {
39+
if (importFlow === ImportFlow.Scaffolder) {
4040
tooltipMessage = t('repositories.removeTooltipRepositoryScaffolder');
4141
delDisabled = false;
4242
} else {

workspaces/bulk-import/plugins/bulk-import/src/components/Repositories/DeleteRepositoryDialog.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { bulkImportApiRef } from '../../api/BulkImportBackendClient';
3636
import { useGitlabConfigured } from '../../hooks';
3737
import { useImportFlow } from '../../hooks/useImportFlow';
3838
import { useTranslation } from '../../hooks/useTranslation';
39-
import { AddRepositoryData } from '../../types';
39+
import { AddRepositoryData, ImportFlow } from '../../types';
4040

4141
const useStyles = makeStyles(() =>
4242
createStyles({
@@ -88,7 +88,7 @@ const DeleteRepositoryDialog = ({
8888

8989
const importFlow = useImportFlow();
9090
let deleteMsg;
91-
if (importFlow === 'scaffolder') {
91+
if (importFlow === ImportFlow.Scaffolder) {
9292
deleteMsg = t('repositories.removeRepositoryWarningScaffolder');
9393
} else {
9494
deleteMsg = gitlabConfigured

workspaces/bulk-import/plugins/bulk-import/src/components/Repositories/RepositoriesList.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const mockAsyncData = {
6060
id: item.id,
6161
task: {
6262
id: item.task?.taskId || '',
63-
status: 'TASK_COMPLETED' as TaskStatus,
63+
status: TaskStatus.Completed,
6464
},
6565
})),
6666
totalJobs: mockGetImportJobs.imports.length,

workspaces/bulk-import/plugins/bulk-import/src/hooks/useImportFlow.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
*/
1616
import { configApiRef, useApi } from '@backstage/core-plugin-api';
1717

18-
export const useImportFlow = () => {
18+
import { ImportFlow } from '../types/types';
19+
20+
export const useImportFlow = (): ImportFlow => {
1921
const configApi = useApi(configApiRef);
20-
return (
21-
configApi.getOptionalString('bulkImport.importAPI') ?? 'open-pull-requests'
22-
);
22+
const flowValue =
23+
configApi.getOptionalString('bulkImport.importAPI') ??
24+
ImportFlow.OpenPullRequests;
25+
return flowValue as ImportFlow;
2326
};

0 commit comments

Comments
 (0)