fix: invalid dock badge count #250

Merged
talksik merged 1 commits from 239-web-app-showing-inaccurate-badge-count into main 2026-06-09 16:28:56 +00:00
talksik commented 2026-06-09 16:10:56 +00:00 (Migrated from github.com)

Closes #239

Summary by CodeRabbit

Bug Fixes

  • Improved notification badge behavior by refining how the unseen message count is tracked and displayed on the app icon.
Closes #239 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Bug Fixes * Improved notification badge behavior by refining how the unseen message count is tracked and displayed on the app icon. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2026-06-09 16:11:10 +00:00 (Migrated from github.com)

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 91f8df6a-643d-486d-97c9-c0ef6742f439

📥 Commits

Reviewing files that changed from the base of the PR and between c1f5b6c8c1 and df5495a8bd.

📒 Files selected for processing (1)
  • js/desktop/src/hooks/use-dock-badge.ts
💤 Files with no reviewable changes (1)
  • js/desktop/src/hooks/use-dock-badge.ts

📝 Walkthrough

Walkthrough

The useDockBadge hook updates the macOS dock badge count from Firestore-derived unseenCount via useEffect. The cleanup function that previously reset the badge to 0 on unmount or dependency changes has been removed.

Changes

Dock Badge Effect Behavior

Layer / File(s) Summary
Dock badge effect cleanup removal
js/desktop/src/hooks/use-dock-badge.ts
The useEffect hook that updates platform.app.setDockBadge(unseenCount) no longer includes a cleanup handler to reset the badge to 0 when the component unmounts or dependencies change.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A badge that persists when the effect takes leave,
No reset in sight, quite bold to believe,
One line removed, a cleanup passed by,
The dock badge stands tall beneath the sky!

🚥 Pre-merge checks | 5
Passed checks (5 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title directly addresses the main change: fixing an invalid dock badge count by removing a problematic cleanup function in the useDockBadge hook.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 239-web-app-showing-inaccurate-badge-count

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

<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- review_stack_entry_start --> [![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/flowy-live/llink/pull/250?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> No actionable comments were generated in the recent review. 🎉 <details> <summary>ℹ️ Recent review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro Plus **Run ID**: `91f8df6a-643d-486d-97c9-c0ef6742f439` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between c1f5b6c8c1b5536279e839d35352be90d5bc8e28 and df5495a8bd6ef966cd9e3bed90c39bcd77c203b7. </details> <details> <summary>📒 Files selected for processing (1)</summary> * `js/desktop/src/hooks/use-dock-badge.ts` </details> <details> <summary>💤 Files with no reviewable changes (1)</summary> * js/desktop/src/hooks/use-dock-badge.ts </details> </details> --- <!-- walkthrough_start --> <details> <summary>📝 Walkthrough</summary> ## Walkthrough The `useDockBadge` hook updates the macOS dock badge count from Firestore-derived `unseenCount` via `useEffect`. The cleanup function that previously reset the badge to `0` on unmount or dependency changes has been removed. ## Changes **Dock Badge Effect Behavior** | Layer / File(s) | Summary | |---|---| | **Dock badge effect cleanup removal** <br> `js/desktop/src/hooks/use-dock-badge.ts` | The `useEffect` hook that updates `platform.app.setDockBadge(unseenCount)` no longer includes a cleanup handler to reset the badge to `0` when the component unmounts or dependencies change. | ## Estimated code review effort 🎯 1 (Trivial) | ⏱️ ~3 minutes ## Poem > 🐰 *A badge that persists when the effect takes leave,* > *No reset in sight, quite bold to believe,* > *One line removed, a cleanup passed by,* > *The dock badge stands tall beneath the sky!* </details> <!-- walkthrough_end --> <!-- pre_merge_checks_walkthrough_start --> <details> <summary>🚥 Pre-merge checks | ✅ 5</summary> <details> <summary>✅ Passed checks (5 passed)</summary> | Check name | Status | Explanation | | :------------------------: | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title directly addresses the main change: fixing an invalid dock badge count by removing a problematic cleanup function in the useDockBadge hook. | | Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | </details> <sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub> </details> <!-- pre_merge_checks_walkthrough_end --> <!-- finishing_touch_checkbox_start --> <details> <summary>✨ Finishing Touches</summary> <details> <summary>📝 Generate docstrings</summary> - [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> Create stacked PR - [ ] <!-- {"checkboxId": "3e1879ae-f29b-4d0d-8e06-d12b7ba33d98"} --> Commit on current branch </details> <details> <summary>🧪 Generate unit tests (beta)</summary> - [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests - [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `239-web-app-showing-inaccurate-badge-count` </details> </details> <!-- finishing_touch_checkbox_end --> <!-- tips_start --> --- <sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub> <!-- tips_end --> <!-- internal state start --> <!-- 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= --> <!-- internal state end -->
Sign in to join this conversation.