Files
jinzhi/lib/features/settings/application/update_controller.dart
2026-08-24 19:07:31 +08:00

35 lines
973 B
Dart

import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../data/update_api_client.dart';
class UpdateSessionGate {
var _used = false;
bool takeColdLaunchSlot() => _used ? false : (_used = true);
}
final updateSessionGateProvider = Provider<UpdateSessionGate>(
(_) => UpdateSessionGate(),
);
class UpdateController extends StateNotifier<AsyncValue<UpgradeInfo?>> {
UpdateController(this._read) : super(const AsyncData(null));
final T Function<T>(ProviderListenable<T>) _read;
Future<UpgradeInfo> 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<UpdateController, AsyncValue<UpgradeInfo?>>(
(ref) => UpdateController(ref.read),
);