mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	* Fixed app not resuming backup after closing and reopening the app * Fixed cosmetic effect of backup button doesn't change state right away after pressing start backup * Fixed grammar * Fixed deep copy problem that cause incorrect asset count when backing up * Format code
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/material.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
import 'package:immich_mobile/modules/home/providers/home_page_state.provider.dart';
 | 
						|
import 'package:immich_mobile/shared/models/immich_asset.model.dart';
 | 
						|
import 'package:intl/intl.dart';
 | 
						|
 | 
						|
class DailyTitleText extends ConsumerWidget {
 | 
						|
  const DailyTitleText({
 | 
						|
    Key? key,
 | 
						|
    required this.isoDate,
 | 
						|
    required this.assetGroup,
 | 
						|
  }) : super(key: key);
 | 
						|
 | 
						|
  final String isoDate;
 | 
						|
  final List<ImmichAsset> assetGroup;
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context, WidgetRef ref) {
 | 
						|
    var currentYear = DateTime.now().year;
 | 
						|
    var groupYear = DateTime.parse(isoDate).year;
 | 
						|
    var formatDateTemplate =
 | 
						|
        currentYear == groupYear ? 'E, MMM dd' : 'E, MMM dd, yyyy';
 | 
						|
    var dateText =
 | 
						|
        DateFormat(formatDateTemplate).format(DateTime.parse(isoDate));
 | 
						|
    var isMultiSelectEnable =
 | 
						|
        ref.watch(homePageStateProvider).isMultiSelectEnable;
 | 
						|
    var selectedDateGroup = ref.watch(homePageStateProvider).selectedDateGroup;
 | 
						|
    var selectedItems = ref.watch(homePageStateProvider).selectedItems;
 | 
						|
 | 
						|
    void _handleTitleIconClick() {
 | 
						|
      if (isMultiSelectEnable &&
 | 
						|
          selectedDateGroup.contains(dateText) &&
 | 
						|
          selectedDateGroup.length == 1 &&
 | 
						|
          selectedItems.length <= assetGroup.length) {
 | 
						|
        // Multi select is active - click again on the icon while it is the only active group -> disable multi select
 | 
						|
        ref.watch(homePageStateProvider.notifier).disableMultiSelect();
 | 
						|
      } else if (isMultiSelectEnable &&
 | 
						|
          selectedDateGroup.contains(dateText) &&
 | 
						|
          selectedItems.length != assetGroup.length) {
 | 
						|
        // Multi select is active - click again on the icon while it is not the only active group -> remove that group from selected group/items
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .removeSelectedDateGroup(dateText);
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .removeMultipleSelectedItem(assetGroup);
 | 
						|
      } else if (isMultiSelectEnable &&
 | 
						|
          selectedDateGroup.contains(dateText) &&
 | 
						|
          selectedDateGroup.length > 1) {
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .removeSelectedDateGroup(dateText);
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .removeMultipleSelectedItem(assetGroup);
 | 
						|
      } else if (isMultiSelectEnable && !selectedDateGroup.contains(dateText)) {
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .addSelectedDateGroup(dateText);
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .addMultipleSelectedItems(assetGroup);
 | 
						|
      } else {
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .enableMultiSelect(assetGroup.toSet());
 | 
						|
        ref
 | 
						|
            .watch(homePageStateProvider.notifier)
 | 
						|
            .addSelectedDateGroup(dateText);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return SliverToBoxAdapter(
 | 
						|
      child: Padding(
 | 
						|
        padding: const EdgeInsets.only(
 | 
						|
            top: 29.0, bottom: 29.0, left: 12.0, right: 12.0),
 | 
						|
        child: Row(
 | 
						|
          children: [
 | 
						|
            Text(
 | 
						|
              dateText,
 | 
						|
              style: const TextStyle(
 | 
						|
                fontSize: 14,
 | 
						|
                fontWeight: FontWeight.bold,
 | 
						|
                color: Colors.black87,
 | 
						|
              ),
 | 
						|
            ),
 | 
						|
            const Spacer(),
 | 
						|
            GestureDetector(
 | 
						|
              onTap: _handleTitleIconClick,
 | 
						|
              child: isMultiSelectEnable && selectedDateGroup.contains(dateText)
 | 
						|
                  ? Icon(
 | 
						|
                      Icons.check_circle_rounded,
 | 
						|
                      color: Theme.of(context).primaryColor,
 | 
						|
                    )
 | 
						|
                  : const Icon(
 | 
						|
                      Icons.check_circle_outline_rounded,
 | 
						|
                      color: Colors.grey,
 | 
						|
                    ),
 | 
						|
            )
 | 
						|
          ],
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |