Goals Achieved
- Added the feature to save the last change on the screen (main screen) when the plugin is closed.
- Created email parser class and added the unit test for the email parser class.
- I installed turndown and added 'joplin/turndown-plugin-gfm' plugin (convert HTML --> Markdown)
- I extracted plain text with links from the HTML message.
- Created the class responsible for posting notes to Joplin.
Next week
- Add inline attachments to note.
- Start by adding a feature that converts offline email messages into notes.
- Make changes according to the feedback on my PR.
Demo
This demo shows the different export types of a note (HTML, Markdown, Text).
4 Likes
can you mention them in your next report (and please continue using the link to the PR)?
- could you setup some linter on your repo as indentation is inconsistent?
- I think this is where having type annotations could help
I would like to see how it improved your PR. These kind of things happens quite often, so would be nice to have good before/after example.
is that due https://github.com/joplin/plugin-email/pull/4#issuecomment-1194563680?
Sure
Before: the red lines
After: the Green Lines
changes
changes
Not exactly,Although this problem that mentioned in this comment, I tested it on Linux and Windows and it works fine.but I will discuss this problem when I create a PR.
that is too much at once, it is about giving examples for lessons learned pure code is not helpful 
Okay, let's clarify more.
linter helps the code be more readable, diagnose and fix technical issues, ...
Before:
import { Login } from "../model/message.model"
joplin.plugins.register({
[space]onStart: async function () {
console.info('Email Plugin Started!');
await app.init();
},
});
After:
import {Login} from '../model/message.model';
joplin.plugins.register({
[tab]onStart: async function() {
console.info('Email Plugin Started!');
await app.init();
},
});
I used an annotated type void in the promise to annotate that the promise doesn't return any value when resolved.
Before:
return new Promise((resolve, reject) => {
After:
return new Promise<void>((resolve, reject) => {
1 Like