Skip to content

Commit 1e8abd2

Browse files
authored
feat(x2a): retrigger project's init phase (#2583)
Signed-off-by: Marek Libra <marek.libra@gmail.com>
1 parent e9f35e2 commit 1e8abd2

22 files changed

Lines changed: 1966 additions & 83 deletions
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-x2a': patch
3+
---
4+
5+
The user can newly retrigger the project's init phase.

workspaces/x2a/plugins/scaffolder-backend-module-x2a/src/actions/createAndInitProject.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ export const createAndInitProject = async (
109109
logger.error(
110110
`Error triggering init-phase for project "${row.name}" (${project.id}): ${message}`,
111111
);
112+
113+
// if the init fails, let's keep the project created. The user can then list, update and retrigger it manually.
112114
throw error;
113115
}
114116

workspaces/x2a/plugins/x2a/report.api.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ readonly "table.columns.createdAt": string;
3939
readonly "table.columns.sourceRepo": string;
4040
readonly "table.columns.targetRepo": string;
4141
readonly "table.actions.deleteProject": string;
42+
readonly "table.actions.retriggerInit": string;
4243
readonly "table.actions.expandAll": string;
4344
readonly "table.actions.collapseAll": string;
4445
readonly "table.actions.expandRow": string;
@@ -131,6 +132,13 @@ readonly "modulePage.phases.telemetry.agentName": string;
131132
readonly "modulePage.phases.telemetry.inputTokens": string;
132133
readonly "modulePage.phases.telemetry.outputTokens": string;
133134
readonly "modulePage.phases.telemetry.toolCalls": string;
135+
readonly "retriggerInit.error": string;
136+
readonly "retriggerInit.confirm.title": string;
137+
readonly "retriggerInit.confirm.message": string;
138+
readonly "retriggerInit.confirm.userPromptLabel": string;
139+
readonly "retriggerInit.confirm.userPromptPlaceholder": string;
140+
readonly "retriggerInit.confirm.confirmButton": string;
141+
readonly "retriggerInit.errorStart": string;
134142
readonly "project.id": string;
135143
readonly "project.description": string;
136144
readonly "project.abbreviation": string;
@@ -158,9 +166,14 @@ readonly "bulkRun.projectConfirm.title": string;
158166
readonly "bulkRun.projectConfirm.message": string;
159167
readonly "bulkRun.globalConfirm.title": string;
160168
readonly "bulkRun.globalConfirm.message": string;
169+
readonly "bulkRun.globalConfirm.messageInitRetrigger": string;
170+
readonly "bulkRun.globalConfirm.noInitEligible": string;
171+
readonly "bulkRun.globalConfirm.userPromptLabel": string;
172+
readonly "bulkRun.globalConfirm.userPromptPlaceholder": string;
161173
readonly "bulkRun.projectPageConfirm.title": string;
162174
readonly "bulkRun.projectPageConfirm.message": string;
163175
readonly "bulkRun.errorProject": string;
176+
readonly "bulkRun.errorModuleStart": string;
164177
readonly "bulkRun.errorGlobal": string;
165178
readonly "module.summary.running": string;
166179
readonly "module.summary.total": string;

workspaces/x2a/plugins/x2a/src/components/BulkRunConfirmDialog.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ export type BulkRunConfirmDialogProps = {
3434
onConfirm: () => void;
3535
onClose: () => void;
3636
idPostfix: string;
37+
confirmLabel?: string;
38+
children?: React.ReactNode;
3739
};
3840

3941
export const BulkRunConfirmDialog = ({
@@ -44,6 +46,8 @@ export const BulkRunConfirmDialog = ({
4446
idPostfix,
4547
onConfirm,
4648
onClose,
49+
confirmLabel,
50+
children,
4751
}: BulkRunConfirmDialogProps) => {
4852
const { t } = useTranslation();
4953
const titleId = `bulk-run-modal-title-${idPostfix}`;
@@ -52,10 +56,10 @@ export const BulkRunConfirmDialog = ({
5256
const confirmingRef = useRef(false);
5357

5458
useEffect(() => {
55-
if (!open) {
59+
if (!open || !isRunning) {
5660
confirmingRef.current = false;
5761
}
58-
}, [open]);
62+
}, [open, isRunning]);
5963

6064
const handleConfirm = useCallback(() => {
6165
// Potential fast double-click protection
@@ -75,6 +79,7 @@ export const BulkRunConfirmDialog = ({
7579
<DialogTitle id={titleId}>{title}</DialogTitle>
7680
<DialogContent id={descriptionId}>
7781
<Typography variant="body1">{message}</Typography>
82+
{children}
7883
</DialogContent>
7984

8085
<DialogActions>
@@ -87,7 +92,7 @@ export const BulkRunConfirmDialog = ({
8792
isRunning ? <CircularProgress size={16} color="inherit" /> : null
8893
}
8994
>
90-
{t('bulkRun.confirm')}
95+
{confirmLabel ?? t('bulkRun.confirm')}
9196
</Button>
9297
<Button variant="outlined" onClick={onClose} disabled={isRunning}>
9398
{t('bulkRun.cancel')}

0 commit comments

Comments
 (0)