refreshApplicationCatalog method
Fetches the complete catalog and atomically synchronizes the local cache.
Concurrent calls coalesce. The portal session is refreshed through AuthRepository when needed; no service-specific SSO is required because this data comes from the portal itself.
Implementation
Future<void> refreshApplicationCatalog() {
if (_refreshInFlight case final existing?) return existing.future;
final completer = Completer<void>();
_refreshInFlight = completer;
unawaited(_completeRefresh(completer));
return completer.future;
}