getRecentReleaseNotes method
Gets release notes to show based on the previously seen version.
Shows up to _maxReleaseNotesShown items total, prioritizing the most
recent versions.
Implementation
List<String> getRecentReleaseNotes({
required String currentVersion,
String? previousVersion,
String? changelogContent,
}) {
try {
final content = changelogContent ?? getStoredChangelogFromMemory();
final releaseNotes = parseChangelog(content);
final baseCurrentVersion = semverCoerce(currentVersion);
final basePreviousVersion = previousVersion != null
? semverCoerce(previousVersion)
: null;
if (basePreviousVersion == null ||
(baseCurrentVersion != null &&
semverGt(baseCurrentVersion, basePreviousVersion))) {
final sortedEntries =
releaseNotes.entries
.where(
(entry) =>
basePreviousVersion == null ||
semverGt(entry.key, basePreviousVersion),
)
.toList()
..sort((a, b) => semverGt(a.key, b.key) ? -1 : 1);
return sortedEntries
.map((entry) => entry.value)
.expand((notes) => notes)
.where((note) => note.isNotEmpty)
.take(_maxReleaseNotesShown)
.toList();
}
} catch (_) {
return [];
}
return [];
}