mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:35:00 -04:00 
			
		
		
		
	* refactor: move all extensions to separate package * refactor(mobile): add BuildContext extension * refactor(mobile): use theme getters from context * refactor(mobile): use media query size from context * refactor(mobile): use auto router methods from context * refactor(mobile): use navigator methods from context --------- Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | |
| import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
 | |
| import 'package:intl/intl.dart';
 | |
| 
 | |
| /// This is a simple debug widget which should be removed later on when we are
 | |
| /// more confident about background sync
 | |
| class IosDebugInfoTile extends HookConsumerWidget {
 | |
|   final IOSBackgroundSettings settings;
 | |
|   const IosDebugInfoTile({
 | |
|     super.key,
 | |
|     required this.settings,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context, WidgetRef ref) {
 | |
|     final fetch = settings.timeOfLastFetch;
 | |
|     final processing = settings.timeOfLastProcessing;
 | |
|     final processes = settings.numberOfBackgroundTasksQueued;
 | |
| 
 | |
|     final processOrProcesses = processes == 1 ? 'process' : 'processes';
 | |
|     final numberOrZero = processes == 0 ? 'No' : processes.toString();
 | |
|     final title = '$numberOrZero background $processOrProcesses queued';
 | |
| 
 | |
|     final df = DateFormat.yMd().add_jm();
 | |
|     final String subtitle;
 | |
|     if (fetch == null && processing == null) {
 | |
|       subtitle = 'No background sync job has run yet';
 | |
|     } else if (fetch != null && processing == null) {
 | |
|       subtitle = 'Fetch ran ${df.format(fetch)}';
 | |
|     } else if (processing != null && fetch == null) {
 | |
|       subtitle = 'Processing ran ${df.format(processing)}';
 | |
|     } else {
 | |
|       final fetchOrProcessing =
 | |
|           fetch!.isAfter(processing!) ? fetch : processing;
 | |
|       subtitle = 'Last sync ${df.format(fetchOrProcessing)}';
 | |
|     }
 | |
| 
 | |
|     return ListTile(
 | |
|       key: ValueKey(title),
 | |
|       title: Text(
 | |
|         title,
 | |
|         style: TextStyle(
 | |
|           fontWeight: FontWeight.bold,
 | |
|           fontSize: 14,
 | |
|           color: context.primaryColor,
 | |
|         ),
 | |
|       ),
 | |
|       subtitle: Text(
 | |
|         subtitle,
 | |
|         style: const TextStyle(
 | |
|           fontSize: 14,
 | |
|         ),
 | |
|       ),
 | |
|       leading: Icon(
 | |
|         Icons.bug_report,
 | |
|         color: context.primaryColor,
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |