-
Notifications
You must be signed in to change notification settings - Fork 25
Feat/1479 Add attachments when writing emails #1873
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this 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 PR adds attachment functionality to email composition, allowing users to upload files when writing emails and manage them before sending.
Changes:
- Added blob upload API integration for saving attachments
- Implemented UI components for attaching and managing files in compose mode
- Extended type definitions to support attachment metadata
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/web-app-mail/src/types.ts | Added schema and type for attachment blob upload responses |
| packages/web-app-mail/src/composables/useSaveAttachment.ts | Created composable for uploading attachment files to the blob storage API |
| packages/web-app-mail/src/components/MailWidget.vue | Integrated attachment button component into email compose UI |
| packages/web-app-mail/src/components/MailComposeForm.vue | Added attachments field to compose state and attachment list display |
| packages/web-app-mail/src/components/MailComposeAttachmentButton.vue | New component providing file picker UI and upload handling for attachments |
| packages/web-app-mail/src/components/MailAttachmentList.vue | Enhanced to support both download and compose modes with conditional rendering |
| packages/web-app-mail/src/components/MailAttachmentItem.vue | Extended to handle compose mode with remove functionality and flexible typing |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 7 out of 8 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 7 out of 8 changed files in this pull request and generated 2 comments.
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| for (const file of files) { | ||
| try { | ||
| const uploaded = await saveAttachment(props.accountId, file) | ||
| next.push({ |
Copilot
AI
Jan 26, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The id and blobId fields are assigned the same value. Consider whether both fields are necessary, or document why they need to be duplicated.
| next.push({ | |
| next.push({ | |
| // `id` is the identifier used by the compose form/UI, while `blobId` | |
| // is the identifier used by the mail backend. They currently share | |
| // the same value but are kept as separate fields intentionally. |
Add attachments when writing emails