From 003b58422123d6c13998017736c7af6170cbac61 Mon Sep 17 00:00:00 2001 From: Alexander Cerutti Date: Sat, 29 Jun 2019 17:56:19 +0200 Subject: [PATCH] Set back beacons and locations to overwrite the current properties; Merged beacons and locations relevancy logic --- src/pass.ts | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/pass.ts b/src/pass.ts index 790ec85..48e1d25 100644 --- a/src/pass.ts +++ b/src/pass.ts @@ -276,14 +276,11 @@ export class Pass implements PassIndexSignature { return assignLength(0, this); } - if (!data.length) { - return this._props["beacons"]; - } + const valid = processRelevancySet("beacons", data); - const validBeacons = data.reduce((acc, current) => { - if (!(Object.keys(current).length && schema.isValid(current, "beaconsDict"))) { - return acc; - } + if (valid.length) { + this._props["beacons"] = valid; + } return [...acc, current]; }, []); @@ -309,14 +306,11 @@ export class Pass implements PassIndexSignature { return assignLength(0, this); } - if (!data.length) { - return this._props["locations"]; - } + const valid = processRelevancySet("locations", data); - const validLocations = data.reduce((acc, current) => { - if (!(Object.keys(current).length && schema.isValid(current, "locationsDict"))) { - return acc; - } + if (valid.length) { + this._props["locations"] = valid; + } return [...acc, current]; }, []); @@ -684,6 +678,16 @@ function barcodesFromUncompleteData(message: string): schema.Barcode[] { ].map(format => schema.getValidated({ format, message }, "barcode")); } +function processRelevancySet(key: string, data: T[]): T[] { + return data.reduce((acc, current) => { + if (!(Object.keys(current).length && schema.isValid(current, `${key}Dict`))) { + return acc; + } + + return [...acc, current]; + }, []); +} + function processDate(key: string, date: Date): string | null { if (!(date instanceof Date)) { return null;