From c928787b3ef3e2c5a54b5ee4fc04a7d1ac190ef7 Mon Sep 17 00:00:00 2001 From: Santo Shakil Date: Tue, 9 Jun 2026 22:41:32 +0600 Subject: [PATCH] fix(mobile): show error when creating an album fails (#28942) it failed silently when the server was down. also disable create for blank titles. --- .../pages/drift_create_album.page.dart | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/mobile/lib/presentation/pages/drift_create_album.page.dart b/mobile/lib/presentation/pages/drift_create_album.page.dart index e6ff10fd59..a664f46206 100644 --- a/mobile/lib/presentation/pages/drift_create_album.page.dart +++ b/mobile/lib/presentation/pages/drift_create_album.page.dart @@ -10,6 +10,7 @@ import 'package:immich_mobile/presentation/widgets/images/thumbnail.widget.dart' import 'package:immich_mobile/providers/infrastructure/album.provider.dart'; import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/widgets/album/album_action_filled_button.dart'; +import 'package:immich_mobile/widgets/common/immich_toast.dart'; @RoutePage() class DriftCreateAlbumPage extends ConsumerStatefulWidget { @@ -47,7 +48,7 @@ class _DriftCreateAlbumPageState extends ConsumerState { super.dispose(); } - bool get _canCreateAlbum => albumTitleController.text.isNotEmpty; + bool get _canCreateAlbum => albumTitleController.text.trim().isNotEmpty; String _getEffectiveTitle() { return albumTitleController.text.isNotEmpty @@ -169,25 +170,23 @@ class _DriftCreateAlbumPageState extends ConsumerState { onBackgroundTapped(); final title = _getEffectiveTitle().trim(); - if (title.isEmpty) { - if (context.mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('create_album_title_required'.t()), backgroundColor: context.colorScheme.error), - ); + + try { + final album = await ref + .read(remoteAlbumProvider.notifier) + .createAlbumWithAssets( + title: title, + description: albumDescriptionController.text.trim(), + assets: selectedAssets, + ); + + if (album != null && context.mounted) { + unawaited(context.replaceRoute(RemoteAlbumRoute(album: album))); + } + } catch (_) { + if (context.mounted) { + ImmichToast.show(context: context, toastType: ToastType.error, msg: 'errors.failed_to_create_album'.t()); } - return; - } - - final album = await ref - .read(remoteAlbumProvider.notifier) - .createAlbumWithAssets( - title: title, - description: albumDescriptionController.text.trim(), - assets: selectedAssets, - ); - - if (album != null && context.mounted) { - unawaited(context.replaceRoute(RemoteAlbumRoute(album: album))); } }