mirror of
https://github.com/immich-app/immich.git
synced 2025-07-31 15:08:44 -04:00
* feat(mobile): add album description functionality - Introduced a new optional `description` field in the `Album` entity. - Updated `AlbumViewerPageState` to manage `editDescriptionText`. - Created `AlbumDescription` and `AlbumViewerEditableDescription` widgets for displaying and editing album descriptions. - Enhanced `CreateAlbumPage` to include a description input field. - Implemented backend support for updating album descriptions in `AlbumApiRepository` and `AlbumService`. - Updated sync logic to handle album descriptions during data synchronization. - Adjusted UI components to accommodate the new description feature. * fix dart analysis error * remove comment that shouldn't be there * Album header styling * fix: disable edit after album creation --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
69 lines
1.9 KiB
Dart
69 lines
1.9 KiB
Dart
import 'dart:convert';
|
|
|
|
class AlbumViewerPageState {
|
|
final bool isEditAlbum;
|
|
final String editTitleText;
|
|
final String editDescriptionText;
|
|
|
|
AlbumViewerPageState({
|
|
required this.isEditAlbum,
|
|
required this.editTitleText,
|
|
required this.editDescriptionText,
|
|
});
|
|
|
|
AlbumViewerPageState copyWith({
|
|
bool? isEditAlbum,
|
|
String? editTitleText,
|
|
String? editDescriptionText,
|
|
}) {
|
|
return AlbumViewerPageState(
|
|
isEditAlbum: isEditAlbum ?? this.isEditAlbum,
|
|
editTitleText: editTitleText ?? this.editTitleText,
|
|
editDescriptionText: editDescriptionText ?? this.editDescriptionText,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() {
|
|
final result = <String, dynamic>{};
|
|
|
|
result.addAll({'isEditAlbum': isEditAlbum});
|
|
result.addAll({'editTitleText': editTitleText});
|
|
result.addAll({'editDescriptionText': editDescriptionText});
|
|
|
|
return result;
|
|
}
|
|
|
|
factory AlbumViewerPageState.fromMap(Map<String, dynamic> map) {
|
|
return AlbumViewerPageState(
|
|
isEditAlbum: map['isEditAlbum'] ?? false,
|
|
editTitleText: map['editTitleText'] ?? '',
|
|
editDescriptionText: map['editDescriptionText'] ?? '',
|
|
);
|
|
}
|
|
|
|
String toJson() => json.encode(toMap());
|
|
|
|
factory AlbumViewerPageState.fromJson(String source) =>
|
|
AlbumViewerPageState.fromMap(json.decode(source));
|
|
|
|
@override
|
|
String toString() =>
|
|
'AlbumViewerPageState(isEditAlbum: $isEditAlbum, editTitleText: $editTitleText, editDescriptionText: $editDescriptionText)';
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
|
|
return other is AlbumViewerPageState &&
|
|
other.isEditAlbum == isEditAlbum &&
|
|
other.editTitleText == editTitleText &&
|
|
other.editDescriptionText == editDescriptionText;
|
|
}
|
|
|
|
@override
|
|
int get hashCode =>
|
|
isEditAlbum.hashCode ^
|
|
editTitleText.hashCode ^
|
|
editDescriptionText.hashCode;
|
|
}
|