renderSeederList function

void renderSeederList(
  1. LiveBlock block,
  2. String device,
  3. Object? payload, {
  4. List<String> registered = const [],
  5. String restart = 'restart',
  6. String seed = 'seed',
  7. String rollback = 'seed:rollback',
})

Adds the seeders in a seeders.list payload to block.

Seeders in registered (from lib/bootstrap/seeders.dart) that the app didn't list were usually added after it started, so block ends by saying to hot restart with restart. seed and rollback are how to run and undo a seeder from where the list was shown.

Implementation

void renderSeederList(
  LiveBlock block,
  String device,
  Object? payload, {
  List<String> registered = const [],
  String restart = 'restart',
  String seed = 'seed',
  String rollback = 'seed:rollback',
}) {
  final Object? list = payload is Map ? payload['seeders'] : null;
  final List<Map<Object?, Object?>> seeders = [
    if (list is List)
      for (final Object? seeder in list)
        if (seeder is Map) seeder,
  ];
  final List<String> notLoaded = _notLoaded(registered, [
    for (final Map<Object?, Object?> seeder in seeders)
      if (seeder['registered'] != false) '${seeder['name']}',
  ]);
  if (seeders.isEmpty) {
    if (notLoaded.isEmpty) {
      block.note(
        'This app has no seeders yet. Create one with: '
        'metro make:seeder demo_user',
      );
    }
    _warnNotLoaded(block, notLoaded, restart);
    return;
  }
  block.heading('Seeders on $device:');
  block.table(
    ['NAME', 'DESCRIPTION', 'STATUS'],
    [
      for (final Map<Object?, Object?> seeder in seeders)
        [
          '${seeder['name']}',
          seeder['source'] != null
              ? '(imported from ${seeder['source']})'
              : seeder['registered'] == false
              ? '(no longer registered)'
              : '${seeder['description'] ?? ''}',
          describeSeededAt(seeder['seededAt']),
        ],
    ],
  );
  block.note('Run one with $seed <name>, and undo it with $rollback <name>');
  _warnNotLoaded(block, notLoaded, restart);
}