Skip to content

Feat/digest post type#5599

Open
capJavert wants to merge 5 commits intomainfrom
feat/digest-post-type
Open

Feat/digest post type#5599
capJavert wants to merge 5 commits intomainfrom
feat/digest-post-type

Conversation

@capJavert
Copy link
Contributor

@capJavert capJavert commented Feb 25, 2026

Changes

API: dailydotdev/daily-api#3635

Summary

  • Add PostType.Digest that renders a curated feed of posts at /posts/:id using DigestPostContent component
  • Inject stored Skadi ad snapshot into the digest feed at the backend-specified index via a new staticAd prop on useFeed/Feed
  • Add NotificationType.DigestReady with in-app notification toggle and cross-channel unsubscribe logic (only fully unsubscribes when both email and in-app are off)

Changes

  • Types & GraphQL: New PostType.Digest enum, DigestPostAd type, updated post flags fragment with digestPostIds and ad
  • DigestPostContent: New post content component rendering a feed of curated posts with header (date, stats, sources)
  • Ad injection: transformDigestAd maps backend ad shape to frontend Ad interface; staticAd param on useFeed inserts it at the correct index while keeping live ads disabled
  • Notification settings: DigestReady notification type, DigestNotification component for in-app tab, updated PersonalizedDigest email tab with cross-channel muting awareness
  • Tests: Unit tests for transformDigestAd and isMutingDigestCompletely

Test plan

  • Open a digest post at /posts/:digest-post-id and verify the curated feed renders with post cards
  • Verify the stored ad appears at the correct index in the digest feed
  • Verify Plus users see no ad when flags.ad is null
  • Toggle digest in-app notification on/off in notification settings
  • Verify unsubscribing both email and in-app channels fully unsubscribes from digest
  • Run pnpm --filter shared test — 13 new tests pass

Events

Did you introduce any new tracking events?

Experiment

Did you introduce any new experiments?

Manual Testing

Caution

Please make sure existing components are not breaking/affected by this PR

Preview domain

https://feat-digest-post-type.preview.app.daily.dev

capJavert and others added 3 commits February 25, 2026 16:58
Add digest post type support (Phase 1 & 2):
- Add PostType.Digest enum value and DIGEST_SOURCE constant
- Add digestPostIds and ad fields to PostFlags type and GraphQL fragments
- Create DigestPostContent component that renders a feed of curated posts
- Register in CONTENT_MAP and FeedItemComponent card type maps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Inject stored Skadi ads into the digest feed via a new staticAd prop on
Feed/useFeed, and add in-app notification controls for digest posts.

Phase 3 – Ad injection:
- Add staticAd support to useFeed and FeedProps
- Transform DigestPostAd → Ad interface in DigestPostContent
- Fix missing PostType.Digest in PostModalMap

Phase 4 – Notification settings:
- Add NotificationType.DigestReady
- Create DigestNotification component for in-app toggle
- Add digest section to InAppNotificationsTab
- Update PersonalizedDigest unsubscribe logic to respect in-app channel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…etely

Extract transformDigestAd to digest/utils.ts for testability and add
unit tests for the digest ad transformation and notification muting logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@capJavert capJavert self-assigned this Feb 25, 2026
@vercel
Copy link

vercel bot commented Feb 25, 2026

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

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Feb 25, 2026 10:23pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Feb 25, 2026 10:23pm

Request Review

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
API returns camelCase (companyName, companyLogo, callToAction) instead
of snake_case. Update type, fragments, transform utils, and tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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