@@ -28,13 +28,15 @@ class RemoteAlbumPage extends ConsumerStatefulWidget {
28
28
}
29
29
30
30
class _RemoteAlbumPageState extends ConsumerState <RemoteAlbumPage > {
31
+ late RemoteAlbum _album;
31
32
@override
32
33
void initState () {
33
34
super .initState ();
35
+ _album = widget.album;
34
36
}
35
37
36
38
Future <void > addAssets (BuildContext context) async {
37
- final albumAssets = await ref.read (remoteAlbumProvider.notifier).getAssets (widget.album .id);
39
+ final albumAssets = await ref.read (remoteAlbumProvider.notifier).getAssets (_album .id);
38
40
39
41
final newAssets = await context.pushRoute <Set <BaseAsset >>(
40
42
DriftAssetSelectionTimelineRoute (lockedSelectionAssets: albumAssets.toSet ()),
@@ -47,7 +49,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
47
49
final added = await ref
48
50
.read (remoteAlbumProvider.notifier)
49
51
.addAssets (
50
- widget.album .id,
52
+ _album .id,
51
53
newAssets.map ((asset) {
52
54
final remoteAsset = asset as RemoteAsset ;
53
55
return remoteAsset.id;
@@ -64,14 +66,14 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
64
66
}
65
67
66
68
Future <void > addUsers (BuildContext context) async {
67
- final newUsers = await context.pushRoute <List <String >>(DriftUserSelectionRoute (album: widget.album ));
69
+ final newUsers = await context.pushRoute <List <String >>(DriftUserSelectionRoute (album: _album ));
68
70
69
71
if (newUsers == null || newUsers.isEmpty) {
70
72
return ;
71
73
}
72
74
73
75
try {
74
- await ref.read (remoteAlbumProvider.notifier).addUsers (widget.album .id, newUsers);
76
+ await ref.read (remoteAlbumProvider.notifier).addUsers (_album .id, newUsers);
75
77
76
78
if (newUsers.isNotEmpty) {
77
79
ImmichToast .show (
@@ -81,7 +83,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
81
83
);
82
84
}
83
85
84
- ref.invalidate (remoteAlbumSharedUsersProvider (widget.album .id));
86
+ ref.invalidate (remoteAlbumSharedUsersProvider (_album .id));
85
87
} catch (e) {
86
88
ImmichToast .show (
87
89
context: context,
@@ -92,7 +94,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
92
94
}
93
95
94
96
Future <void > toggleAlbumOrder () async {
95
- await ref.read (remoteAlbumProvider.notifier).toggleAlbumOrder (widget.album .id);
97
+ await ref.read (remoteAlbumProvider.notifier).toggleAlbumOrder (_album .id);
96
98
97
99
ref.invalidate (timelineServiceProvider);
98
100
}
@@ -106,7 +108,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
106
108
content: Column (
107
109
mainAxisSize: MainAxisSize .min,
108
110
children: [
109
- Text ('album_delete_confirmation' .t (context: context, args: {'album' : widget.album .name})),
111
+ Text ('album_delete_confirmation' .t (context: context, args: {'album' : _album .name})),
110
112
const SizedBox (height: 8 ),
111
113
Text ('album_delete_confirmation_description' .t (context: context)),
112
114
],
@@ -128,7 +130,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
128
130
129
131
if (confirmed == true ) {
130
132
try {
131
- await ref.read (remoteAlbumProvider.notifier).deleteAlbum (widget.album .id);
133
+ await ref.read (remoteAlbumProvider.notifier).deleteAlbum (_album .id);
132
134
133
135
ImmichToast .show (
134
136
context: context,
@@ -151,17 +153,20 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
151
153
final result = await showDialog <_EditAlbumData ?>(
152
154
context: context,
153
155
barrierDismissible: true ,
154
- builder: (context) => _EditAlbumDialog (album: widget.album ),
156
+ builder: (context) => _EditAlbumDialog (album: _album ),
155
157
);
156
158
157
159
if (result != null && context.mounted) {
160
+ setState (() {
161
+ _album = _album.copyWith (name: result.name, description: result.description ?? '' );
162
+ });
158
163
HapticFeedback .mediumImpact ();
159
164
}
160
165
}
161
166
162
167
void showOptionSheet (BuildContext context) {
163
168
final user = ref.watch (currentUserProvider);
164
- final isOwner = user != null ? user.id == widget.album .ownerId : false ;
169
+ final isOwner = user != null ? user.id == _album .ownerId : false ;
165
170
166
171
showModalBottomSheet (
167
172
context: context,
@@ -205,7 +210,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
205
210
return ProviderScope (
206
211
overrides: [
207
212
timelineServiceProvider.overrideWith ((ref) {
208
- final timelineService = ref.watch (timelineFactoryProvider).remoteAlbum (albumId: widget.album .id);
213
+ final timelineService = ref.watch (timelineFactoryProvider).remoteAlbum (albumId: _album .id);
209
214
ref.onDispose (timelineService.dispose);
210
215
return timelineService;
211
216
}),
@@ -217,7 +222,7 @@ class _RemoteAlbumPageState extends ConsumerState<RemoteAlbumPage> {
217
222
onToggleAlbumOrder: () => toggleAlbumOrder (),
218
223
onEditTitle: () => showEditTitleAndDescription (context),
219
224
),
220
- bottomSheet: RemoteAlbumBottomSheet (album: widget.album ),
225
+ bottomSheet: RemoteAlbumBottomSheet (album: _album ),
221
226
),
222
227
);
223
228
}
0 commit comments