Skip to content

Commit 2ac26cb

Browse files
authored
Merge pull request #197 from Piwigo/develop
Release 2.3.1
2 parents 74609ca + 714792e commit 2ac26cb

8 files changed

Lines changed: 36 additions & 18 deletions

File tree

lib/components/lists/image_grid_view.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,21 @@ class _ImageGridViewState extends State<ImageGridView> {
3131
void _onTapImage(ImageModel image) {
3232
final bool selected = widget.selectedList.contains(image);
3333
if (widget.selectedList.isNotEmpty && !selected) {
34-
if (widget.onSelectImage != null) widget.onSelectImage!(image);
34+
widget.onSelectImage?.call(image);
3535
} else if (selected) {
36-
if (widget.onDeselectImage != null) widget.onDeselectImage!(image);
36+
widget.onDeselectImage?.call(image);
3737
} else {
38-
if (widget.onTapImage != null) widget.onTapImage!(image);
38+
widget.onTapImage?.call(image);
3939
}
4040
}
4141

4242
void _onLongPressImage(ImageModel image) {
4343
if (widget.selectedList.isEmpty) {
4444
HapticFeedback.mediumImpact();
4545
}
46+
if (widget.selectedList.contains(image)) return;
4647
setState(() {
47-
if (widget.onSelectImage != null) widget.onSelectImage!(image);
48+
widget.onSelectImage?.call(image);
4849
});
4950
}
5051

@@ -69,8 +70,7 @@ class _ImageGridViewState extends State<ImageGridView> {
6970
return ClipRRect(
7071
borderRadius: index == widget.imageList.length - 1
7172
? BorderRadius.only(
72-
topRight: widget.imageList.length <
73-
Settings.getImageCrossAxisCount(context)
73+
topRight: widget.imageList.length < Settings.getImageCrossAxisCount(context)
7474
? Radius.circular(10.0)
7575
: Radius.zero,
7676
bottomRight: Radius.circular(10.0),

lib/network/images.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import 'package:file_picker/file_picker.dart';
77
import 'package:flutter/foundation.dart';
88
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
99
import 'package:image_gallery_saver/image_gallery_saver.dart';
10-
import 'package:image_picker/image_picker.dart';
1110
import 'package:path/path.dart' as path;
1211
import 'package:path_provider/path_provider.dart';
1312
import 'package:piwigo_ng/models/album_model.dart';
1413
import 'package:piwigo_ng/models/image_model.dart';
1514
import 'package:piwigo_ng/network/api_error.dart';
15+
import 'package:piwigo_ng/network/upload.dart';
1616
import 'package:piwigo_ng/services/chunked_uploader.dart';
1717
import 'package:piwigo_ng/services/notification_service.dart';
1818
import 'package:piwigo_ng/services/preferences_service.dart';
@@ -292,9 +292,14 @@ Future<XFile?> downloadImage(
292292
ImageModel image,
293293
) async {
294294
String localPath = path.join(dirPath, image.file);
295+
if (!await askMediaPermission()) return null;
295296
try {
296297
await ApiClient.download(
297-
path: image.elementUrl,
298+
path: 'action.php',
299+
queryParameters: {
300+
'id': image.id,
301+
'part': 'e',
302+
},
298303
outputPath: localPath,
299304
);
300305
await ImageGallerySaver.saveFile(

lib/views/album/album_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,17 +198,20 @@ class _AlbumPageState extends State<AlbumPage> {
198198
}
199199

200200
void _onWillPop(bool pop) {
201+
if (pop) return;
201202
if (_selectedList.isNotEmpty) {
202203
setState(() {
203204
_selectedList.clear();
204205
});
206+
} else {
207+
Navigator.of(context).pop();
205208
}
206209
}
207210

208211
@override
209212
Widget build(BuildContext context) {
210213
return PopScope(
211-
canPop: _selectedList.isEmpty,
214+
canPop: false,
212215
onPopInvoked: _onWillPop,
213216
child: Scaffold(
214217
body: SafeArea(

lib/views/image/image_favorites_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,13 @@ class _ImageFavoritesPageState extends State<ImageFavoritesPage> {
6161
bool get _hasNonFavorites => _selectedList.where((image) => !image.favorite).isNotEmpty;
6262

6363
void _onWillPop(bool pop) async {
64+
if (pop) return;
6465
if (_selectedList.isNotEmpty) {
6566
setState(() {
6667
_selectedList.clear();
6768
});
69+
} else {
70+
Navigator.of(context).pop();
6871
}
6972
}
7073

@@ -141,7 +144,7 @@ class _ImageFavoritesPageState extends State<ImageFavoritesPage> {
141144
@override
142145
Widget build(BuildContext context) {
143146
return PopScope(
144-
canPop: _selectedList.isEmpty,
147+
canPop: false,
145148
onPopInvoked: _onWillPop,
146149
child: Scaffold(
147150
body: SafeArea(

lib/views/image/image_page.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ class _ImagePageState extends State<ImagePage> {
178178
/// * If overlay is hidden, show it.
179179
/// * Otherwise, close the page.
180180
void _onWillPop(bool pop) {
181+
if (pop) return;
181182
if (!_showOverlay) {
182183
setState(() {
183184
_showOverlay = true;
@@ -282,7 +283,7 @@ class _ImagePageState extends State<ImagePage> {
282283
@override
283284
Widget build(BuildContext context) {
284285
return PopScope(
285-
canPop: !_showOverlay,
286+
canPop: false,
286287
onPopInvoked: _onWillPop,
287288
child: Scaffold(
288289
backgroundColor: Colors.black,

lib/views/image/image_search_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,13 @@ class _ImageSearchPageState extends State<ImageSearchPage> {
6464
bool get _hasNonFavorites => _selectedList.where((image) => !image.favorite).isNotEmpty;
6565

6666
void _onWillPop(bool pop) {
67+
if (pop) return;
6768
if (_selectedList.isNotEmpty) {
6869
setState(() {
6970
_selectedList.clear();
7071
});
72+
} else {
73+
Navigator.of(context).pop();
7174
}
7275
}
7376

@@ -148,7 +151,7 @@ class _ImageSearchPageState extends State<ImageSearchPage> {
148151
@override
149152
Widget build(BuildContext context) {
150153
return PopScope(
151-
canPop: _selectedList.isEmpty,
154+
canPop: false,
152155
onPopInvoked: _onWillPop,
153156
child: Scaffold(
154157
body: SafeArea(

lib/views/image/image_tags_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,13 @@ class _ImageTagsPageState extends State<ImageTagsPage> {
6363
bool get _hasNonFavorites => _selectedList.where((image) => !image.favorite).isNotEmpty;
6464

6565
void _onWillPop(bool pop) {
66+
if (pop) return null;
6667
if (_selectedList.isNotEmpty) {
6768
setState(() {
6869
_selectedList.clear();
6970
});
71+
} else {
72+
Navigator.of(context).pop();
7073
}
7174
}
7275

@@ -143,7 +146,7 @@ class _ImageTagsPageState extends State<ImageTagsPage> {
143146
@override
144147
Widget build(BuildContext context) {
145148
return PopScope(
146-
canPop: _selectedList.isEmpty,
149+
canPop: false,
147150
onPopInvoked: _onWillPop,
148151
child: Scaffold(
149152
body: SafeArea(

pubspec.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,27 @@ dependencies:
4040
flutter_easyloading: ^3.0.5 # Show loading dialog
4141

4242
# Storage
43-
package_info_plus: ^3.1.2 # Get project info (version)
43+
package_info_plus: ^8.0.0 # Get project info (version)
4444
path_provider: ^2.0.11 # Get application documents
4545
shared_preferences: ^2.0.15 # Base local storage
4646
flutter_secure_storage: ^6.0.0 # Local storage secured for logins
4747
image_picker: ^0.8.5+3 # Pick images from camera
4848
file_picker: ^5.2.5 # Pick images and videos at a time for upload
4949

5050
# Device
51-
device_info_plus: ^8.2.0 # Get device info (version)
51+
device_info_plus: ^10.1.0 # Get device info (version)
5252
flutter_local_notifications: ^17.2.0 # Throws notifications on download or upload
53-
open_filex: ^4.3.2 # Open files with devices apps
53+
open_filex: ^4.4.0 # Open files with devices apps
5454
workmanager: ^0.5.0 # Background processes (auto upload)
5555
image_gallery_saver: ^2.0.3 # Download images
5656

5757
# Utils
5858
mime_type: ^1.0.0 # Check mime type of files (differentiate photos from videos)
5959
video_player: ^2.4.7 # Read video files in fullscreen mode
60-
chewie: ^1.5.0 # Video player with options
60+
chewie: ^1.8.1 # Video player with options
6161
flutter_image_compress: ^1.1.3 # Remove metadata
6262
permission_handler: ^10.2.0 # Check and asks for permissions
63-
share_plus: ^4.4.0 # Share files
63+
share_plus: ^9.0.0 # Share files
6464
flutter_cache_manager: ^3.3.0 # Handles network image cache
6565
heic_to_jpg: ^0.2.0 # Convert heic files to jpg
6666
provider: ^6.0.3 # Notifiers for theme and language changes

0 commit comments

Comments
 (0)