import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/legacy.dart'; import 'package:hooks_riverpod/misc.dart'; import '../data/update_api_client.dart'; class UpdateSessionGate { var _used = false; bool takeColdLaunchSlot() => _used ? false : (_used = true); } final updateSessionGateProvider = Provider( (_) => UpdateSessionGate(), ); class UpdateController extends StateNotifier> { UpdateController(this._read) : super(const AsyncData(null)); final T Function(ProviderListenable) _read; Future checkUpgrade() async { state = const AsyncLoading(); try { final result = await _read(updateApiClientProvider).checkUpgrade(); state = AsyncData(result); return result; } catch (error, stackTrace) { state = AsyncError(error, stackTrace); rethrow; } } } final updateControllerProvider = StateNotifierProvider>( (ref) => UpdateController(ref.read), );