Skip to content

Make "Mark all as resolved" on pending retries honor the period filter and selected queue - #3143

Merged
johnsimons merged 1 commit into
john/pending_date_rangefrom
john/more_date_ranges
Oct 1, 2026
Merged

johnsimons merged 1 commit into
john/pending_date_rangefrom
john/more_date_ranges

Conversation

@johnsimons

@johnsimons johnsimons commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

resolveAll sent a fixed epoch-to-now range to pendingretries/resolve, ignoring both the period filter and the selected queue, even though the toast tells the user "All filtered messages were marked as resolved". It now recomputes the date range from the selected period at click time, and when a queue is selected it PATCHes pendingretries/queues/resolve with the queue address, the same way retryAll works after #3142 and the same way the old AngularJS markAsResolvedAllMessages behaved before the Vue migration. Without a queue it still uses pendingretries/resolve, since "Mark all as resolved" is not gated on a queue the way "Retry all" is.

One behavior change to be aware of: with the default "All Pending Retries" period, resolve-all now covers the last 365 days, which is the same window the list itself shows for that option, instead of everything since 1970.

This also replaces the magic "empty" sentinel on selectedQueue with ref<string | null>(null). The type now carries the "no queue selected" state and the compiler enforces the null checks in the store and the view, and the placeholder option binds :value="null" so the dropdown behaves as before.

New driver tests in resolving-all-pending-retries.spec.ts cover the three paths: the default period requests the full window up to now with no queue address, "Retried in the last 2 Hours" narrows the range to two hours, and a selected queue routes to pendingretries/queues/resolve with the queue address and the displayed period. The test bed from #3142 now also captures resolve requests, ignoring the uniquemessageids body shape so resolving individually selected messages does not pollute the capture.

Reviewer Checklist

  • Components are broken down into sensible and maintainable sub-components.
  • Styles are scoped to the component using it. If multiple components need to share CSS, then a .css file is created containing the shared CSS and imported into component scoped style sections.
  • Naming is consistent with existing code, and adequately describes the component or function being introduced
  • Only functions utilizing Vue state or lifecycle hooks are named as composables (i.e. starting with 'use');
  • No module-level state is being introduced. If so, request the PR author to move the state to the corresponding Pinia store.

…d date range

Fixes a bug where `resolveAll` was always sending epoch zero as the date range and ignoring the selected queue filter. Now mirrors the same logic as `retryAll`, using the current period and optionally scoping to the selected queue via the `pendingretries/queues/resolve` endpoint.

Also replaces the sentinel string `"empty"` used for the unselected queue state with `null`, making the intent clearer and the type more accurate.
@johnsimons johnsimons self-assigned this Sep 30, 2026
@johnsimons
johnsimons added this pull request to stack #3144 September 30, 2026 01:58
@johnsimons johnsimons added the Bug Bug label Oct 1, 2026
@johnsimons
johnsimons merged commit f7c7e1a into master Oct 1, 2026
5 checks passed
@johnsimons
johnsimons deleted the john/more_date_ranges branch October 1, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants