mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-25 17:56:06 +08:00
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
|
const DeltaStreamQueue = require(`${__base}/core/delta-stream-queue`);
|
||
|
|
||
|
module.exports = (server) => {
|
||
|
server.route({
|
||
|
method: 'GET',
|
||
|
path: '/delta/streaming',
|
||
|
config: {
|
||
|
description: 'Returns deltas since timestamp then streams deltas',
|
||
|
notes: 'Returns deltas since timestamp then streams deltas',
|
||
|
tags: ['threads'],
|
||
|
validate: {
|
||
|
params: {
|
||
|
},
|
||
|
},
|
||
|
response: {
|
||
|
schema: null,
|
||
|
},
|
||
|
},
|
||
|
handler: (request, reply) => {
|
||
|
const outputStream = require('stream').Readable();
|
||
|
outputStream._read = () => { return };
|
||
|
const pushMsg = (msg = "\n") => outputStream.push(msg)
|
||
|
|
||
|
request.getAccountDatabase()
|
||
|
.then((db) => {
|
||
|
return db.Transaction.findAll().then((transactions = []) => {
|
||
|
transactions.map(JSON.stringify).forEach(pushMsg);
|
||
|
DeltaStreamQueue.subscribe(db.accountId, pushMsg)
|
||
|
})
|
||
|
}).then(() => {
|
||
|
const keepAlive = setInterval(pushMsg, 1000);
|
||
|
request.on("disconnect", () => { clearTimeout(keepAlive) })
|
||
|
return reply(outputStream)
|
||
|
})
|
||
|
},
|
||
|
});
|
||
|
};
|