message: Fix loading vendors that sell items without talent grids
diff: @@ -77,14 +77,13 @@ function VendorService(
  const service = {
  vendorsLoaded: false,
  - reloadVendors: reloadVendors,
  + reloadVendors,
  // By hash
  vendors: {},
  totalVendors: 0,
  loadedVendors: 0,
  - countCurrencies: countCurrencies,
  - requestRatings: requestRatings,
  - _fulfillRatingsRequest: _fulfillRatingsRequest
  + requestRatings,
  + countCurrencies
  // TODO: expose getVendor promise, idempotently?
  };
  @@ -162,8 +161,9 @@ function VendorService(
  })));
  })
  .then(() => {
  + $rootScope.$broadcast('dim-vendors-updated');
  service.vendorsLoaded = true;
  - service._fulfillRatingsRequest();
  + fulfillRatingsRequest();
  })
  .finally(() => {
  // Clear the reload promise so this can be called again
  @@ -232,10 +232,8 @@ function VendorService(
  return vendor;
  })
  .catch((e) => {
  - // TODO: ???
  -
  service.loadedVendors++;
  - // console.log(e);
  + console.error(`Failed to load vendor ${vendorDef.summary.vendorName} for ${store.name}`, e);
  return null;
  });
  }
  @@ -419,7 +417,9 @@ function VendorService(
  categoryItems.forEach((saleItem) => {
  const item = saleItem.item;
  if (item.bucket.sort === 'Weapons' || item.bucket.sort === 'Armor' || item.type === 'Artifact' || item.type === 'Ghost') {
  + if (item.talentGrid) {
  item.dtrRoll = _.compact(_.pluck(item.talentGrid.nodes, 'dtrRoll')).join(';');
  + }
  hasArmorWeaps = true;
  }
  if (item.type === 'Ship' || item.type === 'Vehicle') {
  @@ -476,11 +476,11 @@ function VendorService(
  function requestRatings() {
  _ratingsRequested = true;
  - _fulfillRatingsRequest();
  + fulfillRatingsRequest();
  }
  - function _fulfillRatingsRequest() {
  - if ((service.vendorsLoaded) && (_ratingsRequested)) {
  + function fulfillRatingsRequest() {
  + if (service.vendorsLoaded && _ratingsRequested) {
  dimDestinyTrackerService.updateVendorRankings(service.vendors);
  }
  }
  