get<T> method

Future<T> get<T>({
  1. required String key,
  2. Duration? duration,
  3. required Future<T> process(),
})

Implementation

Future<T> get<T>({required String key, Duration? duration, required Future<T> Function() process}) async {
  final Map? data = await _storageClient.getMap(key);
  final untilTime = DateTime.now().millisecondsSinceEpoch - (duration ?? this.duration).inMilliseconds;
  if (data != null && data['time'] > untilTime) {
    logger.debug('Obtain data from cache: $key');
    return data['data'];
  }

  final T response = await process.call();

  await _storageClient.saveMap(key, {'time': DateTime.now().millisecondsSinceEpoch, 'data': response});

  return response;
}