Browse Source

Merge remote-tracking branch 'origin/master' into share_to_ente_android

Neeraj Gupta 4 years ago
parent
commit
f29abe8e72

+ 1 - 1
lib/core/cache/image_cache.dart

@@ -4,7 +4,7 @@ import 'package:photos/core/cache/lru_map.dart';
 import 'package:photos/models/file.dart';
 
 class FileLruCache {
-  static LRUMap<String, io.File> _map = LRUMap(25);
+  static final LRUMap<String, io.File> _map = LRUMap(25);
 
   static io.File get(File file) {
     return _map.get(file.tag());

+ 2 - 2
lib/core/cache/lru_map.dart

@@ -1,9 +1,9 @@
 import 'dart:collection';
 
-typedef EvictionHandler<K, V>(K key, V value);
+typedef EvictionHandler<K, V> = Function(K key, V value);
 
 class LRUMap<K, V> {
-  final LinkedHashMap<K, V> _map = new LinkedHashMap<K, V>();
+  final LinkedHashMap<K, V> _map = LinkedHashMap<K, V>();
   final int _maxSize;
   final EvictionHandler<K, V> _handler;
 

+ 1 - 1
lib/core/cache/thumbnail_cache.dart

@@ -5,7 +5,7 @@ import 'package:photos/core/constants.dart';
 import 'package:photos/models/file.dart';
 
 class ThumbnailLruCache {
-  static LRUMap<String, Uint8List> _map = LRUMap(1000);
+  static final LRUMap<String, Uint8List> _map = LRUMap(1000);
 
   static Uint8List get(File photo, [int size]) {
     return _map.get(photo.generatedID.toString() +

+ 2 - 2
lib/db/collections_db.dart

@@ -126,7 +126,7 @@ class CollectionsDB {
   Future<List<Collection>> getAllCollections() async {
     final db = await instance.database;
     final rows = await db.query(table);
-    final collections = List<Collection>();
+    final collections = <Collection>[];
     for (final row in rows) {
       collections.add(_convertToCollection(row));
     }
@@ -157,7 +157,7 @@ class CollectionsDB {
   }
 
   Map<String, dynamic> _getRowForCollection(Collection collection) {
-    var row = new Map<String, dynamic>();
+    var row = <String, dynamic>{};
     row[columnID] = collection.id;
     row[columnOwner] = collection.owner.toJson();
     row[columnEncryptedKey] = collection.encryptedKey;

+ 2 - 2
lib/db/memories_db.dart

@@ -69,14 +69,14 @@ class MemoriesDB {
   }
 
   Map<String, dynamic> _getRowForSeenMemory(Memory memory, int timestamp) {
-    var row = new Map<String, dynamic>();
+    var row = <String, dynamic>{};
     row[columnFileID] = memory.file.generatedID;
     row[columnSeenTime] = timestamp;
     return row;
   }
 
   Map<int, int> _convertToSeenTimes(List<Map<String, dynamic>> rows) {
-    final seenTimes = Map<int, int>();
+    final seenTimes = <int, int>{};
     for (final row in rows) {
       seenTimes[row[columnFileID]] = int.parse(row[columnSeenTime]);
     }

+ 2 - 2
lib/db/public_keys_db.dart

@@ -65,14 +65,14 @@ class PublicKeysDB {
   }
 
   Map<String, dynamic> _getRow(PublicKey key) {
-    var row = new Map<String, dynamic>();
+    var row = <String, dynamic>{};
     row[columnEmail] = key.email;
     row[columnPublicKey] = key.publicKey;
     return row;
   }
 
   List<PublicKey> _convertRows(List<Map<String, dynamic>> rows) {
-    final keys = List<PublicKey>();
+    final keys = <PublicKey>[];
     for (final row in rows) {
       keys.add(PublicKey(row[columnEmail], row[columnPublicKey]));
     }

+ 1 - 1
lib/db/upload_locks_db.dart

@@ -50,7 +50,7 @@ class UploadLocksDB {
 
   Future<void> acquireLock(String id, String owner, int time) async {
     final db = await instance.database;
-    final row = new Map<String, dynamic>();
+    final row = <String, dynamic>{};
     row[_columnID] = id;
     row[_columnOwner] = owner;
     row[_columnTime] = time;

+ 1 - 1
lib/events/sync_status_update_event.dart

@@ -17,7 +17,7 @@ class SyncStatusUpdate extends Event {
     this.reason = "",
     this.error,
   }) {
-    this.timestamp = DateTime.now().microsecondsSinceEpoch;
+    timestamp = DateTime.now().microsecondsSinceEpoch;
   }
 
   @override

+ 2 - 2
lib/models/collection.dart

@@ -102,7 +102,7 @@ class Collection {
   factory Collection.fromMap(Map<String, dynamic> map) {
     if (map == null) return null;
     final sharees = (map['sharees'] == null || map['sharees'].length == 0)
-        ? List<User>()
+        ? <User>[]
         : List<User>.from(map['sharees'].map((x) => User.fromMap(x)));
     return Collection(
       map['id'],
@@ -196,7 +196,7 @@ class CollectionAttributes {
   }
 
   Map<String, dynamic> toMap() {
-    final map = Map<String, dynamic>();
+    final map = <String, dynamic>{};
     if (encryptedPath != null) {
       map['encryptedPath'] = encryptedPath;
     }

+ 1 - 1
lib/models/file.dart

@@ -81,7 +81,7 @@ class File {
   }
 
   Map<String, dynamic> getMetadata() {
-    final metadata = Map<String, dynamic>();
+    final metadata = <String, dynamic>{};
     metadata["localID"] = isCachedInAppSandbox() ? null : localID;
     metadata["title"] = title;
     metadata["deviceFolder"] = deviceFolder;

+ 3 - 3
lib/models/selected_files.dart

@@ -2,8 +2,8 @@ import 'package:flutter/foundation.dart';
 import 'package:photos/models/file.dart';
 
 class SelectedFiles extends ChangeNotifier {
-  final files = Set<File>();
-  final lastSelections = Set<File>();
+  final files = <File>{};
+  final lastSelections = <File>{};
 
   void toggleSelection(File file) {
     if (files.contains(file)) {
@@ -12,7 +12,7 @@ class SelectedFiles extends ChangeNotifier {
       files.add(file);
     }
     lastSelections.clear();
-     lastSelections.add(file);
+    lastSelections.add(file);
     notifyListeners();
   }
 

+ 7 - 10
lib/services/billing_service.dart

@@ -54,13 +54,10 @@ class BillingService {
   }
 
   Future<BillingPlans> getBillingPlans() {
-    if (_future == null) {
-      _future = _dio
-          .get(_config.getHttpEndpoint() + "/billing/plans")
-          .then((response) {
-        return BillingPlans.fromMap(response.data);
-      });
-    }
+    _future ??=
+        _dio.get(_config.getHttpEndpoint() + "/billing/plans").then((response) {
+      return BillingPlans.fromMap(response.data);
+    });
     return _future;
   }
 
@@ -86,7 +83,7 @@ class BillingService {
       );
       return Subscription.fromMap(response.data["subscription"]);
     } catch (e) {
-      throw e;
+      rethrow;
     }
   }
 
@@ -104,7 +101,7 @@ class BillingService {
       return subscription;
     } on DioError catch (e) {
       _logger.severe(e);
-      throw e;
+      rethrow;
     }
   }
 
@@ -124,7 +121,7 @@ class BillingService {
       );
       return response.data["usage"];
     } catch (e) {
-      throw e;
+      rethrow;
     }
   }
 

+ 1 - 2
lib/services/local_sync_service.dart

@@ -26,7 +26,7 @@ class LocalSyncService {
   static const kDownloadedFileIDsKey = "downloaded_file_ids";
   static const kInvalidFileIDsKey = "invalid_file_ids";
 
-  LocalSyncService._privateConstructor() {}
+  LocalSyncService._privateConstructor();
 
   static final LocalSyncService instance =
       LocalSyncService._privateConstructor();
@@ -41,7 +41,6 @@ class LocalSyncService {
     PhotoManager.addChangeCallback((value) {
       _logger.info("Something changed on disk");
       callback();
-
     });
     PhotoManager.startChangeNotify();
   }

+ 2 - 2
lib/services/sync_service.dart

@@ -122,7 +122,7 @@ class SyncService {
       }
       _logger.severe("backup failed", e, s);
       Bus.instance.fire(SyncStatusUpdate(SyncStatus.error));
-      throw e;
+      rethrow;
     } finally {
       _existingSync.complete(successful);
       _existingSync = null;
@@ -212,7 +212,7 @@ class SyncService {
       return response.data["size"];
     } catch (e) {
       _logger.severe(e);
-      throw e;
+      rethrow;
     }
   }
 

+ 9 - 9
lib/services/user_service.dart

@@ -106,7 +106,7 @@ class UserService {
         await dialog.hide();
         Navigator.of(context).popUntil((route) => route.isFirst);
       } else {
-        throw new Exception("log out action failed");
+        throw Exception("log out action failed");
       }
     } catch (e) {
       _logger.severe(e);
@@ -129,7 +129,7 @@ class UserService {
       await dialog.hide();
       if (response != null && response.statusCode == 200) {
         showToast("email verification successful!");
-        var page;
+        Widget page;
         final String twoFASessionID = response.data["twoFactorSessionID"];
         if (twoFASessionID != null && twoFASessionID.isNotEmpty) {
           page = TwoFactorAuthenticationPage(twoFASessionID);
@@ -180,7 +180,7 @@ class UserService {
       await _config.setKeyAttributes(result.keyAttributes);
     } catch (e) {
       _logger.severe(e);
-      throw e;
+      rethrow;
     }
   }
 
@@ -205,7 +205,7 @@ class UserService {
       await _config.setKeyAttributes(keyAttributes);
     } catch (e) {
       _logger.severe(e);
-      throw e;
+      rethrow;
     }
   }
 
@@ -229,7 +229,7 @@ class UserService {
       await _config.setKeyAttributes(keyAttributes);
     } catch (e) {
       _logger.severe(e);
-      throw e;
+      rethrow;
     }
   }
 
@@ -417,13 +417,13 @@ class UserService {
     } catch (e, s) {
       await dialog.hide();
       _logger.severe(e, s);
-      throw e;
+      rethrow;
     }
   }
 
   Future<bool> enableTwoFactor(
       BuildContext context, String secret, String code) async {
-    var recoveryKey;
+    Uint8List recoveryKey;
     try {
       recoveryKey = await getOrCreateRecoveryKey(context);
     } catch (e) {
@@ -507,7 +507,7 @@ class UserService {
       return response.data["status"];
     } catch (e, s) {
       _logger.severe(e, s);
-      throw e;
+      rethrow;
     }
   }
 
@@ -524,7 +524,7 @@ class UserService {
       } catch (e, s) {
         await dialog.hide();
         _logger.severe(e, s);
-        throw e;
+        rethrow;
       }
     }
     final recoveryKey = _config.getRecoveryKey();

+ 34 - 36
lib/ui/backup_folder_selection_page.dart

@@ -29,8 +29,8 @@ class BackupFolderSelectionPage extends StatefulWidget {
 }
 
 class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
-  final Set<String> _allFolders = Set<String>();
-  Set<String> _selectedFolders = Set<String>();
+  final Set<String> _allFolders = <String>{};
+  Set<String> _selectedFolders = <String>{};
   List<File> _latestFiles;
   Map<String, int> _itemCount;
 
@@ -130,7 +130,7 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
               child: button(
                 widget.buttonText,
                 fontSize: 18,
-                onPressed: _selectedFolders.length == 0
+                onPressed: _selectedFolders.isEmpty
                     ? null
                     : () async {
                         await Configuration.instance
@@ -225,40 +225,38 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
                 children: [
                   _getThumbnail(file),
                   Padding(padding: EdgeInsets.all(10)),
-                  Container(
-                    child: Column(
-                      crossAxisAlignment: CrossAxisAlignment.start,
-                      children: [
-                        Container(
-                          constraints: BoxConstraints(maxWidth: 140),
-                          child: Text(
-                            file.deviceFolder,
-                            style: TextStyle(
-                              fontSize: 14,
-                              height: 1.5,
-                              color: isSelected
-                                  ? Colors.white
-                                  : Colors.white.withOpacity(0.7),
-                            ),
-                            overflow: TextOverflow.ellipsis,
-                            maxLines: 2,
-                          ),
-                        ),
-                        Padding(padding: EdgeInsets.all(2)),
-                        Text(
-                          _itemCount[file.deviceFolder].toString() +
-                              " item" +
-                              (_itemCount[file.deviceFolder] == 1 ? "" : "s"),
-                          textAlign: TextAlign.left,
+                  Column(
+                    crossAxisAlignment: CrossAxisAlignment.start,
+                    children: [
+                      Container(
+                        constraints: BoxConstraints(maxWidth: 140),
+                        child: Text(
+                          file.deviceFolder,
                           style: TextStyle(
-                            fontSize: 12,
+                            fontSize: 14,
+                            height: 1.5,
                             color: isSelected
-                                ? Colors.white.withOpacity(0.65)
-                                : Colors.white.withOpacity(0.4),
+                                ? Colors.white
+                                : Colors.white.withOpacity(0.7),
                           ),
+                          overflow: TextOverflow.ellipsis,
+                          maxLines: 2,
                         ),
-                      ],
-                    ),
+                      ),
+                      Padding(padding: EdgeInsets.all(2)),
+                      Text(
+                        _itemCount[file.deviceFolder].toString() +
+                            " item" +
+                            (_itemCount[file.deviceFolder] == 1 ? "" : "s"),
+                        textAlign: TextAlign.left,
+                        style: TextStyle(
+                          fontSize: 12,
+                          color: isSelected
+                              ? Colors.white.withOpacity(0.65)
+                              : Colors.white.withOpacity(0.4),
+                        ),
+                      ),
+                    ],
                   ),
                 ],
               ),
@@ -291,8 +289,8 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
 
   void _sortFiles() {
     _latestFiles.sort((first, second) {
-      if (_selectedFolders.contains(first) &&
-          _selectedFolders.contains(second)) {
+      if (_selectedFolders.contains(first.deviceFolder) &&
+          _selectedFolders.contains(second.deviceFolder)) {
         return first.deviceFolder
             .toLowerCase()
             .compareTo(second.deviceFolder.toLowerCase());
@@ -310,7 +308,7 @@ class _BackupFolderSelectionPageState extends State<BackupFolderSelectionPage> {
   Widget _getThumbnail(File file) {
     return ClipRRect(
       borderRadius: BorderRadius.circular(4.0),
-      child: Container(
+      child: SizedBox(
         child: ThumbnailWidget(
           file,
           shouldShowSyncStatus: false,

+ 3 - 3
lib/utils/thumbnail_util.dart

@@ -19,7 +19,7 @@ import 'dart:io' as io;
 import 'file_uploader_util.dart';
 
 final _logger = Logger("ThumbnailUtil");
-final _map = LinkedHashMap<int, FileDownloadItem>();
+final _map = <int, FileDownloadItem>{};
 final _queue = Queue<int>();
 const int kMaximumConcurrentDownloads = 500;
 
@@ -118,7 +118,7 @@ void _downloadItem(FileDownloadItem item) async {
 
 Future<void> _downloadAndDecryptThumbnail(FileDownloadItem item) async {
   final file = item.file;
-  var encryptedThumbnail;
+  Uint8List encryptedThumbnail;
   try {
     encryptedThumbnail = (await Network.instance.getDio().get(
               file.getThumbnailUrl(),
@@ -133,7 +133,7 @@ Future<void> _downloadAndDecryptThumbnail(FileDownloadItem item) async {
     if (e is DioError && CancelToken.isCancel(e)) {
       return;
     }
-    throw e;
+    rethrow;
   }
   if (!_map.containsKey(file.uploadedFileID)) {
     return;

+ 1 - 1
lib/utils/toast_util.dart

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_easyloading/flutter_easyloading.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 
-Future<void> showToast(String message, {toastLength: Toast.LENGTH_LONG}) {
+Future<void> showToast(String message, {toastLength = Toast.LENGTH_LONG}) {
   if (Platform.isAndroid) {
     return Fluttertoast.showToast(
         msg: message,

+ 1 - 1
pubspec.yaml

@@ -11,7 +11,7 @@ description: ente photos application
 # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
 # Read more about iOS versioning at
 # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 0.2.41+207
+version: 0.2.42+208
 
 environment:
   sdk: ">=2.10.0 <3.0.0"