sendActivate method

Future<ActivateResopnse> sendActivate(
  1. Activate activateHit
)
override

Implementation

Future<ActivateResopnse> sendActivate(Activate activateHit) async {
  // Add the current activate by default
  List<Hit> listOfActivate = [activateHit];
  bool needToClean = false;

  /// When yes, the cache and pool need to be cleaned
  // If we have a failed activate hits

  // create a fake activate
  if (_activatePool.isNotEmpty()) {
    needToClean = true;
    Flagship.logger(Level.ALL,
        "Add previous activates in batch found in the pool activate");
    listOfActivate.addAll(
        _activatePool.extractXElementFromQueue(Activate_Limit_Batch_Size));
  } else {
    // We dont have any failed activate in the pool
  }

  var response = await sendActivateBatch(listOfActivate);
  switch (response.statusCode) {
    case 200:
    case 204:
      // Clear all the activate in the pool and clear them from cache
      if (needToClean) {
        _activatePool.flushAllTrackFromQueue();
        listOfActivate.remove(
            activateHit); // Remove the current hit before because is not already present in the cache.
        onSendActivateBatchWithSuccess(listOfActivate);
      }
      break;
    default:
      // Save on cache the current one
      this.onCacheHit(activateHit);
      // Re inject the list activate to the pool
      _activatePool.reInjectElements(listOfActivate);
  }
  return response;
}