Add extension code

This commit is contained in:
Petros Koutsolampros 2022-09-22 19:03:03 +01:00
parent 20b29d20cd
commit 52c2cf5adf
3 changed files with 74 additions and 0 deletions

10
makexpi.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/sh
NAME=thunderbird-thread-in-same-folder
VERSION=1.00
ZIPFILE=${NAME}-${VERSION}.xpi
rm -f ${ZIPFILE}
(cd src && zip -r - .) > ${ZIPFILE}

41
src/background.js Normal file
View file

@ -0,0 +1,41 @@
'use strict'
async function* iterateMessagePages(page) {
for (let message of page.messages) {
yield message;
}
while (page.id) {
page = await messenger.messages.continueList(page.id);
for (let message of page.messages) {
yield message;
}
}
}
async function load() {
await messenger.messages.onNewMailReceived.addListener(async (folder, messages) => {
for await (let message of iterateMessagePages(messages)) {
let full = await messenger.messages.getFull(message.id);
let inReplyTos = full["headers"]["in-reply-to"];
if (inReplyTos.length > 0) {
let inReplyTo = inReplyTos[0]
if (inReplyTo.startsWith("<")) {
inReplyTo = inReplyTo.substring(1);
}
if (inReplyTo.endsWith(">")) {
inReplyTo = inReplyTo.substring(0, inReplyTo.length - 1)
}
let queryResult = await messenger.messages.query({"headerMessageId" : inReplyTo})
if (queryResult.messages.length > 0) {
let parent = queryResult.messages[0]
if (parent['folder'] != message['folder']) {
messenger.messages.move([message.id], parent['folder'])
}
}
}
}
})
}
document.addEventListener("DOMContentLoaded", load);

23
src/manifest.json Normal file
View file

@ -0,0 +1,23 @@
{
"name": "Thread in same folder",
"description": "Runs after junk classification and filtering to make sure a message lands in the same folder as its parent in a thread",
"version": "1.0",
"author": "Petros Koutsolampros",
"applications": {
"gecko": {
"id": "threadInSameFolder@pklampros.io",
"strict_min_version": "78.0"
}
},
"background": {
"scripts": [
"background.js"
]
},
"permissions": [
"messagesRead",
"accountsRead",
"messagesMove"
],
"manifest_version": 2
}