http sse for progress
This commit is contained in:
parent
728c4e05fa
commit
e693bd9aa3
3 changed files with 213 additions and 6 deletions
|
@ -17,7 +17,7 @@ import { PdfExport } from "../../helpers/pdfExport";
|
|||
import UserService from "../../service/userService";
|
||||
import { TemplateHelper } from "../../helpers/templateHelper";
|
||||
import MailHelper from "../../helpers/mailHelper";
|
||||
import { NewsletterHelper } from "../../helpers/newsletterHelper";
|
||||
import { NewsletterEventType, NewsletterHelper } from "../../helpers/newsletterHelper";
|
||||
import { Salutation } from "../../enums/salutation";
|
||||
|
||||
/**
|
||||
|
@ -179,6 +179,43 @@ export async function createNewsletter(req: Request, res: Response): Promise<any
|
|||
res.send(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get newsletter printout progress by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getNewsletterPrintoutProgressById(req: Request, res: Response): Promise<any> {
|
||||
let newsletterId = parseInt(req.params.newsletterId);
|
||||
|
||||
res.setHeader("Content-Type", "text/event-stream");
|
||||
res.setHeader("Cache-Control", "no-cache");
|
||||
res.setHeader("Connection", "keep-alive");
|
||||
|
||||
res.flushHeaders();
|
||||
|
||||
const progressHandler = (data: NewsletterEventType) => {
|
||||
if (data.newsletterId == newsletterId && data.kind == "pdf") {
|
||||
res.write(JSON.stringify(data));
|
||||
}
|
||||
};
|
||||
|
||||
const completeHandler = (data: NewsletterEventType) => {
|
||||
if (data.newsletterId == newsletterId && data.kind == "pdf") {
|
||||
res.write(JSON.stringify(data));
|
||||
res.end();
|
||||
}
|
||||
};
|
||||
|
||||
NewsletterHelper.jobStatus.on("progress", progressHandler);
|
||||
NewsletterHelper.jobStatus.on("complete", completeHandler);
|
||||
|
||||
req.on("close", () => {
|
||||
NewsletterHelper.jobStatus.off("progress", progressHandler);
|
||||
NewsletterHelper.jobStatus.off("complete", completeHandler);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description create newsletter printouts for each member by id
|
||||
* @param req {Request} Express req object
|
||||
|
@ -241,6 +278,43 @@ export async function sendNewsletterById(req: Request, res: Response): Promise<a
|
|||
res.sendStatus(204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get newsletter sending progress by id
|
||||
* @param req {Request} Express req object
|
||||
* @param res {Response} Express res object
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
export async function getNewsletterSendingProgressById(req: Request, res: Response): Promise<any> {
|
||||
let newsletterId = parseInt(req.params.newsletterId);
|
||||
|
||||
res.setHeader("Content-Type", "text/event-stream");
|
||||
res.setHeader("Cache-Control", "no-cache");
|
||||
res.setHeader("Connection", "keep-alive");
|
||||
|
||||
res.flushHeaders();
|
||||
|
||||
const progressHandler = (data: NewsletterEventType) => {
|
||||
if (data.newsletterId == newsletterId && data.kind == "mail") {
|
||||
res.write(JSON.stringify(data));
|
||||
}
|
||||
};
|
||||
|
||||
const completeHandler = (data: NewsletterEventType) => {
|
||||
if (data.newsletterId == newsletterId && data.kind == "mail") {
|
||||
res.write(JSON.stringify(data));
|
||||
res.end();
|
||||
}
|
||||
};
|
||||
|
||||
NewsletterHelper.jobStatus.on("progress", progressHandler);
|
||||
NewsletterHelper.jobStatus.on("complete", completeHandler);
|
||||
|
||||
req.on("close", () => {
|
||||
NewsletterHelper.jobStatus.off("progress", progressHandler);
|
||||
NewsletterHelper.jobStatus.off("complete", completeHandler);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description synchronize newsletter by id
|
||||
* @param req {Request} Express req object
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue