mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	chore(mobile) Improve mobile UI (#1038)
This commit is contained in:
		@@ -1,3 +1,5 @@
 | 
			
		||||
import 'dart:async';
 | 
			
		||||
 | 
			
		||||
import 'package:auto_route/auto_route.dart';
 | 
			
		||||
import 'package:easy_localization/easy_localization.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
@@ -20,6 +22,7 @@ import 'package:immich_mobile/shared/providers/asset.provider.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/providers/server_info.provider.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/providers/websocket.provider.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/services/share.service.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
 | 
			
		||||
import 'package:immich_mobile/shared/ui/immich_toast.dart';
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
 | 
			
		||||
@@ -37,6 +40,8 @@ class HomePage extends HookConsumerWidget {
 | 
			
		||||
    final albums = ref.watch(albumProvider);
 | 
			
		||||
    final albumService = ref.watch(albumServiceProvider);
 | 
			
		||||
 | 
			
		||||
    final tipOneOpacity = useState(0.0);
 | 
			
		||||
 | 
			
		||||
    useEffect(
 | 
			
		||||
      () {
 | 
			
		||||
        ref.read(websocketProvider.notifier).connect();
 | 
			
		||||
@@ -146,6 +151,49 @@ class HomePage extends HookConsumerWidget {
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      buildLoadingIndicator() {
 | 
			
		||||
        Timer(const Duration(seconds: 2), () {
 | 
			
		||||
          tipOneOpacity.value = 1;
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return Center(
 | 
			
		||||
          child: Column(
 | 
			
		||||
            mainAxisAlignment: MainAxisAlignment.center,
 | 
			
		||||
            children: [
 | 
			
		||||
              const ImmichLoadingIndicator(),
 | 
			
		||||
              Padding(
 | 
			
		||||
                padding: const EdgeInsets.only(top: 16.0),
 | 
			
		||||
                child: Text(
 | 
			
		||||
                  'Building the timeline',
 | 
			
		||||
                  style: TextStyle(
 | 
			
		||||
                    fontWeight: FontWeight.w600,
 | 
			
		||||
                    fontSize: 16,
 | 
			
		||||
                    color: Theme.of(context).primaryColor,
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
              ),
 | 
			
		||||
              AnimatedOpacity(
 | 
			
		||||
                duration: const Duration(milliseconds: 500),
 | 
			
		||||
                opacity: tipOneOpacity.value,
 | 
			
		||||
                child: const SizedBox(
 | 
			
		||||
                  width: 250,
 | 
			
		||||
                  child: Padding(
 | 
			
		||||
                    padding: EdgeInsets.only(top: 8.0),
 | 
			
		||||
                    child: Text(
 | 
			
		||||
                      'If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).',
 | 
			
		||||
                      textAlign: TextAlign.justify,
 | 
			
		||||
                      style: TextStyle(
 | 
			
		||||
                        fontSize: 12,
 | 
			
		||||
                      ),
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
              )
 | 
			
		||||
            ],
 | 
			
		||||
          ),
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return SafeArea(
 | 
			
		||||
        bottom: !multiselectEnabled.state,
 | 
			
		||||
        top: true,
 | 
			
		||||
@@ -164,15 +212,17 @@ class HomePage extends HookConsumerWidget {
 | 
			
		||||
                top: selectionEnabledHook.value ? 0 : 60,
 | 
			
		||||
                bottom: 0.0,
 | 
			
		||||
              ),
 | 
			
		||||
              child: ImmichAssetGrid(
 | 
			
		||||
                renderList: renderList,
 | 
			
		||||
                assetsPerRow:
 | 
			
		||||
                    appSettingService.getSetting(AppSettingsEnum.tilesPerRow),
 | 
			
		||||
                showStorageIndicator: appSettingService
 | 
			
		||||
                    .getSetting(AppSettingsEnum.storageIndicator),
 | 
			
		||||
                listener: selectionListener,
 | 
			
		||||
                selectionActive: selectionEnabledHook.value,
 | 
			
		||||
              ),
 | 
			
		||||
              child: ref.watch(assetProvider).isEmpty
 | 
			
		||||
                  ? buildLoadingIndicator()
 | 
			
		||||
                  : ImmichAssetGrid(
 | 
			
		||||
                      renderList: renderList,
 | 
			
		||||
                      assetsPerRow: appSettingService
 | 
			
		||||
                          .getSetting(AppSettingsEnum.tilesPerRow),
 | 
			
		||||
                      showStorageIndicator: appSettingService
 | 
			
		||||
                          .getSetting(AppSettingsEnum.storageIndicator),
 | 
			
		||||
                      listener: selectionListener,
 | 
			
		||||
                      selectionActive: selectionEnabledHook.value,
 | 
			
		||||
                    ),
 | 
			
		||||
            ),
 | 
			
		||||
            if (selectionEnabledHook.value)
 | 
			
		||||
              ControlBottomAppBar(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user