UNPKG

sim800

Version:

A modern and opiniated module for SIM800 GSM modems ( SIM800 / SIM800L ).

32 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deliveryReportStreamSubscriberFactory = void 0; const sim800_outgoing_sms_interface_1 = require("../interfaces/sim800-outgoing-sms.interface"); const deliveryReportStreamSubscriberFactory = (client, logger) => (event) => { var _a, _b; // trying to find the message in the queue const existingSms = client.outboxSpooler.find((sms) => sms.parts.some((part) => part.messageReference === event.messageReference)); if (existingSms) { // we know this part exists, as the first find() would have returned false otherwise const part = existingSms.parts.find((part) => part.messageReference === event.messageReference); part.status = event.status; part.detail = event.detail; if (event.status === sim800_outgoing_sms_interface_1.Sim800OutgoingSmsStatus.Delivered) { part.deliveryDate = new Date(); } // If this is not delivered, we can update the global message status if (event.status !== sim800_outgoing_sms_interface_1.Sim800OutgoingSmsStatus.Delivered) { existingSms.status = event.status; (_a = logger.verbose) === null || _a === void 0 ? void 0 : _a.call(logger, `SMS ${existingSms.parts.map((existingPart) => existingPart.messageReference)} is now "${existingSms.status}", details : ${existingSms.parts.map((existingPart) => `- Part: ${existingPart.messageReference} - ${existingPart.detail} -`)}`); client.eventEmitter.emit('delivery-report', existingSms.parts.map((existingPart) => existingPart.messageReference), existingSms.status, event.detail); } // If all parts are delivered, we can update the global message status if (existingSms.parts.every((part) => part.status === sim800_outgoing_sms_interface_1.Sim800OutgoingSmsStatus.Delivered)) { existingSms.status = sim800_outgoing_sms_interface_1.Sim800OutgoingSmsStatus.Delivered; (_b = logger.verbose) === null || _b === void 0 ? void 0 : _b.call(logger, `SMS ${existingSms.parts.map((existingPart) => existingPart.messageReference)} is now "Delivered"`); client.eventEmitter.emit('delivery-report', existingSms.parts.map((existingPart) => existingPart.messageReference), existingSms.status, existingSms.parts.map((existingPart) => (Object.assign({ messageReference: existingPart.messageReference, status: existingPart.status, detail: existingPart.detail }, (existingPart.deliveryDate ? { deliveryDate: existingPart.deliveryDate } : {}))))); } } }; exports.deliveryReportStreamSubscriberFactory = deliveryReportStreamSubscriberFactory; //# sourceMappingURL=delivery-report-stream-subscriber.js.map