fix(campaigns): complete ACTION_LABELS map and timeline cache invalidation
Adds the 4 backend-logged campaign actions missing from ACTION_LABELS (delete_campaign, generate_campaign, schedule_campaign, recurring_campaign_run), and wires campaign-timeline invalidation into the remaining audit-logging mutations on the page (complete, schedule, approve/reject modification request) so the timeline panel updates live instead of only on next reload, consistent with submit/approve/ reject campaign.
This commit is contained in:
@@ -17,6 +17,10 @@ const ACTION_LABELS: Record<string, string> = {
|
|||||||
request_campaign_modification: "Modification requested",
|
request_campaign_modification: "Modification requested",
|
||||||
approve_campaign_modification: "Modification approved",
|
approve_campaign_modification: "Modification approved",
|
||||||
reject_campaign_modification: "Modification rejected",
|
reject_campaign_modification: "Modification rejected",
|
||||||
|
delete_campaign: "Campaign deleted",
|
||||||
|
generate_campaign: "Generated from threat actor",
|
||||||
|
schedule_campaign: "Schedule updated",
|
||||||
|
recurring_campaign_run: "Recurring run executed",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function CampaignAuditTimeline({ entries, isLoading }: Props) {
|
export default function CampaignAuditTimeline({ entries, isLoading }: Props) {
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ export default function CampaignDetailPage() {
|
|||||||
mutationFn: () => completeCampaign(campaignId!),
|
mutationFn: () => completeCampaign(campaignId!),
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
||||||
|
queryClient.invalidateQueries({ queryKey: ["campaign-timeline", campaignId] });
|
||||||
showToast("Campaign completed", "success");
|
showToast("Campaign completed", "success");
|
||||||
},
|
},
|
||||||
onError: (err: Error) => showToast(err.message, "error"),
|
onError: (err: Error) => showToast(err.message, "error"),
|
||||||
@@ -159,6 +160,7 @@ export default function CampaignDetailPage() {
|
|||||||
scheduleCampaign(campaignId!, payload),
|
scheduleCampaign(campaignId!, payload),
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
||||||
|
queryClient.invalidateQueries({ queryKey: ["campaign-timeline", campaignId] });
|
||||||
showToast("Schedule updated", "success");
|
showToast("Schedule updated", "success");
|
||||||
},
|
},
|
||||||
onError: (err: Error) => showToast(err.message, "error"),
|
onError: (err: Error) => showToast(err.message, "error"),
|
||||||
@@ -199,6 +201,7 @@ export default function CampaignDetailPage() {
|
|||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
queryClient.invalidateQueries({ queryKey: ["campaign", campaignId] });
|
||||||
queryClient.invalidateQueries({ queryKey: ["campaign-modification-requests", campaignId] });
|
queryClient.invalidateQueries({ queryKey: ["campaign-modification-requests", campaignId] });
|
||||||
|
queryClient.invalidateQueries({ queryKey: ["campaign-timeline", campaignId] });
|
||||||
showToast("Modification approved and applied", "success");
|
showToast("Modification approved and applied", "success");
|
||||||
},
|
},
|
||||||
onError: (err: Error) => showToast(err.message, "error"),
|
onError: (err: Error) => showToast(err.message, "error"),
|
||||||
@@ -209,6 +212,7 @@ export default function CampaignDetailPage() {
|
|||||||
rejectModificationRequest(requestId, notes),
|
rejectModificationRequest(requestId, notes),
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
queryClient.invalidateQueries({ queryKey: ["campaign-modification-requests", campaignId] });
|
queryClient.invalidateQueries({ queryKey: ["campaign-modification-requests", campaignId] });
|
||||||
|
queryClient.invalidateQueries({ queryKey: ["campaign-timeline", campaignId] });
|
||||||
showToast("Modification rejected", "success");
|
showToast("Modification rejected", "success");
|
||||||
},
|
},
|
||||||
onError: (err: Error) => showToast(err.message, "error"),
|
onError: (err: Error) => showToast(err.message, "error"),
|
||||||
|
|||||||
Reference in New Issue
Block a user