mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
feat(mobile): lazy loading of assets (#2413)
This commit is contained in:
parent
93863b0629
commit
0dde76bbbc
54 changed files with 1494 additions and 2328 deletions
|
|
@ -5,7 +5,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||
import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
|
||||
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
||||
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
||||
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
||||
|
||||
class LayoutSettings extends HookConsumerWidget {
|
||||
const LayoutSettings({
|
||||
|
|
@ -22,14 +21,17 @@ class LayoutSettings extends HookConsumerWidget {
|
|||
void switchChanged(bool value) {
|
||||
appSettingService.setSetting(AppSettingsEnum.dynamicLayout, value);
|
||||
useDynamicLayout.value = value;
|
||||
ref.watch(assetProvider.notifier).rebuildAssetGridDataStructure();
|
||||
ref.invalidate(appSettingsServiceProvider);
|
||||
}
|
||||
|
||||
void changeGroupValue(GroupAssetsBy? value) {
|
||||
if (value != null) {
|
||||
appSettingService.setSetting(AppSettingsEnum.groupAssetsBy, value.index);
|
||||
appSettingService.setSetting(
|
||||
AppSettingsEnum.groupAssetsBy,
|
||||
value.index,
|
||||
);
|
||||
groupBy.value = value;
|
||||
ref.watch(assetProvider.notifier).rebuildAssetGridDataStructure();
|
||||
ref.invalidate(appSettingsServiceProvider);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -37,8 +39,8 @@ class LayoutSettings extends HookConsumerWidget {
|
|||
() {
|
||||
useDynamicLayout.value =
|
||||
appSettingService.getSetting<bool>(AppSettingsEnum.dynamicLayout);
|
||||
groupBy.value =
|
||||
GroupAssetsBy.values[appSettingService.getSetting<int>(AppSettingsEnum.groupAssetsBy)];
|
||||
groupBy.value = GroupAssetsBy.values[
|
||||
appSettingService.getSetting<int>(AppSettingsEnum.groupAssetsBy)];
|
||||
|
||||
return null;
|
||||
},
|
||||
|
|
@ -93,6 +95,19 @@ class LayoutSettings extends HookConsumerWidget {
|
|||
onChanged: changeGroupValue,
|
||||
controlAffinity: ListTileControlAffinity.trailing,
|
||||
),
|
||||
RadioListTile(
|
||||
activeColor: Theme.of(context).primaryColor,
|
||||
title: const Text(
|
||||
"asset_list_layout_settings_group_automatically",
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
),
|
||||
).tr(),
|
||||
value: GroupAssetsBy.auto,
|
||||
groupValue: groupBy.value,
|
||||
onChanged: changeGroupValue,
|
||||
controlAffinity: ListTileControlAffinity.trailing,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
||||
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
||||
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
||||
|
||||
class StorageIndicator extends HookConsumerWidget {
|
||||
const StorageIndicator({
|
||||
|
|
@ -20,12 +19,13 @@ class StorageIndicator extends HookConsumerWidget {
|
|||
void switchChanged(bool value) {
|
||||
appSettingService.setSetting(AppSettingsEnum.storageIndicator, value);
|
||||
showStorageIndicator.value = value;
|
||||
ref.watch(assetProvider.notifier).rebuildAssetGridDataStructure();
|
||||
ref.invalidate(appSettingsServiceProvider);
|
||||
}
|
||||
|
||||
useEffect(
|
||||
() {
|
||||
showStorageIndicator.value = appSettingService.getSetting<bool>(AppSettingsEnum.storageIndicator);
|
||||
showStorageIndicator.value = appSettingService
|
||||
.getSetting<bool>(AppSettingsEnum.storageIndicator);
|
||||
|
||||
return null;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
||||
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
||||
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
||||
|
||||
class TilesPerRow extends HookConsumerWidget {
|
||||
const TilesPerRow({
|
||||
|
|
@ -20,10 +19,7 @@ class TilesPerRow extends HookConsumerWidget {
|
|||
void sliderChanged(double value) {
|
||||
appSettingService.setSetting(AppSettingsEnum.tilesPerRow, value.toInt());
|
||||
itemsValue.value = value;
|
||||
}
|
||||
|
||||
void sliderChangedEnd(double _) {
|
||||
ref.watch(assetProvider.notifier).rebuildAssetGridDataStructure();
|
||||
ref.invalidate(appSettingsServiceProvider);
|
||||
}
|
||||
|
||||
useEffect(
|
||||
|
|
@ -49,7 +45,6 @@ class TilesPerRow extends HookConsumerWidget {
|
|||
).tr(args: ["${itemsValue.value.toInt()}"]),
|
||||
),
|
||||
Slider(
|
||||
onChangeEnd: sliderChangedEnd,
|
||||
onChanged: sliderChanged,
|
||||
value: itemsValue.value,
|
||||
min: 2,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue