Skip to content
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

Snoozing #40

Closed
andris9 opened this issue Dec 13, 2017 · 7 comments
Closed

Snoozing #40

andris9 opened this issue Dec 13, 2017 · 7 comments

Comments

@andris9
Copy link
Member

andris9 commented Dec 13, 2017

The great remind me later feature.

When applied the message would be removed from mailbox and put into snoozing collection. Once snooze time is reached the message is returned to mailbox as unseen message.

@andris9
Copy link
Member Author

andris9 commented Dec 13, 2017

Or solve this with folder actions:

 messages added to X: after Y minutes move INBOX as Unseen

@rakshith-ravi
Copy link
Contributor

@andris9 I'd love to work on this. I have experience with nodejs and am really interested in implementing this. Could you point me in the right direction please? Where do I start?

@andris9
Copy link
Member Author

andris9 commented Nov 19, 2019

@rakshith-ravi thanks for the offer. In general snoozing usually means that an email is moved to a temporary folder and once snoozing timeout is reached, the message is moved back to the original location. In regard of WildDuck it would require a new API endpoint somewhere here to move message and mark message as snoozed and also a task to move it back. Task handling is currently half baked, tasks are inserted directly to dabase (ie. here) and tasks can not be delayed (these are handled immediately).

So the steps would be linke this:

  1. add API endpoint to mark message as snoozed (this would move the message to Snooze folder and create the folder if it does not yet exist)
  2. The same API endpoint should also set up a delayed task to retrieve the message after snooze time
  3. Create a task handler to move snoozed message back to original location
  4. Update task handling to support delayed tasks

@rakshith-ravi
Copy link
Contributor

Hey @andris9. Sorry about the delayed response. Thank you for those links. They really do help me in understanding what's going on with the code. I'll be putting a few PRs over the next few days (along with issues for them). I'll start with a few really small ones before I move on to the big, snoozing one (I guess you could say.....I've snoozed that one for later xD).

Jokes aside, I wanted to get your opinion on a few things:

  • How do you feel about docker? I saw the thread in the other issue about it and didn't really see any progress. If I put up a PR with the Dockerfile, would you mind setting up an auto-build with travis (or whichever CI/CD system we use)?
  • Have you considered moving to TypeScript? I know it's a huge and daunting task, but might actually prove to be useful in the long run, with most errors being identified in compile-time rather than run-time. It can be done progressively. Doesn't need to be done all in one go. I have a good architecture in mind for TypeScript. Do let me know if you'd be interested in that.
  • This is kinda a silly one, but is there any other place where we can chat? Cluttering GitHub issues to clear my doubts isn't exactly the best way to go 🙈

@andris9
Copy link
Member Author

andris9 commented Nov 28, 2019

How do you feel about docker?

I haven't added Docker support because there are several ways of doing things, eg. which base packages to use, how to structure all the containers (mongodb for example could be configured either as standalone, as a replica set or as a sharded cluster, each having different requirements), should there be separate containers for different services like IMAP, POP3, SMTP etc. or use the most minimal approach to be able to spin up a fast testing environment, so I'm not sure what's the best way to go. For now I've kept the issue open and the only semi-official docker project to turn to has been https://github.com/astzweig/docker-wildduck as this is where I send people who ask about Docker. If you are willing to figure out a good approach and also to maintain it, then I would not mind adding it to the project.

Have you considered moving to TypeScript?

I'm not a fan of anything that requires transpiling to run. The code base is also not too big (~50k LOC excluding dependencies) but not small either so rewriting it is not easy. For example, I've been spending a lot of time to convert old callbacks to async..await and have achieved quite little so far, API handlers are all using await but the IMAP code still runs mostly on callbacks. Using JSDoc for some Typescript compatibility and IDE integration would be quite nice though.

is there any other place where we can chat?

Sure, why not, I set up a Gitter chat here, have been using it for some of my other projects as well.

Copy link
Contributor

This issue is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 15 days.

Copy link
Contributor

This issue was closed because it has been stalled for 15 days with no activity.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants