Coding Phase - Week 7 Report

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.


This demo shows the different export types of a note (HTML, Markdown, Text).


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 week 4 & 5 by bishoy-magdy · Pull Request #4 · joplin/plugin-email · GitHub?


Before: the red lines
After: the Green Lines



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 :wink:

Okay, let's clarify more.

linter helps the code be more readable, diagnose and fix technical issues, ...


import { Login } from "../model/message.model"

[space]onStart: async function () {'Email Plugin Started!');
		await app.init();


import {Login} from '../model/message.model';

[tab]onStart: async function() {'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.


return new Promise((resolve, reject) => {


return new Promise<void>((resolve, reject) => {
1 Like