fix(mobile): clear album description sends null instead of empty string

pull/28817/head
timonrieger 2026-06-03 23:49:45 +02:00
parent 9d4a6614b1
commit d7d4d3bf7e
No known key found for this signature in database
4 changed files with 11 additions and 5 deletions

View File

@ -8,6 +8,7 @@ import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/infrastructure/repositories/remote_album.repository.dart'; import 'package:immich_mobile/infrastructure/repositories/remote_album.repository.dart';
import 'package:immich_mobile/models/albums/album_search.model.dart'; import 'package:immich_mobile/models/albums/album_search.model.dart';
import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart'; import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
import 'package:openapi/api.dart' show Optional;
import 'package:immich_mobile/repositories/drift_album_api_repository.dart'; import 'package:immich_mobile/repositories/drift_album_api_repository.dart';
import 'package:immich_mobile/services/foreground_upload.service.dart'; import 'package:immich_mobile/services/foreground_upload.service.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -137,7 +138,7 @@ class RemoteAlbumService {
Future<RemoteAlbum> updateAlbum( Future<RemoteAlbum> updateAlbum(
String albumId, { String albumId, {
String? name, String? name,
String? description, Optional<String?> description = const Optional.absent(),
String? thumbnailAssetId, String? thumbnailAssetId,
bool? isActivityEnabled, bool? isActivityEnabled,
AlbumAssetOrder? order, AlbumAssetOrder? order,

View File

@ -20,6 +20,7 @@ import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/routing/router.dart';
import 'package:immich_mobile/widgets/common/immich_toast.dart'; import 'package:immich_mobile/widgets/common/immich_toast.dart';
import 'package:immich_mobile/widgets/common/remote_album_sliver_app_bar.dart'; import 'package:immich_mobile/widgets/common/remote_album_sliver_app_bar.dart';
import 'package:openapi/api.dart' show Optional;
@RoutePage() @RoutePage()
class RemoteAlbumPage extends ConsumerStatefulWidget { class RemoteAlbumPage extends ConsumerStatefulWidget {
@ -247,10 +248,13 @@ class _EditAlbumDialogState extends ConsumerState<_EditAlbumDialog> {
try { try {
final newTitle = titleController.text.trim(); final newTitle = titleController.text.trim();
final newDescription = descriptionController.text.trim(); final newDescription = descriptionController.text.trim();
final description = newDescription.isEmpty
? const Optional<String?>.present(null)
: Optional<String?>.present(newDescription);
await ref await ref
.read(remoteAlbumProvider.notifier) .read(remoteAlbumProvider.notifier)
.updateAlbum(widget.album.id, name: newTitle, description: newDescription); .updateAlbum(widget.album.id, name: newTitle, description: description);
if (mounted) { if (mounted) {
Navigator.of( Navigator.of(

View File

@ -8,6 +8,7 @@ import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/domain/services/remote_album.service.dart'; import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:immich_mobile/models/albums/album_search.model.dart'; import 'package:immich_mobile/models/albums/album_search.model.dart';
import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart'; import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
import 'package:openapi/api.dart' show Optional;
import 'package:immich_mobile/providers/album/pending_album_uploads.provider.dart'; import 'package:immich_mobile/providers/album/pending_album_uploads.provider.dart';
import 'package:immich_mobile/providers/backup/asset_upload_progress.provider.dart'; import 'package:immich_mobile/providers/backup/asset_upload_progress.provider.dart';
import 'package:immich_mobile/providers/infrastructure/album.provider.dart'; import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
@ -153,7 +154,7 @@ class RemoteAlbumNotifier extends Notifier<RemoteAlbumState> {
Future<RemoteAlbum?> updateAlbum( Future<RemoteAlbum?> updateAlbum(
String albumId, { String albumId, {
String? name, String? name,
String? description, Optional<String?> description = const Optional.absent(),
String? thumbnailAssetId, String? thumbnailAssetId,
bool? isActivityEnabled, bool? isActivityEnabled,
AlbumAssetOrder? order, AlbumAssetOrder? order,

View File

@ -71,7 +71,7 @@ class DriftAlbumApiRepository extends ApiRepository {
String albumId, String albumId,
UserDto owner, { UserDto owner, {
String? name, String? name,
String? description, Optional<String?> description = const Optional.absent(),
String? thumbnailAssetId, String? thumbnailAssetId,
bool? isActivityEnabled, bool? isActivityEnabled,
AlbumAssetOrder? order, AlbumAssetOrder? order,
@ -86,7 +86,7 @@ class DriftAlbumApiRepository extends ApiRepository {
albumId, albumId,
UpdateAlbumDto( UpdateAlbumDto(
albumName: name == null ? const Optional.absent() : Optional.present(name), albumName: name == null ? const Optional.absent() : Optional.present(name),
description: description == null ? const Optional.absent() : Optional.present(description), description: description,
albumThumbnailAssetId: thumbnailAssetId == null albumThumbnailAssetId: thumbnailAssetId == null
? const Optional.absent() ? const Optional.absent()
: Optional.present(thumbnailAssetId), : Optional.present(thumbnailAssetId),