Skip to content

Conversation

@a-faqahmad
Copy link

@a-faqahmad a-faqahmad commented Dec 30, 2025

This pull request updates the inbox issue actions in inbox-issue-header.tsx to ensure that the inbox issue list is always refreshed after key actions (accept, decline, duplicate). This helps keep the UI in sync with the latest data after any status changes.

Inbox issue list refresh improvements:

  • The fetchInboxIssues function from useProjectInbox is now imported and used to refresh the issue list after accepting, declining, or marking an issue as duplicate.
  • After accepting, declining, or marking an issue as duplicate, fetchInboxIssues is called to reload the inbox issues, ensuring the UI reflects the latest state. [1] [2]

Fixes #8473


Note

Ensures the intake inbox stays in sync after key actions.

  • Import and invoke fetchInboxIssues from useProjectInbox after accept, decline, and mark as duplicate actions in inbox-issue-header.tsx to refresh the list (with "filter-loading"), wrapped in try/catch with console logging
  • No changes to snooze/delete flows or navigation

Written by Cursor Bugbot for commit fb92856. This will update automatically on new commits. Configure here.

Summary by CodeRabbit

  • Bug Fixes
    • Inbox now automatically refreshes after accepting, declining, or marking items as duplicates so it stays up-to-date.
    • Improved reliability when refreshing the inbox with better error handling and logging to surface refresh failures.

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings December 30, 2025 14:09
@CLAassistant
Copy link

CLAassistant commented Dec 30, 2025

CLA assistant check
All committers have signed the CLA.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 30, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

Exposes fetchInboxIssues from the useProjectInbox hook and calls it from the inbox issue header after accept, decline, or duplicate actions to refresh the inbox list and update open counts.

Changes

