Skip to content

Comments

Notifications system#727

Merged
rajat1saxena merged 2 commits intomainfrom
issue-724
Feb 22, 2026
Merged

Notifications system#727
rajat1saxena merged 2 commits intomainfrom
issue-724

Conversation

@rajat1saxena
Copy link
Member

What's new

  • Re-worked notification system
  • Get in app and email notifications

Migration required

This is a breaking change, and previous notifications will be wiped off as they cannot be supported by this new system.

apps/web/.migrations/17-02-26_18-10-seed-notification-preferences.js

@rajat1saxena rajat1saxena self-assigned this Feb 22, 2026
@vercel
Copy link

vercel bot commented Feb 22, 2026

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

Project Deployment Actions Updated (UTC)
courselit-docs Ready Ready Preview, Comment Feb 22, 2026 5:36am

Request Review

@rajat1saxena rajat1saxena merged commit 7c199af into main Feb 22, 2026
7 checks passed
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b928a2d79e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +131 to +134
requiredPermission &&
!isGeneralActivity &&
!checkPermission(recipient.permissions || [], [requiredPermission])
) {

Choose a reason for hiding this comment

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

P1 Badge Don't filter explicit recipients by global permission

This permission check can drop users that were already explicitly targeted via metadata.forUserIds. In joinCommunity, recipients are selected from community memberships (role: MODERATE) rather than user.permissions, so moderators without global community:manage will be skipped here and never receive COMMUNITY_MEMBERSHIP_REQUESTED notifications despite being in the target list. For targeted notifications, this gate creates false negatives.

Useful? React with 👍 / 👎.

Comment on lines +152 to +153
await Promise.allSettled(
Array.from(new Set(preference.channels)).map((channel) => {

Choose a reason for hiding this comment

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

P1 Badge Propagate channel failures so dispatch jobs can retry

Using Promise.allSettled here and ignoring its rejected results makes the worker report success even when channel delivery fails. That bypasses the BullMQ retry policy configured for this queue (attempts/backoff), so transient failures in app/email channel sends are silently dropped instead of being retried.

Useful? React with 👍 / 👎.

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.

1 participant