mirror of
https://github.com/immich-app/immich.git
synced 2025-09-29 15:31:13 -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);
|
|
},
|
|
);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|