forked from mirrors/gecko-dev
66 lines
2.3 KiB
JavaScript
66 lines
2.3 KiB
JavaScript
/* eslint-disable no-useless-concat */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
import { CreditCard } from "resource://gre/modules/CreditCard.sys.mjs";
|
|
import { FormAutofillNameUtils } from "resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs";
|
|
|
|
/**
|
|
* The CreditCardRecord class serves to handle and normalize internal credit card records.
|
|
* Unlike the CreditCard class, which represents actual card data, CreditCardRecord is used
|
|
* for processing and consistent data representation.
|
|
*/
|
|
export class CreditCardRecord {
|
|
static normalizeFields(creditCard) {
|
|
this.#normalizeCCNameFields(creditCard);
|
|
this.#normalizeCCNumberFields(creditCard);
|
|
this.#normalizeCCExpirationDateFields(creditCard);
|
|
this.#normalizeCCTypeFields(creditCard);
|
|
}
|
|
|
|
static #normalizeCCNameFields(creditCard) {
|
|
if (!creditCard["cc-name"]) {
|
|
creditCard["cc-name"] = FormAutofillNameUtils.joinNameParts({
|
|
given: creditCard["cc-given-name"] ?? "",
|
|
middle: creditCard["cc-additional-name"] ?? "",
|
|
family: creditCard["cc-family-name"] ?? "",
|
|
});
|
|
}
|
|
|
|
delete creditCard["cc-given-name"];
|
|
delete creditCard["cc-additional-name"];
|
|
delete creditCard["cc-family-name"];
|
|
}
|
|
|
|
static #normalizeCCNumberFields(creditCard) {
|
|
if (!("cc-number" in creditCard)) {
|
|
return;
|
|
}
|
|
|
|
if (!CreditCard.isValidNumber(creditCard["cc-number"])) {
|
|
delete creditCard["cc-number"];
|
|
return;
|
|
}
|
|
|
|
const card = new CreditCard({ number: creditCard["cc-number"] });
|
|
creditCard["cc-number"] = card.number;
|
|
}
|
|
|
|
static #normalizeCCExpirationDateFields(creditCard) {
|
|
let normalizedExpiration = CreditCard.normalizeExpiration({
|
|
expirationMonth: creditCard["cc-exp-month"],
|
|
expirationYear: creditCard["cc-exp-year"],
|
|
expirationString: creditCard["cc-exp"],
|
|
});
|
|
|
|
creditCard["cc-exp-month"] = normalizedExpiration.month ?? "";
|
|
creditCard["cc-exp-year"] = normalizedExpiration.year ?? "";
|
|
delete creditCard["cc-exp"];
|
|
}
|
|
|
|
static #normalizeCCTypeFields(creditCard) {
|
|
// Let's overwrite the credit card type with auto-detect algorithm
|
|
creditCard["cc-type"] = CreditCard.getType(creditCard["cc-number"]) ?? "";
|
|
}
|
|
}
|