Home Reference Source

src/common/services/product.service.js

/**
 * Mocking client-server processing
 */
import { _products } from './product.mock'
import { Observable } from 'rxjs/Observable'

const TIMEOUT = 100;
const MAX_CHECKOUT = 2; // max different items

 // http://private-5815fe-recommendationsknip.apiary-mock.com/products

export const api = {
  getProducts() {
    return new Observable(observer => {
      const timerId = setTimeout(() => {
        observer.next(_products);
        observer.complete();
      }, TIMEOUT);
      return () => clearTimeout(timerId);
    });
  },

  buyProducts(cart) {
    return new Observable(observer => {
      const timerId = setTimeout(() => {
        if(Object.keys(cart.quantityById).length <= MAX_CHECKOUT)
          observer.next(cart);
        else
          observer.error(`You can buy ${MAX_CHECKOUT} items at maximum in a checkout`);
        observer.complete();
      }, TIMEOUT);

      return () => clearTimeout(timerId);
    });
  }
}