mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-31 10:37:11 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'dart:convert';
 | |
| 
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:hive_flutter/hive_flutter.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:http/http.dart';
 | |
| import 'package:immich_mobile/constants/hive_box.dart';
 | |
| import 'package:immich_mobile/shared/views/version_announcement_overlay.dart';
 | |
| import 'package:logging/logging.dart';
 | |
| 
 | |
| class ReleaseInfoNotifier extends StateNotifier<String> {
 | |
|   ReleaseInfoNotifier() : super("");
 | |
|   final log = Logger('ReleaseInfoNotifier');
 | |
|   void checkGithubReleaseInfo() async {
 | |
|     final Client client = Client();
 | |
|     var box = Hive.box(hiveGithubReleaseInfoBox);
 | |
| 
 | |
|     try {
 | |
|       String? localReleaseVersion = box.get(githubReleaseInfoKey);
 | |
|       final res = await client.get(
 | |
|         Uri.parse(
 | |
|           "https://api.github.com/repos/immich-app/immich/releases/latest",
 | |
|         ),
 | |
|         headers: {"Accept": "application/vnd.github.v3+json"},
 | |
|       );
 | |
| 
 | |
|       if (res.statusCode == 200) {
 | |
|         final data = jsonDecode(res.body);
 | |
|         String latestTagVersion = data["tag_name"];
 | |
|         state = latestTagVersion;
 | |
| 
 | |
|         if (localReleaseVersion == null && latestTagVersion.isNotEmpty) {
 | |
|           VersionAnnouncementOverlayController.appLoader.show();
 | |
|           return;
 | |
|         }
 | |
| 
 | |
|         if (latestTagVersion.isNotEmpty &&
 | |
|             localReleaseVersion != latestTagVersion) {
 | |
|           VersionAnnouncementOverlayController.appLoader.show();
 | |
|           return;
 | |
|         }
 | |
|       }
 | |
|     } catch (e) {
 | |
|       debugPrint("Error gettting latest release version");
 | |
| 
 | |
|       state = "";
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   void acknowledgeNewVersion() {
 | |
|     var box = Hive.box(hiveGithubReleaseInfoBox);
 | |
| 
 | |
|     box.put(githubReleaseInfoKey, state);
 | |
|     VersionAnnouncementOverlayController.appLoader.hide();
 | |
|   }
 | |
| }
 | |
| 
 | |
| final releaseInfoProvider = StateNotifierProvider<ReleaseInfoNotifier, String>(
 | |
|   (ref) => ReleaseInfoNotifier(),
 | |
| );
 |