Commit Graph
219 Commits
Author SHA1 Message Date
Sabrina Demagny 4cf68e94c5 🐛(backend) fix messaged_at date for import from eml file
Behavior should be identical to other imports (mbox, imap).
We should override created_at of message
2025-06-02 14:55:17 +02:00
Sabrina Demagny 1b74524ee4 (backend) allow importing messages via IMAP
Add new admin button to import messages via IMAP.
All to limit number of messages and define folder name.
2025-06-02 14:44:20 +02:00
Sabrina Demagny b801afd904 (backend) allow to upload mbox file to import messages
Allow to upload new kind of import file (.mbox) in admin interface.
2025-06-02 14:44:20 +02:00
jbpenrath 88ef0ac6b6 🍱(frontend) setup pwa attributes
Setup app to be usable as a standalone PWA.
Generate asssets through `npx pwa-asset-generator`
2025-05-28 23:48:14 +02:00
jbpenrath 9f37feec4c 📱(frontend) refine ui to display well on mobile
Rework thread panel, attachment and thread-messsage header
2025-05-28 19:08:07 +02:00
jbpenrath e4375c6d7a 📱(frontend) refine ui to display well on mobile
Rework header and panel open state to improve usability
on small viewports (mobile & tablet)
2025-05-28 16:17:48 +02:00
jbpenrath 6bc5c0730c 💄(frontend) add sass function to get breakpoint
Add a function `breakpoint` to quickly retrieve breakpoints defined in
Cunningham theme.
2025-05-28 16:17:48 +02:00
jbpenrath 6eeda8cd17 (frontend) display size in AttachmentItem
Display the size of an attachment. Furthermore we also
display attachments total size in the ThreadMessage (Previously
this info was only dispalyed in composer)
2025-05-28 09:48:58 +02:00
jbpenrath 04d4594972 💄(frontend) use a reset.css to remove annoying default style
Get from https://www.joshwcomeau.com/css/custom-css-reset/
2025-05-28 09:48:58 +02:00
jbpenrath 1859e9ac04 🐛(frontend) prevent form submittion on attachment selection
Currently the button to open the file dialog in the attachment uploader
component has no type so as it is embedded into a form it is considered by
default as a submit button so each time the user clicks on this button the form
is submitted...
2025-05-27 11:29:08 +02:00
jbpenrath 8d0fb29610 🚸(frontend) display thread access count in widget
We recently add a widget to manage thread accesses but we forgot to display
the total count of thread accesses. This is now fixed.
2025-05-26 18:27:11 +02:00
jbpenrath 3b53bfbe7e 🚸(frontend) improve attachment-uploader file dialog open management
Currently, when the user press the enter anywhere in the message form, the file
dialog was opened that was weird. Furthermore, the attachment uploader was not
fully clickable to open the file dialog that was also weird. So we improve
all of that.
2025-05-26 18:11:53 +02:00
jbpenrath c3ce9764d1 (frontend) list thread access and add modal to manage thread accesses
We can now share thread access accross mailboxes. We had some ui to list
and edit accesses.
2025-05-26 15:54:37 +02:00
jbpenrath db7631fd67 👽️(openapi) fix thread access serializer type and update schema and api
The `accesses` property into the Thread object was not propertly typed so we
update the serializer to fix the type by using dedicated sub serializers then we
run `make api-update` to update schema and api client.
2025-05-26 15:54:37 +02:00
jbpenrath 2b7a6a2025 (frontend) remove next-i18next
Remove this deps as its features are not relevant for our use of Next.js,
it's bigger than react-i18next pacakge and it can create confusion
about the lib to use within the codebase.
2025-05-26 15:54:37 +02:00
renovate[bot]andJean-Baptiste PENRATH 64649530f8 ⬆️(dependencies) update js dependencies 2025-05-26 10:02:23 +02:00
jbpenrath ad07b5a891 🐛(frontend) prevent validate MessageForm when attachments are not dirty
Currently when the AttachmentsUploader field is mounted, the form is validated
that is weird. Before triggering onChange callback in this component we check
if attachments has changed (the field is marked as dirty).

