mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-15 13:25:19 +00:00
Added support to relevantDate renaming to date
This commit is contained in:
@@ -1010,6 +1010,11 @@ export default class PKPass extends Bundle {
|
|||||||
* Allows setting a series of relevancy intervals or
|
* Allows setting a series of relevancy intervals or
|
||||||
* relevancy entries for the pass.
|
* relevancy entries for the pass.
|
||||||
*
|
*
|
||||||
|
* Please note that `RelevantDate[]` `relevantDate` property was renamed
|
||||||
|
* in "date" since iOS 26. Since retro-compatibility is not ensured,
|
||||||
|
* this methods takes `date`, and fallbacks to `relevantDate`, and use
|
||||||
|
* the first value found for both properties.
|
||||||
|
*
|
||||||
* @param {Schemas.RelevantDate[] | null} relevancyEntries
|
* @param {Schemas.RelevantDate[] | null} relevancyEntries
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
@@ -1031,10 +1036,13 @@ export default class PKPass extends Bundle {
|
|||||||
Schemas.validate(Schemas.RelevantDate, entry);
|
Schemas.validate(Schemas.RelevantDate, entry);
|
||||||
|
|
||||||
if (isRelevantEntry(entry)) {
|
if (isRelevantEntry(entry)) {
|
||||||
|
const date = Utils.processDate(
|
||||||
|
new Date(entry.date || entry.relevantDate),
|
||||||
|
);
|
||||||
|
|
||||||
acc.push({
|
acc.push({
|
||||||
relevantDate: Utils.processDate(
|
relevantDate: date,
|
||||||
new Date(entry.relevantDate),
|
date,
|
||||||
),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
@@ -1193,5 +1201,8 @@ function validateJSONBuffer(
|
|||||||
function isRelevantEntry(
|
function isRelevantEntry(
|
||||||
entry: Schemas.RelevantDate,
|
entry: Schemas.RelevantDate,
|
||||||
): entry is Schemas.RelevancyEntry {
|
): entry is Schemas.RelevancyEntry {
|
||||||
return Object.prototype.hasOwnProperty.call(entry, "relevantDate");
|
return (
|
||||||
|
Object.prototype.hasOwnProperty.call(entry, "relevantDate") ||
|
||||||
|
Object.prototype.hasOwnProperty.call(entry, "date")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,19 @@ export interface RelevancyInterval {
|
|||||||
endDate: string | Date;
|
endDate: string | Date;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RelevancyEntry {
|
/**
|
||||||
|
* @iOSVersion 18 => "relevantDate"
|
||||||
|
* @iOSVersion 26 => "date"
|
||||||
|
*/
|
||||||
|
export type RelevancyEntry =
|
||||||
|
| {
|
||||||
|
date: string | Date;
|
||||||
|
relevantDate?: string | Date;
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
date?: string | Date;
|
||||||
relevantDate: string | Date;
|
relevantDate: string | Date;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @iOSVersion 18
|
* @iOSVersion 18
|
||||||
@@ -73,6 +83,14 @@ export const RelevantDate = Joi.alternatives(
|
|||||||
).required(),
|
).required(),
|
||||||
}),
|
}),
|
||||||
Joi.object<RelevancyEntry>().keys({
|
Joi.object<RelevancyEntry>().keys({
|
||||||
|
/**
|
||||||
|
* Since iOS 26
|
||||||
|
*/
|
||||||
|
date: Joi.alternatives(Joi.string().isoDate(), Joi.date().iso()),
|
||||||
|
/**
|
||||||
|
* Since iOS 18, then was renamed in
|
||||||
|
* 'date' in iOS 26 (what a breaking change)
|
||||||
|
*/
|
||||||
relevantDate: Joi.alternatives(
|
relevantDate: Joi.alternatives(
|
||||||
Joi.string().isoDate(),
|
Joi.string().isoDate(),
|
||||||
Joi.date().iso(),
|
Joi.date().iso(),
|
||||||
|
|||||||
Reference in New Issue
Block a user