hydrate method

Future<void> hydrate()

Implementation

Future<void> hydrate() async {
  if (isHydrated) {
    return;
  }

  if (!(await _file.exists())) {
    isHydrated = true;
    return;
  }

  try {
    await _logger.measure(
      'Hydrate',
      () async {
        final encodedStore = await _readFile();
        if (encodedStore != null) {
          final Map json = jsonDecode(encodedStore);

          for (final entry in json.entries) {
            final resolverPath = entry.key;
            final valueStore = ValueStore.fromJson(entry.value);
            _storeResolver.write(resolverPath, valueStore);
          }
        }
        isHydrated = true;
      },
    );
  } catch (e) {
    _logger.log('Corrupt file data store $name');
    rethrow;
  }
}