xi-conversations

Minimal clone of thunderbird conversations
git clone https://git.ce9e.org/xi-conversations.git

commit
3b55be15fb628d67d5fd15b5c3732f19fd66aa3f
parent
2395488e17b20494d623734598d93ca8d7eeeff6
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2021-08-12 11:44
refactor: move code into getConversation helper

Diffstat

M experiment-api/api.js 71 +++++++++++++++++++++++++++++++------------------------------

1 files changed, 36 insertions, 35 deletions


diff --git a/experiment-api/api.js b/experiment-api/api.js

@@ -37,38 +37,43 @@ var unique = function(l, keyFn) {
   37    37 	});
   38    38 };
   39    39 
   40    -1 var getConversation = function(msgs, cb) {
   41    -1 	var conversationListener = {
   42    -1 		onItemsAdded: function() {},
   43    -1 		onItemsModified: function() {},
   44    -1 		onItemsRemoved: function() {},
   45    -1 		onQueryCompleted: function(collection) {
   46    -1 			cb(collection.items.filter(glodaMsg => glodaMsg.folderMessage));
   47    -1 		},
   48    -1 	};
   -1    40 var getConversation = function(msgs) {
   -1    41 	return new Promise(resolve => {
   -1    42 		var conversationListener = {
   -1    43 			onItemsAdded: function() {},
   -1    44 			onItemsModified: function() {},
   -1    45 			onItemsRemoved: function() {},
   -1    46 			onQueryCompleted: function(collection) {
   -1    47 				var results = collection.items;
   -1    48 				results = results.filter(glodaMsg => glodaMsg.folderMessage);
   -1    49 				results = unique(results, glodaMsg => glodaMsg.headerMessageID);
   -1    50 				resolve(results);
   -1    51 			},
   -1    52 		};
   49    53 
   50    -1 	var listener = {
   51    -1 		onItemsAdded: function() {},
   52    -1 		onItemsModified: function() {},
   53    -1 		onItemsRemoved: function() {},
   54    -1 		onQueryCompleted: function(collection) {
   55    -1 			if (collection.items.length) {
   56    -1 				var conversation = collection.items[0].conversation;
   57    -1 				conversation.getMessagesCollection(conversationListener, true);
   58    -1 			} else {
   59    -1 				cb(msgs.map(function(msg) {
   60    -1 					return {
   61    -1 						folderMessage: msg,
   62    -1 						attachmentInfos: [],
   63    -1 						mailingLists: null,
   64    -1 						_indexedBodyText: null,
   65    -1 					};
   66    -1 				}));
   67    -1 			}
   68    -1 		},
   69    -1 	};
   -1    54 		var listener = {
   -1    55 			onItemsAdded: function() {},
   -1    56 			onItemsModified: function() {},
   -1    57 			onItemsRemoved: function() {},
   -1    58 			onQueryCompleted: function(collection) {
   -1    59 				if (collection.items.length) {
   -1    60 					var conversation = collection.items[0].conversation;
   -1    61 					conversation.getMessagesCollection(conversationListener, true);
   -1    62 				} else {
   -1    63 					resolve(msgs.map(function(msg) {
   -1    64 						return {
   -1    65 							folderMessage: msg,
   -1    66 							attachmentInfos: [],
   -1    67 							mailingLists: null,
   -1    68 							_indexedBodyText: null,
   -1    69 						};
   -1    70 					}));
   -1    71 				}
   -1    72 			},
   -1    73 		};
   70    74 
   71    -1 	Gloda.getMessageCollectionForHeaders(msgs, listener, null);
   -1    75 		Gloda.getMessageCollectionForHeaders(msgs, listener, null);
   -1    76 	});
   72    77 };
   73    78 
   74    79 var xi = class extends ExtensionCommon.ExtensionAPI {
@@ -91,11 +96,7 @@ var xi = class extends ExtensionCommon.ExtensionAPI {
   91    96 				},
   92    97 				getConversation(uris) {
   93    98 					// https://bugzilla.mozilla.org/show_bug.cgi?id=1665676
   94    -1 					return new Promise(resolve => {
   95    -1 						getConversation(uris.map(uri2msg), results => {
   96    -1 							resolve(unique(results, glodaMsg => glodaMsg.headerMessageID).map(glodaMsg2msg));
   97    -1 						});
   98    -1 					});
   -1    99 					return getConversation(uris.map(uri2msg)).then(results => results.map(glodaMsg2msg));
   99   100 				},
  100   101 				getFull(id) {
  101   102 					// the original getFull() is restricted to these fields: