in ui/lib/modules/my_services/data/cloud_workstations_repository.dart [461:504]
Stream<bool> workstationStartingProgress(WorkstationStartingProgressRef ref,
{required String projectId,
required String clusterName,
required String configName,
required String instanceName,
required String region}) async* {
StreamSubscription? subscription;
final streamController = StreamController<bool>();
final bool inProgress = true;
final bool started = false;
final String startingStatus = "STARTING";
ref.onDispose(() {
streamController.close();
subscription?.cancel();
});
final servicesRepository = ref.watch(cloudWorkstationsRepositoryProvider);
subscription = Stream.periodic(const Duration(seconds: 5), (e) {
return servicesRepository.getWorkstations(
projectId, clusterName, configName, region);
}).listen((futureWorkstationsList) async {
List<Workstation> ws = await futureWorkstationsList;
String state = ws.firstWhere((element) => element.displayName == instanceName).state;
if (state.contains(startingStatus)) {
if (!streamController.isClosed) {
streamController.add(inProgress);
}
} else {
if (!streamController.isClosed) {
streamController.add(started);
}
streamController.close();
subscription?.cancel();
}
});
yield* streamController.stream;
}