mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	fixed delete dialog colors
This commit is contained in:
		@@ -7,7 +7,6 @@ import 'package:flutter/services.dart';
 | 
			
		||||
import 'package:flutter_displaymode/flutter_displaymode.dart';
 | 
			
		||||
import 'package:hive_flutter/hive_flutter.dart';
 | 
			
		||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
			
		||||
import 'package:immich_mobile/constants/immich_colors.dart';
 | 
			
		||||
import 'package:immich_mobile/constants/locales.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/backup/models/hive_backup_albums.model.dart';
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,6 @@ import 'package:easy_localization/easy_localization.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:fluttertoast/fluttertoast.dart';
 | 
			
		||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
			
		||||
import 'package:immich_mobile/constants/immich_colors.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/album/providers/album.provider.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/album/providers/album_viewer.provider.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/album/providers/asset_selection.provider.dart';
 | 
			
		||||
 
 | 
			
		||||
@@ -151,7 +151,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
 | 
			
		||||
        actions: [
 | 
			
		||||
          TextButton(
 | 
			
		||||
            style: TextButton.styleFrom(
 | 
			
		||||
              primary: Theme.of(context).primaryColor,
 | 
			
		||||
              foregroundColor: Theme.of(context).primaryColor,
 | 
			
		||||
            ),
 | 
			
		||||
            onPressed:
 | 
			
		||||
                sharedUsersList.value.isEmpty ? null : _createSharedAlbum,
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,9 @@ Future<bool> loadTranslations() async {
 | 
			
		||||
 | 
			
		||||
  await controller.loadTranslations();
 | 
			
		||||
 | 
			
		||||
  return Localization.load(controller.locale,
 | 
			
		||||
      translations: controller.translations,
 | 
			
		||||
      fallbackTranslations: controller.fallbackTranslations);
 | 
			
		||||
  return Localization.load(
 | 
			
		||||
    controller.locale,
 | 
			
		||||
    translations: controller.translations,
 | 
			
		||||
    fallbackTranslations: controller.fallbackTranslations,
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,8 @@ class AlbumPreviewPage extends HookConsumerWidget {
 | 
			
		||||
    final assets = useState<List<AssetEntity>>([]);
 | 
			
		||||
 | 
			
		||||
    _getAssetsInAlbum() async {
 | 
			
		||||
      assets.value =
 | 
			
		||||
          await album.getAssetListRange(start: 0, end: album.assetCount);
 | 
			
		||||
      assets.value = await album.getAssetListRange(
 | 
			
		||||
          start: 0, end: await album.assetCountAsync);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    useEffect(
 | 
			
		||||
@@ -34,7 +34,7 @@ class AlbumPreviewPage extends HookConsumerWidget {
 | 
			
		||||
        title: Column(
 | 
			
		||||
          children: [
 | 
			
		||||
            Text(
 | 
			
		||||
              "${album.name} (${album.assetCount})",
 | 
			
		||||
              "${album.name} (${album.assetCountAsync})",
 | 
			
		||||
              style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
 | 
			
		||||
            ),
 | 
			
		||||
            Padding(
 | 
			
		||||
 
 | 
			
		||||
@@ -158,7 +158,6 @@ class BackupControllerPage extends HookConsumerWidget {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void _showBatteryOptimizationInfoToUser() {
 | 
			
		||||
      final buttonTextColor = Theme.of(context).primaryColor;
 | 
			
		||||
      showDialog<void>(
 | 
			
		||||
        context: context,
 | 
			
		||||
        barrierDismissible: false,
 | 
			
		||||
@@ -173,13 +172,14 @@ class BackupControllerPage extends HookConsumerWidget {
 | 
			
		||||
              ).tr(),
 | 
			
		||||
            ),
 | 
			
		||||
            actions: [
 | 
			
		||||
              OutlinedButton(
 | 
			
		||||
              ElevatedButton(
 | 
			
		||||
                onPressed: () => launchUrl(
 | 
			
		||||
                  Uri.parse('https://dontkillmyapp.com'),
 | 
			
		||||
                  mode: LaunchMode.externalApplication,
 | 
			
		||||
                ),
 | 
			
		||||
                child: const Text(
 | 
			
		||||
                  "backup_controller_page_background_battery_info_link",
 | 
			
		||||
                  style: TextStyle(fontWeight: FontWeight.bold, fontSize: 12),
 | 
			
		||||
                ).tr(),
 | 
			
		||||
              ),
 | 
			
		||||
              ElevatedButton(
 | 
			
		||||
@@ -220,7 +220,12 @@ class BackupControllerPage extends HookConsumerWidget {
 | 
			
		||||
          crossAxisAlignment: CrossAxisAlignment.start,
 | 
			
		||||
          children: [
 | 
			
		||||
            if (!isBackgroundEnabled)
 | 
			
		||||
              const Text("backup_controller_page_background_description").tr(),
 | 
			
		||||
              Padding(
 | 
			
		||||
                padding: const EdgeInsets.symmetric(vertical: 8.0),
 | 
			
		||||
                child:
 | 
			
		||||
                    const Text("backup_controller_page_background_description")
 | 
			
		||||
                        .tr(),
 | 
			
		||||
              ),
 | 
			
		||||
            if (isBackgroundEnabled)
 | 
			
		||||
              SwitchListTile(
 | 
			
		||||
                title:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,3 @@
 | 
			
		||||
import 'package:auto_route/auto_route.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/home/models/home_page_state.model.dart';
 | 
			
		||||
@@ -7,7 +6,6 @@ import 'package:immich_mobile/shared/ui/share_dialog.dart';
 | 
			
		||||
import 'package:openapi/api.dart';
 | 
			
		||||
 | 
			
		||||
class HomePageStateNotifier extends StateNotifier<HomePageState> {
 | 
			
		||||
 | 
			
		||||
  final ShareService _shareService;
 | 
			
		||||
 | 
			
		||||
  HomePageStateNotifier(this._shareService)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,6 @@
 | 
			
		||||
import 'dart:math';
 | 
			
		||||
 | 
			
		||||
import 'package:collection/collection.dart';
 | 
			
		||||
import 'package:easy_localization/easy_localization.dart';
 | 
			
		||||
import 'package:flutter/cupertino.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter/src/widgets/framework.dart';
 | 
			
		||||
import 'package:flutter_hooks/flutter_hooks.dart';
 | 
			
		||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
			
		||||
import 'package:immich_mobile/modules/home/providers/home_page_render_list_provider.dart';
 | 
			
		||||
@@ -52,7 +48,9 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Widget _buildThumbnailOrPlaceholder(
 | 
			
		||||
      AssetResponseDto asset, bool placeholder) {
 | 
			
		||||
    AssetResponseDto asset,
 | 
			
		||||
    bool placeholder,
 | 
			
		||||
  ) {
 | 
			
		||||
    if (placeholder) {
 | 
			
		||||
      return const DecoratedBox(
 | 
			
		||||
        decoration: BoxDecoration(color: Colors.grey),
 | 
			
		||||
@@ -67,7 +65,10 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Widget _buildAssetRow(
 | 
			
		||||
      BuildContext context, RenderAssetGridRow row, bool scrolling) {
 | 
			
		||||
    BuildContext context,
 | 
			
		||||
    RenderAssetGridRow row,
 | 
			
		||||
    bool scrolling,
 | 
			
		||||
  ) {
 | 
			
		||||
    double size = _getItemSize(context);
 | 
			
		||||
 | 
			
		||||
    return Row(
 | 
			
		||||
@@ -87,7 +88,10 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Widget _buildTitle(
 | 
			
		||||
      BuildContext context, String title, List<AssetResponseDto> assets) {
 | 
			
		||||
    BuildContext context,
 | 
			
		||||
    String title,
 | 
			
		||||
    List<AssetResponseDto> assets,
 | 
			
		||||
  ) {
 | 
			
		||||
    return DailyTitleText(
 | 
			
		||||
      isoDate: title,
 | 
			
		||||
      assetGroup: assets,
 | 
			
		||||
@@ -128,7 +132,8 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
			
		||||
 | 
			
		||||
  Text _labelBuilder(int pos) {
 | 
			
		||||
    final date = renderList[pos].date;
 | 
			
		||||
    return Text(DateFormat.yMMMd().format(date),
 | 
			
		||||
    return Text(
 | 
			
		||||
      DateFormat.yMMMd().format(date),
 | 
			
		||||
      style: const TextStyle(
 | 
			
		||||
        color: Colors.white,
 | 
			
		||||
        fontWeight: FontWeight.bold,
 | 
			
		||||
@@ -149,19 +154,20 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return DraggableScrollbar.semicircle(
 | 
			
		||||
        scrollStateListener: dragScrolling,
 | 
			
		||||
      scrollStateListener: dragScrolling,
 | 
			
		||||
      itemPositionsListener: _itemPositionsListener,
 | 
			
		||||
      controller: _itemScrollController,
 | 
			
		||||
      backgroundColor: Theme.of(context).hintColor,
 | 
			
		||||
      labelTextBuilder: _labelBuilder,
 | 
			
		||||
      labelConstraints: const BoxConstraints(maxHeight: 28),
 | 
			
		||||
      scrollbarAnimationDuration: const Duration(seconds: 1),
 | 
			
		||||
      scrollbarTimeToFade: const Duration(seconds: 4),
 | 
			
		||||
      child: ScrollablePositionedList.builder(
 | 
			
		||||
        itemBuilder: itemBuilder,
 | 
			
		||||
        itemPositionsListener: _itemPositionsListener,
 | 
			
		||||
        controller: _itemScrollController,
 | 
			
		||||
        backgroundColor: Theme.of(context).hintColor,
 | 
			
		||||
        labelTextBuilder: _labelBuilder,
 | 
			
		||||
        labelConstraints: const BoxConstraints(maxHeight: 28),
 | 
			
		||||
        scrollbarAnimationDuration: const Duration(seconds: 1),
 | 
			
		||||
        scrollbarTimeToFade: const Duration(seconds: 4),
 | 
			
		||||
        child: ScrollablePositionedList.builder(
 | 
			
		||||
          itemBuilder: itemBuilder,
 | 
			
		||||
          itemPositionsListener: _itemPositionsListener,
 | 
			
		||||
          itemScrollController: _itemScrollController,
 | 
			
		||||
          itemCount: renderList.length,
 | 
			
		||||
        ));
 | 
			
		||||
        itemScrollController: _itemScrollController,
 | 
			
		||||
        itemCount: renderList.length,
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ class DeleteDialog extends ConsumerWidget {
 | 
			
		||||
    final homePageState = ref.watch(homePageStateProvider);
 | 
			
		||||
 | 
			
		||||
    return AlertDialog(
 | 
			
		||||
      backgroundColor: Colors.grey[200],
 | 
			
		||||
      // backgroundColor: Colors.grey[200],
 | 
			
		||||
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
 | 
			
		||||
      title: const Text("delete_dialog_title").tr(),
 | 
			
		||||
      content: const Text("delete_dialog_alert").tr(),
 | 
			
		||||
@@ -21,9 +21,12 @@ class DeleteDialog extends ConsumerWidget {
 | 
			
		||||
          onPressed: () {
 | 
			
		||||
            Navigator.of(context).pop();
 | 
			
		||||
          },
 | 
			
		||||
          child: const Text(
 | 
			
		||||
          child: Text(
 | 
			
		||||
            "delete_dialog_cancel",
 | 
			
		||||
            style: TextStyle(color: Colors.blueGrey),
 | 
			
		||||
            style: TextStyle(
 | 
			
		||||
              color: Theme.of(context).primaryColor,
 | 
			
		||||
              fontWeight: FontWeight.bold,
 | 
			
		||||
            ),
 | 
			
		||||
          ).tr(),
 | 
			
		||||
        ),
 | 
			
		||||
        TextButton(
 | 
			
		||||
@@ -37,7 +40,10 @@ class DeleteDialog extends ConsumerWidget {
 | 
			
		||||
          },
 | 
			
		||||
          child: Text(
 | 
			
		||||
            "delete_dialog_ok",
 | 
			
		||||
            style: TextStyle(color: Colors.red[400]),
 | 
			
		||||
            style: TextStyle(
 | 
			
		||||
              color: Colors.red[400],
 | 
			
		||||
              fontWeight: FontWeight.bold,
 | 
			
		||||
            ),
 | 
			
		||||
          ).tr(),
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,6 @@ class ImageGrid extends ConsumerWidget {
 | 
			
		||||
      ),
 | 
			
		||||
      delegate: SliverChildBuilderDelegate(
 | 
			
		||||
        (BuildContext context, int index) {
 | 
			
		||||
          var assetType = assetGroup[index].type;
 | 
			
		||||
          return GestureDetector(
 | 
			
		||||
            onTap: () {},
 | 
			
		||||
            child: ThumbnailImage(
 | 
			
		||||
 
 | 
			
		||||
@@ -142,8 +142,8 @@ class ChangePasswordButton extends ConsumerWidget {
 | 
			
		||||
    return ElevatedButton(
 | 
			
		||||
      style: ElevatedButton.styleFrom(
 | 
			
		||||
        visualDensity: VisualDensity.standard,
 | 
			
		||||
        primary: Theme.of(context).primaryColor,
 | 
			
		||||
        onPrimary: Colors.grey[50],
 | 
			
		||||
        backgroundColor: Theme.of(context).primaryColor,
 | 
			
		||||
        foregroundColor: Colors.grey[50],
 | 
			
		||||
        elevation: 2,
 | 
			
		||||
        padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25),
 | 
			
		||||
      ),
 | 
			
		||||
 
 | 
			
		||||
@@ -203,8 +203,8 @@ class LoginButton extends ConsumerWidget {
 | 
			
		||||
    return ElevatedButton(
 | 
			
		||||
      style: ElevatedButton.styleFrom(
 | 
			
		||||
        visualDensity: VisualDensity.standard,
 | 
			
		||||
        primary: Theme.of(context).primaryColor,
 | 
			
		||||
        onPrimary: Colors.grey[50],
 | 
			
		||||
        backgroundColor: Theme.of(context).primaryColor,
 | 
			
		||||
        foregroundColor: Colors.grey[50],
 | 
			
		||||
        elevation: 2,
 | 
			
		||||
        padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 25),
 | 
			
		||||
      ),
 | 
			
		||||
 
 | 
			
		||||
@@ -103,8 +103,8 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
 | 
			
		||||
                                style: ElevatedButton.styleFrom(
 | 
			
		||||
                                  shape: const StadiumBorder(),
 | 
			
		||||
                                  visualDensity: VisualDensity.standard,
 | 
			
		||||
                                  primary: Colors.indigo,
 | 
			
		||||
                                  onPrimary: Colors.grey[50],
 | 
			
		||||
                                  backgroundColor: Colors.indigo,
 | 
			
		||||
                                  foregroundColor: Colors.grey[50],
 | 
			
		||||
                                  elevation: 2,
 | 
			
		||||
                                  padding: const EdgeInsets.symmetric(
 | 
			
		||||
                                    vertical: 10,
 | 
			
		||||
 
 | 
			
		||||
@@ -25,9 +25,11 @@ String getImageUrl(final AssetResponseDto asset) {
 | 
			
		||||
  return '${box.get(serverEndpointKey)}/asset/file?aid=${asset.deviceAssetId}&did=${asset.deviceId}&isThumb=false';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
String _getThumbnailUrl(final String id,
 | 
			
		||||
    {ThumbnailFormat type = ThumbnailFormat.WEBP}) {
 | 
			
		||||
String _getThumbnailUrl(
 | 
			
		||||
  final String id, {
 | 
			
		||||
  ThumbnailFormat type = ThumbnailFormat.WEBP,
 | 
			
		||||
}) {
 | 
			
		||||
  final box = Hive.box(userInfoBox);
 | 
			
		||||
 | 
			
		||||
  return '${box.get(serverEndpointKey)}/asset/thumbnail/${id}?format=${type.value}';
 | 
			
		||||
  return '${box.get(serverEndpointKey)}/asset/thumbnail/$id?format=${type.value}';
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,8 +72,8 @@ ThemeData immichDarkTheme = ThemeData(
 | 
			
		||||
  cardColor: Colors.grey[900],
 | 
			
		||||
  elevatedButtonTheme: ElevatedButtonThemeData(
 | 
			
		||||
    style: ElevatedButton.styleFrom(
 | 
			
		||||
      onPrimary: Colors.black87,
 | 
			
		||||
      primary: immichDarkThemePrimaryColor,
 | 
			
		||||
      foregroundColor: Colors.black87,
 | 
			
		||||
      backgroundColor: immichDarkThemePrimaryColor,
 | 
			
		||||
    ),
 | 
			
		||||
  ),
 | 
			
		||||
);
 | 
			
		||||
@@ -126,8 +126,8 @@ ThemeData immichLightTheme = ThemeData(
 | 
			
		||||
  ),
 | 
			
		||||
  elevatedButtonTheme: ElevatedButtonThemeData(
 | 
			
		||||
    style: ElevatedButton.styleFrom(
 | 
			
		||||
      primary: Colors.indigo,
 | 
			
		||||
      onPrimary: Colors.white,
 | 
			
		||||
      backgroundColor: Colors.indigo,
 | 
			
		||||
      foregroundColor: Colors.white,
 | 
			
		||||
    ),
 | 
			
		||||
  ),
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -112,8 +112,10 @@ class ImmichCacheInfoRepository extends ImmichCacheRepository {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<CacheObject> insert(CacheObject cacheObject,
 | 
			
		||||
      {bool setTouchedToNow = true}) async {
 | 
			
		||||
  Future<CacheObject> insert(
 | 
			
		||||
    CacheObject cacheObject, {
 | 
			
		||||
    bool setTouchedToNow = true,
 | 
			
		||||
  }) async {
 | 
			
		||||
    int newId = keyLookupHiveBox.length == 0
 | 
			
		||||
        ? 0
 | 
			
		||||
        : keyLookupHiveBox.values.reduce(max) + 1;
 | 
			
		||||
@@ -144,8 +146,10 @@ class ImmichCacheInfoRepository extends ImmichCacheRepository {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<int> update(CacheObject cacheObject,
 | 
			
		||||
      {bool setTouchedToNow = true}) async {
 | 
			
		||||
  Future<int> update(
 | 
			
		||||
    CacheObject cacheObject, {
 | 
			
		||||
    bool setTouchedToNow = true,
 | 
			
		||||
  }) async {
 | 
			
		||||
    if (cacheObject.id != null) {
 | 
			
		||||
      cacheObjectLookupBox.put(cacheObject.id, cacheObject.toMap());
 | 
			
		||||
      return 1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user