Add basic flavors
This commit is contained in:
33
lib/features/common/app_update_notifier.dart
Normal file
33
lib/features/common/app_update_notifier.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
import 'package:hiddify/core/core_providers.dart';
|
||||
import 'package:hiddify/data/data_providers.dart';
|
||||
import 'package:hiddify/domain/app/app.dart';
|
||||
import 'package:hiddify/utils/utils.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
part 'app_update_notifier.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
class AppUpdateNotifier extends _$AppUpdateNotifier with AppLogger {
|
||||
@override
|
||||
Future<RemoteVersionInfo?> build() async {
|
||||
loggy.debug("checking for update");
|
||||
final currentVersion = ref.watch(appInfoProvider).version;
|
||||
return ref
|
||||
.watch(appRepositoryProvider)
|
||||
.getLatestVersion(includePreReleases: true)
|
||||
.match(
|
||||
(l) {
|
||||
loggy.warning("failed to get latest version, $l");
|
||||
throw l;
|
||||
},
|
||||
(remote) {
|
||||
if (remote.version.compareTo(currentVersion) > 0) {
|
||||
loggy.info("new version available: $remote");
|
||||
return remote;
|
||||
}
|
||||
loggy.info("already using latest version[$currentVersion], remote: $remote");
|
||||
return null;
|
||||
},
|
||||
).run();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user