mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	Fix backup not resuming after closed and reopen (#266)
* Fixed app not resuming backup after closing and reopening the app * Fixed cosmetic effect of backup button doesn't change state right away after pressing start backup * Fixed grammar * Fixed deep copy problem that cause incorrect asset count when backing up * Format code
This commit is contained in:
		| @@ -14,16 +14,22 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|   final Uint8List? imageData; | ||||
|   final AssetPathEntity albumInfo; | ||||
|  | ||||
|   const AlbumInfoCard({Key? key, this.imageData, required this.albumInfo}) : super(key: key); | ||||
|   const AlbumInfoCard({Key? key, this.imageData, required this.albumInfo}) | ||||
|       : super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context, WidgetRef ref) { | ||||
|     final bool isSelected = ref.watch(backupProvider).selectedBackupAlbums.contains(albumInfo); | ||||
|     final bool isExcluded = ref.watch(backupProvider).excludedBackupAlbums.contains(albumInfo); | ||||
|     final bool isSelected = | ||||
|         ref.watch(backupProvider).selectedBackupAlbums.contains(albumInfo); | ||||
|     final bool isExcluded = | ||||
|         ref.watch(backupProvider).excludedBackupAlbums.contains(albumInfo); | ||||
|  | ||||
|     ColorFilter selectedFilter = ColorFilter.mode(Theme.of(context).primaryColor.withAlpha(100), BlendMode.darken); | ||||
|     ColorFilter excludedFilter = ColorFilter.mode(Colors.red.withAlpha(75), BlendMode.darken); | ||||
|     ColorFilter unselectedFilter = const ColorFilter.mode(Colors.black, BlendMode.color); | ||||
|     ColorFilter selectedFilter = ColorFilter.mode( | ||||
|         Theme.of(context).primaryColor.withAlpha(100), BlendMode.darken); | ||||
|     ColorFilter excludedFilter = | ||||
|         ColorFilter.mode(Colors.red.withAlpha(75), BlendMode.darken); | ||||
|     ColorFilter unselectedFilter = | ||||
|         const ColorFilter.mode(Colors.black, BlendMode.color); | ||||
|  | ||||
|     _buildSelectedTextBox() { | ||||
|       if (isSelected) { | ||||
| @@ -32,7 +38,8 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|           shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)), | ||||
|           label: const Text( | ||||
|             "INCLUDED", | ||||
|             style: TextStyle(fontSize: 10, color: Colors.white, fontWeight: FontWeight.bold), | ||||
|             style: TextStyle( | ||||
|                 fontSize: 10, color: Colors.white, fontWeight: FontWeight.bold), | ||||
|           ), | ||||
|           backgroundColor: Theme.of(context).primaryColor, | ||||
|         ); | ||||
| @@ -42,7 +49,8 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|           shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)), | ||||
|           label: const Text( | ||||
|             "EXCLUDED", | ||||
|             style: TextStyle(fontSize: 10, color: Colors.white, fontWeight: FontWeight.bold), | ||||
|             style: TextStyle( | ||||
|                 fontSize: 10, color: Colors.white, fontWeight: FontWeight.bold), | ||||
|           ), | ||||
|           backgroundColor: Colors.red[300], | ||||
|         ); | ||||
| @@ -85,10 +93,15 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|         HapticFeedback.selectionClick(); | ||||
|  | ||||
|         if (isExcluded) { | ||||
|           ref.watch(backupProvider.notifier).removeExcludedAlbumForBackup(albumInfo); | ||||
|           ref | ||||
|               .watch(backupProvider.notifier) | ||||
|               .removeExcludedAlbumForBackup(albumInfo); | ||||
|         } else { | ||||
|           if (ref.watch(backupProvider).selectedBackupAlbums.length == 1 && | ||||
|               ref.watch(backupProvider).selectedBackupAlbums.contains(albumInfo)) { | ||||
|               ref | ||||
|                   .watch(backupProvider) | ||||
|                   .selectedBackupAlbums | ||||
|                   .contains(albumInfo)) { | ||||
|             ImmichToast.show( | ||||
|               context: context, | ||||
|               msg: "Cannot exclude the only album", | ||||
| @@ -98,7 +111,9 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|             return; | ||||
|           } | ||||
|  | ||||
|           ref.watch(backupProvider.notifier).addExcludedAlbumForBackup(albumInfo); | ||||
|           ref | ||||
|               .watch(backupProvider.notifier) | ||||
|               .addExcludedAlbumForBackup(albumInfo); | ||||
|         } | ||||
|       }, | ||||
|       child: Card( | ||||
| @@ -121,12 +136,16 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|                   width: 200, | ||||
|                   height: 200, | ||||
|                   decoration: BoxDecoration( | ||||
|                     borderRadius: const BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)), | ||||
|                     borderRadius: const BorderRadius.only( | ||||
|                         topLeft: Radius.circular(12), | ||||
|                         topRight: Radius.circular(12)), | ||||
|                     image: DecorationImage( | ||||
|                       colorFilter: _buildImageFilter(), | ||||
|                       image: imageData != null | ||||
|                           ? MemoryImage(imageData!) | ||||
|                           : const AssetImage('assets/immich-logo-no-outline.png') as ImageProvider, | ||||
|                           : const AssetImage( | ||||
|                                   'assets/immich-logo-no-outline.png') | ||||
|                               as ImageProvider, | ||||
|                       fit: BoxFit.cover, | ||||
|                     ), | ||||
|                   ), | ||||
| @@ -150,13 +169,17 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|                           Text( | ||||
|                             albumInfo.name, | ||||
|                             style: TextStyle( | ||||
|                                 fontSize: 14, color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold), | ||||
|                                 fontSize: 14, | ||||
|                                 color: Theme.of(context).primaryColor, | ||||
|                                 fontWeight: FontWeight.bold), | ||||
|                           ), | ||||
|                           Padding( | ||||
|                             padding: const EdgeInsets.only(top: 2.0), | ||||
|                             child: Text( | ||||
|                               albumInfo.assetCount.toString() + (albumInfo.isAll ? " (ALL)" : ""), | ||||
|                               style: TextStyle(fontSize: 12, color: Colors.grey[600]), | ||||
|                               albumInfo.assetCount.toString() + | ||||
|                                   (albumInfo.isAll ? " (ALL)" : ""), | ||||
|                               style: TextStyle( | ||||
|                                   fontSize: 12, color: Colors.grey[600]), | ||||
|                             ), | ||||
|                           ) | ||||
|                         ], | ||||
| @@ -165,7 +188,8 @@ class AlbumInfoCard extends HookConsumerWidget { | ||||
|                   ), | ||||
|                   IconButton( | ||||
|                     onPressed: () { | ||||
|                       AutoRouter.of(context).push(AlbumPreviewRoute(album: albumInfo)); | ||||
|                       AutoRouter.of(context) | ||||
|                           .push(AlbumPreviewRoute(album: albumInfo)); | ||||
|                     }, | ||||
|                     icon: Icon( | ||||
|                       Icons.image_outlined, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user