mirror of
https://github.com/immich-app/immich.git
synced 2025-08-11 09:16:31 -04:00
* chore: bump dart sdk to 3.8 * chore: make build * make pigeon * chore: format files --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
75 lines
2.1 KiB
Dart
75 lines
2.1 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/entities/album.entity.dart';
|
|
import 'package:immich_mobile/models/albums/album_viewer_page_state.model.dart';
|
|
import 'package:immich_mobile/services/album.service.dart';
|
|
|
|
class AlbumViewerNotifier extends StateNotifier<AlbumViewerPageState> {
|
|
AlbumViewerNotifier(this.ref)
|
|
: super(const AlbumViewerPageState(editTitleText: "", isEditAlbum: false, editDescriptionText: ""));
|
|
|
|
final Ref ref;
|
|
|
|
void enableEditAlbum() {
|
|
state = state.copyWith(isEditAlbum: true);
|
|
}
|
|
|
|
void disableEditAlbum() {
|
|
state = state.copyWith(isEditAlbum: false);
|
|
}
|
|
|
|
void setEditTitleText(String newTitle) {
|
|
state = state.copyWith(editTitleText: newTitle);
|
|
}
|
|
|
|
void setEditDescriptionText(String newDescription) {
|
|
state = state.copyWith(editDescriptionText: newDescription);
|
|
}
|
|
|
|
void remoteEditTitleText() {
|
|
state = state.copyWith(editTitleText: "");
|
|
}
|
|
|
|
void remoteEditDescriptionText() {
|
|
state = state.copyWith(editDescriptionText: "");
|
|
}
|
|
|
|
void resetState() {
|
|
state = state.copyWith(editTitleText: "", isEditAlbum: false, editDescriptionText: "");
|
|
}
|
|
|
|
Future<bool> changeAlbumTitle(Album album, String newAlbumTitle) async {
|
|
AlbumService service = ref.watch(albumServiceProvider);
|
|
|
|
bool isSuccess = await service.changeTitleAlbum(album, newAlbumTitle);
|
|
|
|
if (isSuccess) {
|
|
state = state.copyWith(editTitleText: "", isEditAlbum: false);
|
|
|
|
return true;
|
|
}
|
|
|
|
state = state.copyWith(editTitleText: "", isEditAlbum: false);
|
|
return false;
|
|
}
|
|
|
|
Future<bool> changeAlbumDescription(Album album, String newAlbumDescription) async {
|
|
AlbumService service = ref.watch(albumServiceProvider);
|
|
|
|
bool isSuccess = await service.changeDescriptionAlbum(album, newAlbumDescription);
|
|
|
|
if (isSuccess) {
|
|
state = state.copyWith(editDescriptionText: "", isEditAlbum: false);
|
|
|
|
return true;
|
|
}
|
|
|
|
state = state.copyWith(editDescriptionText: "", isEditAlbum: false);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
final albumViewerProvider = StateNotifierProvider<AlbumViewerNotifier, AlbumViewerPageState>((ref) {
|
|
return AlbumViewerNotifier(ref);
|
|
});
|