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