Moved fields to be have only a getter and a place in props

This commit is contained in:
Alexander Cerutti
2021-09-25 18:12:41 +02:00
parent 3ad4c42041
commit fb0fac0cab

View File

@@ -26,17 +26,19 @@ const LOCALIZED_FILE_REGEX_BASE = "(?<lang>[a-zA-Z-]{2,}).lproj/";
export default class PKPass extends Bundle { export default class PKPass extends Bundle {
private certificates: Certificates; private certificates: Certificates;
private [fieldKeysPoolSymbol] = new Set<string>(); private [fieldKeysPoolSymbol] = new Set<string>();
private [propsSymbol]: Schemas.ValidPass = {}; private [propsSymbol]: Schemas.ValidPass = {
primaryFields /*****/: new FieldsArray(this[fieldKeysPoolSymbol]),
secondaryFields /***/: new FieldsArray(this[fieldKeysPoolSymbol]),
auxiliaryFields /***/: new FieldsArray(this[fieldKeysPoolSymbol]),
headerFields /******/: new FieldsArray(this[fieldKeysPoolSymbol]),
backFields /********/: new FieldsArray(this[fieldKeysPoolSymbol]),
};
private [localizationSymbol]: { private [localizationSymbol]: {
[lang: string]: { [lang: string]: {
[placeholder: string]: string; [placeholder: string]: string;
}; };
} = {}; } = {};
public primaryFields /*****/ = new FieldsArray(this[fieldKeysPoolSymbol]); public type: string = undefined; /** @TODO change type */
public secondaryFields /***/ = new FieldsArray(this[fieldKeysPoolSymbol]);
public auxiliaryFields /***/ = new FieldsArray(this[fieldKeysPoolSymbol]);
public headerFields /******/ = new FieldsArray(this[fieldKeysPoolSymbol]);
public backFields /********/ = new FieldsArray(this[fieldKeysPoolSymbol]);
/** /**
* Either create a pass from another one * Either create a pass from another one
@@ -179,6 +181,46 @@ export default class PKPass extends Bundle {
return this[propsSymbol]["boardingPass"]?.transitType; return this[propsSymbol]["boardingPass"]?.transitType;
} }
/**
* Allows accessing to primaryFields object
*/
get primaryFields(): Schemas.Field[] {
return this[propsSymbol][this.type].primaryFields;
}
/**
* Allows accessing to secondaryFields object
*/
get secondaryFields(): Schemas.Field[] {
return this[propsSymbol][this.type].secondaryFields;
}
/**
* Allows accessing to auxiliaryFields object
*/
get auxiliaryFields(): Schemas.Field[] {
return this[propsSymbol][this.type].auxiliaryFields;
}
/**
* Allows accessing to headerFields object
*/
get headerFields(): Schemas.Field[] {
return this[propsSymbol][this.type].headerFields;
}
/**
* Allows accessing to backFields object
*/
get backFields(): Schemas.Field[] {
return this[propsSymbol][this.type].backFields;
}
// **************************** // // **************************** //
// *** ASSETS SETUP METHODS *** // // *** ASSETS SETUP METHODS *** //
// **************************** // // **************************** //
@@ -255,9 +297,9 @@ export default class PKPass extends Bundle {
"generic", "generic",
] as string[]; /** @TODO fix this type */ ] as string[]; /** @TODO fix this type */
const type = possibleTypes.find((type) => Boolean(data[type])); this.type = possibleTypes.find((type) => Boolean(data[type]));
if (!type) { if (!this.type) {
/** /**
* @TODO improve message * @TODO improve message
*/ */
@@ -265,11 +307,11 @@ export default class PKPass extends Bundle {
throw new Error("Cannot find a valid type in this pass.json"); throw new Error("Cannot find a valid type in this pass.json");
} }
this.headerFields.push(...data[type]?.headerFields); this.headerFields.push(...data[this.type]?.headerFields);
this.primaryFields.push(...data[type]?.primaryFields); this.primaryFields.push(...data[this.type]?.primaryFields);
this.secondaryFields.push(...data[type]?.secondaryFields); this.secondaryFields.push(...data[this.type]?.secondaryFields);
this.auxiliaryFields.push(...data[type]?.auxiliaryFields); this.auxiliaryFields.push(...data[this.type]?.auxiliaryFields);
this.backFields.push(...data[type]?.backFields); this.backFields.push(...data[this.type]?.backFields);
} }
// ************************* // // ************************* //