Giter Site home page Giter Site logo

Snoozing about wildduck HOT 5 CLOSED

nodemailer avatar nodemailer commented on May 22, 2024
Snoozing

from wildduck.

Comments (5)

andris9 avatar andris9 commented on May 22, 2024 1

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.

from wildduck.

andris9 avatar andris9 commented on May 22, 2024

Or solve this with folder actions:

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

from wildduck.

rakshith-ravi avatar rakshith-ravi commented on May 22, 2024

@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?

from wildduck.

andris9 avatar andris9 commented on May 22, 2024

@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

from wildduck.

rakshith-ravi avatar rakshith-ravi commented on May 22, 2024

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 🙈

from wildduck.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.