Cohort / File(s) Summary
Inbox refresh mechanism
src/hooks/store/use-project-inbox, apps/web/core/components/inbox/content/inbox-issue-header.tsx
Added fetchInboxIssues to the return value of useProjectInbox. The inbox issue header now calls fetchInboxIssues(workspaceSlug, projectId, "filter-loading") after accept/decline/duplicate actions with error logging on failure.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I nibbled through code with a curious twitch,
Pressed accept and decline with a joyful twitch,
Then I called fetch again with a happy hop,
Counts refreshed, stale numbers did stop —
Inbox aligned, and I did a flip-flop!

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description check ✅ Passed The PR description covers the main changes, includes specific improvements, references the linked issue (#8473), and provides a note section explaining the technical approach with try/catch and logging.
Linked Issues check ✅ Passed The PR directly addresses issue #8473 by implementing automatic inbox refresh after accept, decline, and duplicate actions, ensuring the open count updates immediately without manual refresh.
Out of Scope Changes check ✅ Passed All changes are scoped to refreshing the inbox after the three specified actions; no unrelated changes to snooze, delete flows, or navigation are introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately describes the main change: fixing the intake open count not updating after accept, decline, or duplicate actions, which matches the PR objectives and code changes.
✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request fixes a bug where the inbox issue count was not updating after performing accept, decline, or duplicate actions on inbox issues. The fix ensures the inbox issue list is refreshed after these status changes to keep the UI synchronized with the latest data.

Key changes:

  • Added fetchInboxIssues to the destructured hooks from useProjectInbox
  • Inserted fetchInboxIssues calls after accept, decline, and duplicate status updates to refresh the inbox list

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a37e5e2 and 5d0f435.

📒 Files selected for processing (1)
  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{ts,tsx,mts,cts}

📄 CodeRabbit inference engine (.github/instructions/typescript.instructions.md)

**/*.{ts,tsx,mts,cts}: Use const type parameters for more precise literal inference in TypeScript 5.0+
Use the satisfies operator to validate types without widening them
Leverage inferred type predicates to reduce the need for explicit is return types in filter/check functions
Use NoInfer<T> utility to block inference for specific type arguments when they should be determined by other arguments
Utilize narrowing in switch(true) blocks for control flow analysis (TypeScript 5.3+)
Rely on narrowing from direct boolean comparisons for type guards
Trust preserved narrowing in closures when variables aren't modified after the check (TypeScript 5.4+)
Use constant indices to narrow object/array properties (TypeScript 5.5+)
Use standard ECMAScript decorators (Stage 3) instead of legacy experimentalDecorators
Use using declarations for explicit resource management with Disposable pattern instead of manual cleanup (TypeScript 5.2+)
Use with { type: "json" } for import attributes; avoid deprecated assert syntax (TypeScript 5.3/5.8+)
Use import type explicitly when importing types to ensure they are erased during compilation, respecting verbatimModuleSyntax flag
Use .ts, .mts, .cts extensions in import type statements (TypeScript 5.2+)
Use import type { Type } from "mod" with { "resolution-mode": "import" } for specific module resolution contexts (TypeScript 5.3+)
Use new iterator methods (map, filter, etc.) if targeting modern environments (TypeScript 5.6+)
Utilize new Set methods like union, intersection, etc., when available (TypeScript 5.5+)
Use Object.groupBy / Map.groupBy standard methods for grouping instead of external libraries (TypeScript 5.4+)
Use Promise.withResolvers() for creating promises with exposed resolve/reject functions (TypeScript 5.7+)
Use copying array methods (toSorted, toSpliced, with) for immutable array operations (TypeScript 5.2+)
Avoid accessing instance fields via super in classes (TypeScript 5....

Files:

  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Enable TypeScript strict mode and ensure all files are fully typed

Files:

  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
**/*.{js,jsx,ts,tsx,json,css}

📄 CodeRabbit inference engine (AGENTS.md)

Use Prettier with Tailwind plugin for code formatting, run pnpm fix:format

Files:

  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{js,jsx,ts,tsx}: Use ESLint with shared config across packages, adhering to max warnings limits per package
Use camelCase for variable and function names, PascalCase for components and types
Use try-catch with proper error types and log errors appropriately

Files:

  • apps/web/core/components/inbox/content/inbox-issue-header.tsx
🧬 Code graph analysis (1)
apps/web/core/components/inbox/content/inbox-issue-header.tsx (1)
apps/space/core/store/publish/publish.store.ts (1)
  • workspaceSlug (93-95)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Agent
  • GitHub Check: CodeQL analysis (javascript-typescript)
  • GitHub Check: Cursor Bugbot
🔇 Additional comments (1)
apps/web/core/components/inbox/content/inbox-issue-header.tsx (1)

62-62: LGTM! Function extraction is correct.

The fetchInboxIssues function is properly extracted from the hook and will be used to refresh the inbox list after actions.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

This PR is being reviewed by Cursor Bugbot

Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

await fetchInboxIssues(workspaceSlug, projectId, "filter-loading");
} catch (error) {
console.error("Failed to refresh inbox issues:", error);
}
Copy link

Choose a reason for hiding this comment

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

Duplicate handler missing redirection after list refresh

The handleInboxIssueDuplicate function now calls fetchInboxIssues to refresh the sidebar list, but unlike handleInboxIssueAccept, handleInboxIssueDecline, and handleInboxIssueSnooze, it lacks calls to redirectIssue() and handleRedirection(). When an issue is marked as duplicate, the sidebar refreshes and filters out the duplicated issue, but the user remains viewing that issue in the main content area. This creates an inconsistent UI state where the user is viewing an issue that no longer appears in the visible sidebar list.

Fix in Cursor Fix in Web

Copy link
Author

Choose a reason for hiding this comment

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

Redirection logic was originally not written for mark duplication already and hence no new logic was introduced from my side as well.

@a-faqahmad a-faqahmad changed the title Bug: Intake open count not updating after accept, decline, or duplicate Fix: Intake open count not updating after accept, decline, or duplicate Dec 30, 2025
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.

[bug]: Intake open count not updating after accept, decline, or duplicate

2 participants