elie222 / inbox-zero

Open source email app to reach inbox zero fast.
https://www.getinboxzero.com
GNU Affero General Public License v3.0
2.17k stars 194 forks source link

Summary update email #186

Closed elie222 closed 1 month ago

elie222 commented 1 month ago

Summary by CodeRabbit

vercel[bot] commented 1 month ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
inbox-zero ✅ Ready (Inspect) Visit Preview May 28, 2024 8:31am
coderabbitai[bot] commented 1 month ago

Walkthrough

The latest updates introduce a new "Summary Email" feature, encompassing changes to user settings, API endpoints, database schema, and email templates. Key modifications include adding a "Summary Email" option in the settings UI, updating backend logic to handle this new email type, and creating a new email template for summary emails.

Changes

File Path Change Summary
apps/web/app/(app)/settings/EmailUpdatesSection.tsx Added a new Select component for "Summary Email" in StatsUpdateSectionForm. Commented out the original "Stats Update Email" component.
apps/web/app/(app)/settings/page.tsx Uncommented the import of EmailUpdatesSection to enable its use in the Settings component.
apps/web/app/api/resend/all/route.ts Removed SendWeeklyStatsAllUpdateResponse type and refactored sendWeeklyStatsAllUpdate to remove return type annotation.
apps/web/app/api/resend/route.ts Removed SendWeeklyStatsBody and SendWeeklyStatsResponse types; modified sendWeeklyStats to accept an email parameter directly.
apps/web/app/api/resend/summary/all/route.ts Introduced functionality for sending summary updates based on user email frequency settings.
apps/web/app/api/resend/summary/route.ts Added logic for sending summary emails based on specific criteria, handling both GET and POST requests.
apps/web/app/api/user/me/route.ts Added summaryEmailFrequency field to the user object.
apps/web/app/api/user/settings/email-updates/route.ts Added summaryEmailFrequency field to the data object being updated in saveEmailUpdateSettings.
apps/web/app/api/user/settings/email-updates/validation.ts Added summaryEmailFrequency field to saveEmailUpdateSettingsBody with enum values [Frequency.WEEKLY, Frequency.NEVER].
apps/web/prisma/schema.prisma Renamed statsEmailFrequency to summaryEmailFrequency, added lastSummaryEmailAt field, and adjusted field order in User model.
apps/web/providers/SWRProvider.tsx Changed fetcher function to local scope, removed export of useSWRContext function.
packages/resend/emails/summary.tsx Introduced SummaryEmail component and SummaryEmailProps interface for generating summary email templates.
packages/resend/src/send.tsx Added sendSummaryEmail function, imported SummaryEmail and SummaryEmailProps, and modified sendEmail function for error handling.

Sequence Diagram(s) (Beta)

sequenceDiagram
    participant User
    participant SettingsPage
    participant BackendAPI
    participant Database
    participant EmailService

    User->>SettingsPage: Open Settings
    SettingsPage->>BackendAPI: Fetch User Settings
    BackendAPI->>Database: Get User Settings
    Database-->>BackendAPI: Return User Settings
    BackendAPI-->>SettingsPage: Return Settings Data
    User->>SettingsPage: Update Email Frequency
    SettingsPage->>BackendAPI: Save Email Frequency
    BackendAPI->>Database: Update User Settings
    Database-->>BackendAPI: Confirm Update
    BackendAPI-->>SettingsPage: Confirm Save

    BackendAPI->>EmailService: Trigger Summary Email
    EmailService-->>User: Send Summary Email

In the meadow of code, a change took flight, With summary emails, our users delight. Settings now gleam with options anew, Weekly or never, the choice is for you. Backend and schema, in harmony they sing, A seamless update, like the breeze in spring. 🐇✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to full the review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.