Set back beacons and locations to overwrite the current properties;

Merged beacons and locations relevancy logic
This commit is contained in:
Alexander Cerutti
2019-06-29 17:56:19 +02:00
parent b410a435df
commit 003b584221

View File

@@ -276,14 +276,11 @@ export class Pass implements PassIndexSignature {
return assignLength<PassWithLengthField>(0, this);
}
if (!data.length) {
return this._props["beacons"];
}
const valid = processRelevancySet("beacons", data);
const validBeacons = data.reduce<schema.Beacon[]>((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<PassWithLengthField>(0, this);
}
if (!data.length) {
return this._props["locations"];
}
const valid = processRelevancySet("locations", data);
const validLocations = data.reduce<schema.Location[]>((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<T>(key: string, data: T[]): T[] {
return data.reduce<T[]>((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;