executeWithDeduplication<T> method

Future<T> executeWithDeduplication<T>(
  1. String key,
  2. Future<T> requestFn()
)

Register a request by its key. If it is already running - return the existing instance

Implementation

Future<T> executeWithDeduplication<T>(
  String key,
  Future<T> Function() requestFn,
) async {
  // Check if request is already inflight
  if (_inflightRequests.containsKey(key)) {
    final existingRequest = _inflightRequests[key];
    if (existingRequest is Future<T>) {
      return existingRequest;
    }
  }

  // Start new request and track it
  final requestFuture = requestFn();
  _inflightRequests[key] = requestFuture;

  try {
    final result = await requestFuture;
    return result;
  } finally {
    // Remove from inflight requests when done (success or failure)
    _inflightRequests.remove(key);
  }
}