prepareChangelogOverlay method

Future<({SdkAppearance appearance, List<ChangelogEntry> entries})?> prepareChangelogOverlay({
  1. bool onlyIfUnseen = false,
})

Loads newest release entries and appearance for the What's-New overlay.

If onlyIfUnseen is true, returns null if the latest entry has already been marked seen.

Implementation

Future<({List<ChangelogEntry> entries, SdkAppearance appearance})?>
    prepareChangelogOverlay({bool onlyIfUnseen = false}) async {
  try {
    final appConfig = await fetchAppConfig();
    if (!appConfig.sdk.features.changelog) return null;

    final limit = appConfig.sdk.changelogOverlay.clampedEntryCount;
    final all = await fetchChangelog();
    final entries = all.take(limit).toList();
    if (entries.isEmpty) return null;

    if (onlyIfUnseen) {
      final latest = entries.first;
      final versionKey = latest.versionLabel ?? latest.id;
      if (versionKey.isNotEmpty && await hasSeenChangelog(versionKey)) {
        return null;
      }
    }

    return (entries: entries, appearance: appConfig.sdk);
  } catch (_) {
    return null;
  }
}