mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	Implemented delete asset on device and on database (#22)
* refactor serving file function asset service * Remove PhotoViewer for now since it creates a problem in 2.10 * Added error message for wrong decode file and logo for failed to load file * Fixed error when read stream cannot be created and crash server * Added method to get all assets as a raw array * Implemented cleaner way of grouping image * Implemented operation to delete assets in the database * Implemented delete on database operation * Implemented delete on device operation * Fixed issue display wrong information when the auto backup is enabled after deleting all assets
This commit is contained in:
		@@ -1,4 +1,3 @@
 | 
			
		||||
import 'package:auto_route/auto_route.dart';
 | 
			
		||||
import 'package:cached_network_image/cached_network_image.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_hooks/flutter_hooks.dart';
 | 
			
		||||
@@ -10,7 +9,6 @@ import 'package:immich_mobile/modules/asset_viewer/ui/top_control_app_bar.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/home/services/asset.service.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/models/immich_asset.model.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/models/immich_asset_with_exif.model.dart';
 | 
			
		||||
import 'package:photo_view/photo_view.dart';
 | 
			
		||||
 | 
			
		||||
// ignore: must_be_immutable
 | 
			
		||||
class ImageViewerPage extends HookConsumerWidget {
 | 
			
		||||
@@ -35,6 +33,7 @@ class ImageViewerPage extends HookConsumerWidget {
 | 
			
		||||
 | 
			
		||||
    useEffect(() {
 | 
			
		||||
      getAssetExif();
 | 
			
		||||
      return null;
 | 
			
		||||
    }, []);
 | 
			
		||||
 | 
			
		||||
    return Scaffold(
 | 
			
		||||
@@ -60,12 +59,34 @@ class ImageViewerPage extends HookConsumerWidget {
 | 
			
		||||
            imageUrl: imageUrl,
 | 
			
		||||
            httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
 | 
			
		||||
            fadeInDuration: const Duration(milliseconds: 250),
 | 
			
		||||
            errorWidget: (context, url, error) => const Icon(Icons.error),
 | 
			
		||||
            imageBuilder: (context, imageProvider) {
 | 
			
		||||
              return PhotoView(imageProvider: imageProvider);
 | 
			
		||||
            },
 | 
			
		||||
            errorWidget: (context, url, error) => ConstrainedBox(
 | 
			
		||||
              constraints: const BoxConstraints(maxWidth: 300),
 | 
			
		||||
              child: Wrap(
 | 
			
		||||
                spacing: 32,
 | 
			
		||||
                runSpacing: 32,
 | 
			
		||||
                alignment: WrapAlignment.center,
 | 
			
		||||
                children: [
 | 
			
		||||
                  const Text(
 | 
			
		||||
                    "Failed To Render Image - Possibly Corrupted Data",
 | 
			
		||||
                    textAlign: TextAlign.center,
 | 
			
		||||
                    style: TextStyle(fontSize: 16, color: Colors.white),
 | 
			
		||||
                  ),
 | 
			
		||||
                  SingleChildScrollView(
 | 
			
		||||
                    child: Text(
 | 
			
		||||
                      error.toString(),
 | 
			
		||||
                      textAlign: TextAlign.center,
 | 
			
		||||
                      style: TextStyle(fontSize: 12, color: Colors.grey[400]),
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
            // imageBuilder: (context, imageProvider) {
 | 
			
		||||
            //   return PhotoView(imageProvider: imageProvider);
 | 
			
		||||
            // },
 | 
			
		||||
            placeholder: (context, url) {
 | 
			
		||||
              return CachedNetworkImage(
 | 
			
		||||
                cacheKey: thumbnailUrl,
 | 
			
		||||
                fit: BoxFit.cover,
 | 
			
		||||
                imageUrl: thumbnailUrl,
 | 
			
		||||
                httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
 | 
			
		||||
@@ -74,7 +95,10 @@ class ImageViewerPage extends HookConsumerWidget {
 | 
			
		||||
                  scale: 0.2,
 | 
			
		||||
                  child: CircularProgressIndicator(value: downloadProgress.progress),
 | 
			
		||||
                ),
 | 
			
		||||
                errorWidget: (context, url, error) => const Icon(Icons.error),
 | 
			
		||||
                errorWidget: (context, url, error) => Icon(
 | 
			
		||||
                  Icons.error,
 | 
			
		||||
                  color: Colors.grey[300],
 | 
			
		||||
                ),
 | 
			
		||||
              );
 | 
			
		||||
            },
 | 
			
		||||
          ),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user