fix(mobile): setting to always display remote assets (#3044)
This commit is contained in:
parent
5869648f19
commit
615893be38
6 changed files with 26 additions and 6 deletions
|
@ -5,6 +5,8 @@
|
|||
"advanced_settings_tile_title": "Advanced",
|
||||
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
|
||||
"advanced_settings_troubleshooting_title": "Troubleshooting",
|
||||
"advanced_settings_prefer_remote_title": "Prefer remote images",
|
||||
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
|
||||
"album_info_card_backup_album_excluded": "EXCLUDED",
|
||||
"album_info_card_backup_album_included": "INCLUDED",
|
||||
"album_thumbnail_card_item": "1 item",
|
||||
|
|
|
@ -131,7 +131,8 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|||
if (index < totalAssets && index >= 0) {
|
||||
final asset = loadAsset(index);
|
||||
|
||||
if (asset.isLocal) {
|
||||
if (!asset.isRemote ||
|
||||
asset.isLocal && !Store.get(StoreKey.preferRemoteImage, false)) {
|
||||
// Preload the local asset
|
||||
precacheImage(localImageProvider(asset), context);
|
||||
} else {
|
||||
|
@ -459,7 +460,8 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|||
});
|
||||
|
||||
ImageProvider imageProvider(Asset asset) {
|
||||
if (asset.isLocal) {
|
||||
if (!asset.isRemote ||
|
||||
asset.isLocal && !Store.get(StoreKey.preferRemoteImage, false)) {
|
||||
return localImageProvider(asset);
|
||||
} else {
|
||||
if (isLoadOriginal.value) {
|
||||
|
@ -518,7 +520,9 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|||
loadingBuilder: isLoadPreview.value
|
||||
? (context, event) {
|
||||
final a = asset();
|
||||
if (!a.isLocal) {
|
||||
if (!a.isLocal ||
|
||||
(a.isRemote &&
|
||||
Store.get(StoreKey.preferRemoteImage, false))) {
|
||||
// Use the WEBP Thumbnail as a placeholder for the JPEG thumbnail to achieve
|
||||
// Three-Stage Loading (WEBP -> JPEG -> Original)
|
||||
final webPThumbnail = CachedNetworkImage(
|
||||
|
|
|
@ -44,7 +44,8 @@ enum AppSettingsEnum<T> {
|
|||
0,
|
||||
),
|
||||
advancedTroubleshooting<bool>(StoreKey.advancedTroubleshooting, null, false),
|
||||
logLevel<int>(StoreKey.logLevel, null, 5) // Level.INFO = 5
|
||||
logLevel<int>(StoreKey.logLevel, null, 5), // Level.INFO = 5
|
||||
preferRemoteImage<bool>(StoreKey.preferRemoteImage, null, false),
|
||||
;
|
||||
|
||||
const AppSettingsEnum(this.storeKey, this.hiveKey, this.defaultValue);
|
||||
|
|
|
@ -16,6 +16,8 @@ class AdvancedSettings extends HookConsumerWidget {
|
|||
final isEnabled =
|
||||
useState(AppSettingsEnum.advancedTroubleshooting.defaultValue);
|
||||
final levelId = useState(AppSettingsEnum.logLevel.defaultValue);
|
||||
final preferRemote =
|
||||
useState(AppSettingsEnum.preferRemoteImage.defaultValue);
|
||||
|
||||
useEffect(
|
||||
() {
|
||||
|
@ -23,6 +25,8 @@ class AdvancedSettings extends HookConsumerWidget {
|
|||
AppSettingsEnum.advancedTroubleshooting,
|
||||
);
|
||||
levelId.value = appSettingService.getSetting(AppSettingsEnum.logLevel);
|
||||
preferRemote.value =
|
||||
appSettingService.getSetting(AppSettingsEnum.preferRemoteImage);
|
||||
return null;
|
||||
},
|
||||
[],
|
||||
|
@ -77,6 +81,13 @@ class AdvancedSettings extends HookConsumerWidget {
|
|||
activeColor: Theme.of(context).primaryColor,
|
||||
),
|
||||
),
|
||||
SettingsSwitchListTile(
|
||||
appSettingService: appSettingService,
|
||||
valueNotifier: preferRemote,
|
||||
settingsEnum: AppSettingsEnum.preferRemoteImage,
|
||||
title: "advanced_settings_prefer_remote_title".tr(),
|
||||
subtitle: "advanced_settings_prefer_remote_subtitle".tr(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ enum StoreKey<T> {
|
|||
selectedAlbumSortOrder<int>(113, type: int),
|
||||
advancedTroubleshooting<bool>(114, type: bool),
|
||||
logLevel<int>(115, type: int),
|
||||
preferRemoteImage<bool>(116, type: bool),
|
||||
;
|
||||
|
||||
const StoreKey(
|
||||
|
|
|
@ -43,7 +43,8 @@ class ImmichImage extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
final Asset asset = this.asset!;
|
||||
if (asset.isLocal) {
|
||||
if (!asset.isRemote ||
|
||||
(asset.isLocal && !Store.get(StoreKey.preferRemoteImage, false))) {
|
||||
return Image(
|
||||
image: AssetEntityImageProvider(
|
||||
asset.local!,
|
||||
|
|
Loading…
Reference in a new issue