loadReleaseNotes method
Loads release notes for the active update descriptor.
Returns a cached result for the same descriptor unless forceRefresh is
true. Loading errors are stored in releaseNotesState and rethrown.
Implementation
Future<ReleaseNotes> loadReleaseNotes({bool forceRefresh = false}) async {
final descriptor = activeDescriptor;
if (descriptor == null) {
throw StateError("No active update descriptor is available.");
}
if (_releaseNotesLoader == null && _releaseNotesUrl == null) {
throw StateError("No release notes loader is configured.");
}
final cacheKey = _releaseNotesCacheKey(descriptor);
final cached = _cachedReleaseNotes;
if (!forceRefresh && cached != null && _cachedReleaseNotesKey == cacheKey) {
return cached;
}
_releaseNotesState = const ReleaseNotesLoading();
notifyListeners();
try {
final loader = _releaseNotesLoader;
final notes = loader == null
? await _releaseNotesFetcher!.fetch(_releaseNotesUrl!)
: await loader(descriptor);
_cachedReleaseNotes = notes;
_cachedReleaseNotesKey = cacheKey;
_releaseNotesState = ReleaseNotesLoaded(notes);
notifyListeners();
return notes;
} on Object catch (error) {
_releaseNotesState = ReleaseNotesFailed(error);
notifyListeners();
rethrow;
}
}