Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/packages / core / auth / user / container.payments.js
Size: Mime:
import * as tslib_1 from "tslib";
/**
 * @todo @typings @see session-container typings for responses
 */
import { action, computed } from 'xmobx/mobx';
import { isString } from 'exotic';
import { getTyped } from 'composition';
import { isErrorLikeResponse } from '@skava/is-error-like-response';
import { ObservableContainer } from '@skava/packages/libraries/observable-container';
import { errorContainer, toastMessage } from '@skava/packages/core/notifications';
import { makeDefaultPaymentParams } from '@skava/packages/core/addressAndPayment/deps';
import { updateCardPaymentBinding, addCardBinding, deleteCardBinding, getPaymentsBinding, changeDefaultCardBinding, } from './bindings';
import { isInvalidUser, notifyOnAddCardError, toStatus, isPaymentFailureResponse } from './deps';
/**
 * @todo @@fixme !!! CIRCULAR !!!
 */
import { userContainer } from './container';
function fromSerializedToAddToCartVariables(serialized) {
    // avoid circular imports...
    const { billingAddress, expirationYear } = serialized;
    // @todo do on graphql side !!!!!!!!!!!!!
    if (isString(serialized.expirationYear) && serialized.expirationYear.length === 2) {
        serialized.expirationYear = '20' + `${expirationYear}`;
    }
    const addCardParams = {
        expirationyear: serialized.expirationYear,
        expirationmonth: serialized.expirationMonth,
        cardType: serialized.cardType,
        cardNumber: serialized.cardNumber,
        makeDefaultCard: serialized.makeDefaultCard,
        firstName: serialized.firstName,
        lastName: serialized.lastName,
    };
    const variables = {
        email: userContainer.email || 'nouser@nomail.com',
        creditCard: addCardParams,
        address: billingAddress,
    };
    return variables;
}
class UserPaymentsContainer extends ObservableContainer {
    async fetchCards() {
        const { userPaymentsResponse } = await getPaymentsBinding();
        userContainer.updateCards(userPaymentsResponse);
    }
    /**
     * @see userContainer
     */
    get cardList() {
        return userContainer.cardList;
    }
    async addCard(serialized) {
        const variables = fromSerializedToAddToCartVariables(serialized);
        const { addCardResponse } = await addCardBinding(variables);
        notifyOnAddCardError(addCardResponse);
        this.fetchCards();
        return addCardResponse;
    }
    async deleteCard(cardId) {
        const { response, deleteCardResponse } = await deleteCardBinding(cardId);
        this.fetchCards();
        const deletedCardAPIResponse = getTyped(response.data).obj('deleteCard');
        const isFailureResponse = isPaymentFailureResponse(deletedCardAPIResponse);
        const toastText = isFailureResponse
            ? toStatus(deleteCardResponse)
            : isErrorLikeResponse(response) || isInvalidUser(deleteCardResponse)
                ? toastMessage.deleteCardFailure
                : toastMessage.deleteCardSuccess;
        errorContainer.setMessage(toastText);
        return response;
    }
    async changeDefaultCard(params) {
        console.log('__changeDefaultCard___', params);
        const defaultPaymentParams = makeDefaultPaymentParams(params);
        const { response, changeDefaultCardResponse } = await changeDefaultCardBinding(defaultPaymentParams);
        this.fetchCards();
        const toastText = isErrorLikeResponse(response) || isInvalidUser(changeDefaultCardResponse)
            ? toastMessage.setDefaultCardFailure
            : toastMessage.setDefaultCardSuccess;
        errorContainer.setMessage(toastText);
        return response;
    }
    async updateCardPayment(params) {
        console.log('__updateCardPayment___', params);
        const updatePaymentParams = makeDefaultPaymentParams(params);
        const { response, updateCardResponse } = await updateCardPaymentBinding(updatePaymentParams);
        this.fetchCards();
        const toastText = isErrorLikeResponse(response) || isInvalidUser(updateCardResponse)
            ? toastMessage.updateCardFailure
            : toastMessage.updateCardSuccess;
        errorContainer.setMessage(toastText);
        return response;
    }
}
UserPaymentsContainer.debugName = 'UserPayments_core';
tslib_1.__decorate([
    action
], UserPaymentsContainer.prototype, "fetchCards", null);
tslib_1.__decorate([
    computed
], UserPaymentsContainer.prototype, "cardList", null);
tslib_1.__decorate([
    action
], UserPaymentsContainer.prototype, "addCard", null);
tslib_1.__decorate([
    action.bound
], UserPaymentsContainer.prototype, "deleteCard", null);
tslib_1.__decorate([
    action.bound
], UserPaymentsContainer.prototype, "changeDefaultCard", null);
tslib_1.__decorate([
    action.bound
], UserPaymentsContainer.prototype, "updateCardPayment", null);
const paymentsContainer = new UserPaymentsContainer();
export { makeDefaultPaymentParams };
export { UserPaymentsContainer, paymentsContainer };
export default paymentsContainer;
//# sourceMappingURL=container.payments.js.map