Then we remove a deprecated props.
2025-05-22 18:48:31 +02:00
jbpenrath 9906761b4d 🐛(frontend) prevent to create draft message twice
Currently if a draft is not yet created and the user quickly click
on the send button, two draft messages can be created. We disable the
send button until a draft message is created to prevent this behavior.
2025-05-22 17:30:54 +02:00
jbpenrath 6a725aba85 💄(frontend) fix toaster layout issue
When several toasts were display and they have different width
a container with a white background can be visible.
Furthermore, we improve the way to bind actions in toast to improve
look'n feel.
2025-05-22 16:40:08 +02:00
jbpenrath 172cbb4789 (frontend) upload attachments
Add upload attachment field in the MessageForm components.
2025-05-22 15:59:17 +02:00
jbpenrath e4c67558e3 👽️(api) complete openapi schema and regenerate
Improve the description of the blob api endpoint then regenerate
schema and client api through `make api-update`. Furthermore we
also update FetchApi interface to manage boundary multipart content type
2025-05-22 15:59:17 +02:00
Jean-Baptiste PENRATHandGitHub 7ddcc668f3 💚(ci) add job check-api-state (#111)
Add a job to ensure that api schema and client
are up-to-date.
2025-05-21 22:22:27 +02:00
Sylvain ZimmerandGitHub 3259eb07a6 (admin) add maildomainaccess model, api route and backend tests (#102)
* (admin) add maildomainacess model, api route and backend tests

* ♻️(drf) simplify API code
2025-05-21 22:21:45 +02:00
jbpenrath 63499a49e2 (frontend) display message attachments
Display the attachment list under the message body in the ThreadMessage
component if there is.
2025-05-21 15:24:49 +02:00
jbpenrath 1e1d22b07a (frontend) allow to trash a message and undo trash action
Currently, user was allowed to trash only threads, now it is able to trash
a single message. Furthermore to improve UX, when a thread or a message
is moved to trash, a toast is displayed and allow the user to undo its action.
2025-05-20 19:14:32 +02:00
Sabrina Demagny 17d1b0e1ac (backend) allow to upload eml file to import messages
Add new button on admin interface to upload message with eml file.
Create new message from eml.
2025-05-20 09:29:07 +02:00
Sabrina Demagny 3e98509dcc (api) add endpoint to search Mailboxes
Allow to search Mailboxes from same domain of a context Mailbox.
2025-05-20 01:25:49 +02:00
Sabrina Demagny 7d8500ac22 (backend) link a Mailbox to a Contact instance
Add FK to Contact on Mailbox model.
Display name of mailbox contact into list accesses of a thread
2025-05-19 20:24:22 +02:00
Sabrina Demagny 2c2eb3a39b Revert "(backend) enhance Mailbox model to add a display name"
This reverts commit c5d1ee220e.
2025-05-19 14:45:26 +02:00
Sabrina Demagny c5d1ee220e (backend) enhance Mailbox model to add a display name
Add an optional name field
2025-05-19 13:04:26 +02:00
Sabrina Demagny 65db4fddad (api) enhance Thread serializer to return thread accesses
Add list of thread accesses into Thread serializer
2025-05-19 12:55:05 +02:00
jbpenrath 0d214634ab (frontend) update sender of draft message
Previously it wasn't possible to change the sender of a draft message.
Now we allow that and in this case we remove the current draft and create
a new one in the new mailbox. After that we redirect the user to the view of
the new draft to continue it's edit!
2025-05-19 11:16:03 +02:00
jbpenrath 37220e615e (frontend) update selectedMailbox and selectedThread from url
Previously selectedMailbox and selectedThread was managed through a state,
it appears this easier and safer to update them accordingly to the url params.
2025-05-19 11:16:03 +02:00
jbpenrath c61ba946fa 👽️(api) add thread_id property to Message resource
Frontend needs to be able to retrieve the thread_id of a message
so we tweak the MessageSerializer to bind this information. Then we run
`make api-update` to update api schema and client.
2025-05-19 11:16:03 +02:00
Sylvain Zimmer dc0c578e65 🚀(scalingo) deploy worker process on scalingo and fix ES scripts 2025-05-17 10:05:54 +02:00
Sylvain Zimmer 812afc211f (search) add profile switch to print debug of ES search 2025-05-16 14:55:24 +02:00
Sylvain Zimmer bd9f4057f2 🐛(search) fix #98 by improving ES analyzers and search logic 2025-05-16 14:45:58 +02:00
Sabrina Demagny eca469e666 (api) add endpoint to manage ThreadAccess
Allows creating, updating, and deleting access to threads based on
user role.
2025-05-16 12:18:14 +02:00
jbpenrath bbb8f8cb4a (frontend) enhance search filters form and input handling
Added a new handleChange function to the SearchFiltersForm to update the
query on input change. Updated the SearchInput to handle search submissions
more effectively by allowing the closing of filters based on user interaction.
This improves the overall user experience when applying search filters.
2025-05-15 22:17:20 +02:00
jbpenrath b39133c82c (frontend) add search filters form
We have currently a raw search input, it's time to add a little ui to select
filter with ease.
2025-05-15 15:53:12 +02:00
Sylvain ZimmerandGitHub 87a949d4d2 (attach) add initial attachments support in in/outbound & api (#93) 2025-05-15 13:45:52 +02:00
Sabrina Demagny a99b2a0fae 🐛(backend) fix bcc lost after updated draft
Enhance and fix check to allow bcc displaying. Fix #85
2025-05-14 20:35:49 +02:00
Sabrina Demagny 11ffc48ead 🐛(backend) update thread stats after message hard delete
Call update_stats after delete one of thread's messages. Fixes #84.
2025-05-14 18:16:10 +02:00
jbpenrath 37d689bcb0 (frontend) add search input in the header
Allow the user to search in their email through a search input
2025-05-14 16:58:43 +02:00
jbpenrath b887e926c7 🔧(Makefile) add command to generate es index
Add `elasticsearch-index` command
2025-05-14 16:58:43 +02:00
jbpenrath 85e6cc8791 (frontend) allow to save draft without recipient
Make the `to` field optional to save draft then check if at least of recipient
(to, cc or bcc) has been defined.
2025-05-14 09:54:41 +02:00
jbpenrath e52dd1909f 🐛(frontend) allow to open link into MessageBody
Currently if a link does not open a new window, when the user clicks on the link
nothing happend. So we add `allow-popups` directive to allow this behavior.
2025-05-14 09:54:41 +02:00
jbpenrath a6427059ca 👔(frontend) manage QueueMessage timeout
Previously we expect the task retrieve endpoint could return a 404 when a task
does not exist but it is not possible (dce87f8) so instead we put a timeout to
stop to poll the task after a given delay.
2025-05-14 09:54:41 +02:00
Sylvain Zimmer dce87f864f (task) add test for task API and confirm unkown task behaviour
According to Celery's author here:
https://github.com/celery/celery/issues/3596#issuecomment-262102185

There is no way to check if a task ID exists. It will just return
"PENDING" indefinitely. Add tests for this accordingly.

Closes #91
2025-05-13 23:14:57 +02:00
renovate[bot]andJean-Baptiste PENRATH 3a3c79c645 ⬆️(dependencies) update js dependencies 2025-05-13 18:07:52 +02:00