mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:22:37 -04:00 
			
		
		
		
	* wifi toggle * feat: network requirement option for upload * chore: put back holding queue previous config numbers * options * backup option page * pr feedback
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:immich_mobile/domain/models/store.model.dart';
 | |
| import 'package:immich_mobile/entities/store.entity.dart';
 | |
| import 'package:immich_mobile/extensions/build_context_extensions.dart';
 | |
| import 'package:immich_mobile/extensions/translate_extensions.dart';
 | |
| import 'package:immich_mobile/providers/app_settings.provider.dart';
 | |
| import 'package:immich_mobile/services/app_settings.service.dart';
 | |
| import 'package:immich_mobile/widgets/settings/settings_sub_page_scaffold.dart';
 | |
| 
 | |
| class DriftBackupSettings extends StatelessWidget {
 | |
|   const DriftBackupSettings({super.key});
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return const SettingsSubPageScaffold(settings: [_UseWifiForUploadVideosButton(), _UseWifiForUploadPhotosButton()]);
 | |
|   }
 | |
| }
 | |
| 
 | |
| class _UseWifiForUploadVideosButton extends ConsumerWidget {
 | |
|   const _UseWifiForUploadVideosButton();
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context, WidgetRef ref) {
 | |
|     final valueStream = Store.watch(StoreKey.useWifiForUploadVideos);
 | |
| 
 | |
|     return ListTile(
 | |
|       title: Text(
 | |
|         "videos".t(context: context),
 | |
|         style: context.textTheme.titleMedium?.copyWith(color: context.primaryColor),
 | |
|       ),
 | |
|       subtitle: Text("network_requirement_videos_upload".t(context: context), style: context.textTheme.labelLarge),
 | |
|       trailing: StreamBuilder(
 | |
|         stream: valueStream,
 | |
|         initialData: Store.tryGet(StoreKey.useWifiForUploadVideos) ?? false,
 | |
|         builder: (context, snapshot) {
 | |
|           final value = snapshot.data ?? false;
 | |
|           return Switch(
 | |
|             value: value,
 | |
|             onChanged: (bool newValue) async {
 | |
|               await ref
 | |
|                   .read(appSettingsServiceProvider)
 | |
|                   .setSetting(AppSettingsEnum.useCellularForUploadVideos, newValue);
 | |
|             },
 | |
|           );
 | |
|         },
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class _UseWifiForUploadPhotosButton extends ConsumerWidget {
 | |
|   const _UseWifiForUploadPhotosButton();
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context, WidgetRef ref) {
 | |
|     final valueStream = Store.watch(StoreKey.useWifiForUploadPhotos);
 | |
| 
 | |
|     return ListTile(
 | |
|       title: Text(
 | |
|         "photos".t(context: context),
 | |
|         style: context.textTheme.titleMedium?.copyWith(color: context.primaryColor),
 | |
|       ),
 | |
|       subtitle: Text("network_requirement_photos_upload".t(context: context), style: context.textTheme.labelLarge),
 | |
|       trailing: StreamBuilder(
 | |
|         stream: valueStream,
 | |
|         initialData: Store.tryGet(StoreKey.useWifiForUploadPhotos) ?? false,
 | |
|         builder: (context, snapshot) {
 | |
|           final value = snapshot.data ?? false;
 | |
|           return Switch(
 | |
|             value: value,
 | |
|             onChanged: (bool newValue) async {
 | |
|               await ref
 | |
|                   .read(appSettingsServiceProvider)
 | |
|                   .setSetting(AppSettingsEnum.useCellularForUploadPhotos, newValue);
 | |
|             },
 | |
|           );
 | |
|         },
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |