syncKeys method

Future<void> syncKeys(
  1. dynamic keys
)

Sync keys to the backpack instance.

Implementation

Future<void> syncKeys(dynamic keys) async {
  Future<List<Object?>> Function() keysToSync = await keys();
  List finalKeys = await keysToSync();
  if (finalKeys.isEmpty) return;

  final List<Future> pending = [];
  Map<String, String>? raw;
  for (var key in finalKeys) {
    if (key is Future Function(bool)) {
      pending.add(key(true));
      continue;
    }
    if (key is! String) continue;
    raw ??= await NyStorage.readAll();
    final String? stored = raw[key];
    dynamic keyValue = stored == null
        ? null
        : NyStorage.decodeRaw(
            stored,
            legacyRuntimeType: raw['${key}_runtime_type'],
          );
    Backpack.instance.save(key, keyValue);
  }
  if (pending.isNotEmpty) await Future.wait(pending);
}