Add extension code
This commit is contained in:
parent
20b29d20cd
commit
52c2cf5adf
3 changed files with 74 additions and 0 deletions
10
makexpi.sh
Executable file
10
makexpi.sh
Executable 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
41
src/background.js
Normal 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
23
src/manifest.json
Normal 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
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue