Skip to content

Conversation

@lucanovera
Copy link
Contributor

@lucanovera lucanovera commented Nov 19, 2025

Ticket ENG-1804

Description Of Changes

For both the current Request Manager page and the new Request Manager page, it adds the option to filter by duplicate request. It also adds a notice that appears in the header when you have requests in the duplicate status.
For the new request manager page, it sets the default status filter to show all filters except duplicate.

Code Changes

  • Updated privacy-requests.slice.ts to filter by all status except duplicate by default. Since this stores filters in browser memory, it will only affect the first time you visit the page.
  • Added overflowY scroll to avoid jumps in page when table has results vs when it doesn't have results
  • Adds support for duplicates to take actions like approve and deny
  • Adds 2 components (one for request manager, one for the new request manager) that shows the current duplicate count and can be clicked to filter by duplicates

Steps to Confirm

  1. Visit this preview link
  2. Check that by default on this first visit, you have a status filter applied. Opening the modal should show all status being selected except for duplicates. (On subsequent visits to the page, it will load your last used filters, so this behavior only applied to the first visit)
  3. Check that you're not seeing request with duplicate status
  4. Check that the header of the table shows 'X duplicate requests'
  5. Clicking that text should change the table filters to show you only duplicate requests
  6. Check that duplicate requests show approve / deny / delete actions in the actions column
  7. Check that clicking 'Clear filters' removes all filters and shows all requests including duplicates

For the new request manger:
7. Go to Settings > About page and enable the feature flag "Privacy request v2"
8. Go to the Privacy requests > Request manager (new) page
9. Check the default filter on this page is to filter by all status except duplicates and results don't show duplicates
10. Click the 'X duplicate requests' text to filter only by duplicates
11. Check that approve / deny / delete actions are possible
12. Check that selecting duplicate requests with the checkbox causes the Action dropdown to show approve / deny / delete actions
13. Check that if you navigate to another page in the meny and then click on "Request manager (new)" you will see again the default filter status of not showing duplicates

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

@lucanovera lucanovera requested a review from a team as a code owner November 19, 2025 13:53
@lucanovera lucanovera requested review from speaker-ender and removed request for a team November 19, 2025 13:53
@vercel
Copy link

vercel bot commented Nov 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
fides-plus-nightly Ready Ready Preview Comment Nov 19, 2025 7:31pm
1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
fides-privacy-center Ignored Ignored Nov 19, 2025 7:31pm

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Nov 19, 2025

Greptile Summary

  • Added support for filtering privacy requests by duplicate status in both the current and new Request Manager pages, with a default filter that excludes duplicates
  • Enabled approve and deny actions for requests with duplicate status alongside pending status
  • Added notification components (DuplicateRequestsButton and DuplicateRequestsLink) that display the count of duplicate requests and allow users to filter to view them

Confidence Score: 4/5

  • This PR is safe to merge with minor grammatical fixes needed
  • The implementation is clean and consistent across both UI pages. The Redux state management changes use proper memoization with createSelector. The only issues are minor grammatical errors in the pluralization logic that won't cause runtime problems but will display incorrect text for singular counts.
  • Fix the pluralization in DuplicateRequestsButton.tsx and DuplicateRequestsLink.tsx before merging

Important Files Changed

Filename Overview
clients/admin-ui/src/features/privacy-requests/DuplicateRequestsButton.tsx New component that displays a button to view duplicate requests with automatic count fetching and Redux state management
clients/admin-ui/src/features/privacy-requests/dashboard/DuplicateRequestsLink.tsx New component that displays a link to view duplicate requests for the dashboard view with URL-based navigation
clients/admin-ui/src/features/privacy-requests/privacy-requests.slice.ts Updated Redux slice to set default status filter excluding duplicates, using createSelector for memoization
clients/admin-ui/src/features/privacy-requests/dashboard/hooks/usePrivacyRequestsFilters.ts Updated hook to apply default status filter that excludes duplicate requests with URL synchronization

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

11 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile
React with 👍 or 👎 to share your feedback on this new summary format

Comment on lines 63 to 64
View {duplicateCount} duplicate{" "}
{pluralize(duplicateCount, "request", "requests")}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntax: incorrect pluralization logic creates grammatically incorrect output

The current code produces: "View 5 duplicate requests" (correct) but "View 1 duplicate request" (incorrect - should be "View 1 duplicate request").

The pluralize function takes parameters (count, singular, plural) but you're passing the noun twice and pluralizing "request"/"requests" separately. This creates "1 duplicate request" instead of the expected behavior.

Suggested change
View {duplicateCount} duplicate{" "}
{pluralize(duplicateCount, "request", "requests")}
View {duplicateCount} {pluralize(duplicateCount, "duplicate request", "duplicate requests")}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"View 1 duplicate request" (incorrect - should be "View 1 duplicate request").
lol

),
status: parseAsArrayOf(parseAsStringEnum(allowedStatusFilterOptions))
.withDefault(defaultStatusFilter)
.withOptions({ clearOnDefault: true }),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is something we should have used in the action center 👀

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yess, that clearOnDefault is really nice. you don't get a bunch of params when you just visit the page.

Copy link
Contributor

@speaker-ender speaker-ender left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good and everything works in nightly!

@lucanovera lucanovera added this pull request to the merge queue Nov 19, 2025
Merged via the queue into main with commit 3d950c4 Nov 19, 2025
46 of 47 checks passed
@lucanovera lucanovera deleted the ENG-1804-FE-Support-new-dsr-request-status-Duplicated branch November 19, 2025 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants