Allow redirecting pending queue items in place without duplicating
Previously, redirecting a queue item required completing it first, which created a duplicate entry. Now: - Pending items: redirect updates workflow_type in place (no new row) - Completed items: still creates a new pending item (legacy behavior) - Redirect arrow now visible on all items, not just completed ones - Frontend handles in-place updates by replacing the item in state
This commit is contained in:
@@ -2002,13 +2002,13 @@ function QueuePanel({ open, items, onClose, onUpdate, onDelete, onDeleteMany, on
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Redirect button — completed items only */}
|
||||
{canWrite && done && (
|
||||
{/* Redirect button — available on all items */}
|
||||
{canWrite && (
|
||||
<button
|
||||
onClick={() => setRedirectItem(item)}
|
||||
style={{ background: 'none', border: 'none', cursor: 'pointer', color: '#334155', padding: '1px', lineHeight: 1, flexShrink: 0 }}
|
||||
style={{ background: 'none', border: 'none', cursor: 'pointer', color: done ? '#334155' : '#475569', padding: '1px', lineHeight: 1, flexShrink: 0 }}
|
||||
onMouseEnter={(e) => e.currentTarget.style.color = '#0EA5E9'}
|
||||
onMouseLeave={(e) => e.currentTarget.style.color = '#334155'}
|
||||
onMouseLeave={(e) => e.currentTarget.style.color = done ? '#334155' : '#475569'}
|
||||
title="Redirect to another workflow"
|
||||
>
|
||||
<CornerUpRight style={{ width: '13px', height: '13px' }} />
|
||||
@@ -7273,10 +7273,18 @@ export default function VulnerabilityTriagePage({ filterDate, filterEXC }) {
|
||||
onDeleteMany={deleteQueueItems}
|
||||
onClearCompleted={clearCompleted}
|
||||
onCreateFpWorkflow={handleCreateFpWorkflow}
|
||||
onRedirectComplete={(newItem) => {
|
||||
setQueueItems((prev) => [...prev, newItem].sort((a, b) =>
|
||||
(a.vendor || '').localeCompare(b.vendor || '') || a.id - b.id
|
||||
));
|
||||
onRedirectComplete={(updatedItem) => {
|
||||
setQueueItems((prev) => {
|
||||
// If item already exists (in-place update), replace it
|
||||
const exists = prev.some(i => i.id === updatedItem.id);
|
||||
if (exists) {
|
||||
return prev.map(i => i.id === updatedItem.id ? updatedItem : i);
|
||||
}
|
||||
// Otherwise it's a new item (redirect from completed), add it
|
||||
return [...prev, updatedItem].sort((a, b) =>
|
||||
(a.vendor || '').localeCompare(b.vendor || '') || a.id - b.id
|
||||
);
|
||||
});
|
||||
}}
|
||||
canWrite={canWrite}
|
||||
fpSubmissions={fpSubmissionsFiltered}
|
||||
|
||||
Reference in New Issue
Block a user