Merge pull request #242 from ente-io/photos_manger_upgrade

Upgrade photos manger
This commit is contained in:
Vishnu Mohandas 2022-05-19 16:48:05 +05:30 committed by GitHub
commit 4494dc13a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 293 additions and 165 deletions

View file

@ -26,7 +26,7 @@ jobs:
- uses: subosito/flutter-action@v1
with:
channel: 'stable'
flutter-version: '2.8.1'
flutter-version: '3.0.0'
# Fetch sub modules
- run: git submodule update --init --recursive

View file

@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) {
}
android {
compileSdkVersion 31
compileSdkVersion 32
sourceSets {
main.java.srcDirs += 'src/main/kotlin'

View file

@ -1,10 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.ente.photos">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application android:name="io.flutter.app.FlutterApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" android:requestLegacyExternalStorage="true" android:allowBackup="false" android:fullBackupContent="false" android:largeHeap="true">
<application android:name="${applicationName}" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" android:requestLegacyExternalStorage="true" android:allowBackup="false" android:fullBackupContent="false" android:largeHeap="true">
<activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<intent-filter>

View file

@ -139,7 +139,7 @@ PODS:
- Flutter
- "permission_handler (5.1.0+2)":
- Flutter
- photo_manager (1.0.0):
- photo_manager (2.0.0):
- Flutter
- FlutterMacOS
- PromisesObjC (2.0.0)
@ -370,7 +370,7 @@ SPEC CHECKSUMS:
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1

View file

@ -24,4 +24,11 @@ class ThumbnailLruCache {
(size != null ? size.toString() : kThumbnailLargeSize.toString()),
imageData);
}
static void clearCache(File file) {
_map.remove(
file.generatedID.toString() + "_" + kThumbnailLargeSize.toString());
_map.remove(
file.generatedID.toString() + "_" + kThumbnailSmallSize.toString());
}
}

View file

@ -82,7 +82,7 @@ class File {
}
}
file.modificationTime = asset.modifiedDateTime.microsecondsSinceEpoch;
file.fileSubType = asset.subTypes;
file.fileSubType = asset.subtype;
file.metadataVersion = kCurrentMetadataVersion;
return file;
}
@ -94,9 +94,9 @@ class File {
type = FileType.image;
// PHAssetMediaSubtype.photoLive.rawValue is 8
// This hack should go away once photos_manager support livePhotos
if (asset.subTypes != null &&
asset.subTypes > -1 &&
(asset.subTypes & 8) != 0) {
if (asset.subtype != null &&
asset.subtype > -1 &&
(asset.subtype & 8) != 0) {
type = FileType.livePhoto;
}
break;
@ -142,7 +142,7 @@ class File {
final asset = await getAsset();
// asset can be null for files shared to app
if (asset != null) {
fileSubType = asset.subTypes;
fileSubType = asset.subtype;
if (fileType == FileType.video) {
duration = asset.duration;
}

View file

@ -232,7 +232,8 @@ class LocalSyncService {
updatedFiles
.removeWhere((file) => downloadedFileIDs.contains(file.localID));
if (updatedFiles.isNotEmpty) {
_logger.info(updatedFiles.length.toString() + " local files were updated.");
_logger.info(
updatedFiles.length.toString() + " local files were updated.");
}
for (final file in updatedFiles) {
await _db.updateUploadedFile(

View file

@ -34,7 +34,7 @@ class NotificationService {
AndroidNotificationDetails(
'io.ente.photos',
'ente',
'ente alerts',
channelDescription: 'ente alerts',
importance: Importance.max,
priority: Priority.high,
showWhen: false,

View file

@ -77,9 +77,16 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
child: Padding(
padding: const EdgeInsets.only(
top: 30, bottom: 12, left: 40, right: 40),
child: OutlineButton.icon(
padding: EdgeInsets.all(20),
icon: Icon(Icons.create_new_folder_outlined),
child: OutlinedButton.icon(
style: ButtonStyle(
padding: MaterialStateProperty.all<EdgeInsets>(
EdgeInsets.all(20),
),
),
icon: Icon(
Icons.create_new_folder_outlined,
color: Theme.of(context).buttonColor,
),
label: Text(
"to a new album",
style: Theme.of(context).textTheme.bodyText1,

View file

@ -59,9 +59,10 @@ class _SharingDialogState extends State<SharingDialog> {
if (!_showEntryField) {
children.add(SizedBox(
width: 220,
child: OutlineButton(
child: OutlinedButton(
child: Icon(
Icons.add,
color: Theme.of(context).buttonColor,
),
onPressed: () {
setState(() {

View file

@ -7,6 +7,7 @@ import 'package:photos/models/file.dart';
final _logger = Logger("FileSyncUtil");
final ignoreSizeConstraint = SizeConstraint(ignoreSize: true);
final assetFetchPageSize = 2000;
Future<List<File>> getDeviceFiles(
int fromTime, int toTime, Computer computer) async {
final pathEntities = await _getGalleryList(fromTime, toTime);
@ -28,10 +29,12 @@ Future<List<File>> getDeviceFiles(
}
Future<List<LocalAsset>> getAllLocalAssets() async {
final filterOptionGroup = FilterOptionGroup(
imageOption: FilterOption(sizeConstraint: ignoreSizeConstraint),
videoOption: FilterOption(sizeConstraint: ignoreSizeConstraint),
createTimeCond: DateTimeCond.def().copyWith(ignore: true));
final filterOptionGroup = FilterOptionGroup();
filterOptionGroup.setOption(
AssetType.image, FilterOption(sizeConstraint: ignoreSizeConstraint));
filterOptionGroup.setOption(
AssetType.video, FilterOption(sizeConstraint: ignoreSizeConstraint));
filterOptionGroup.createTimeCond = DateTimeCond.def().copyWith(ignore: true);
final assetPaths = await PhotoManager.getAssetPathList(
hasAll: true,
type: RequestType.common,
@ -39,7 +42,7 @@ Future<List<LocalAsset>> getAllLocalAssets() async {
);
final List<LocalAsset> assets = [];
for (final assetPath in assetPaths) {
for (final asset in await assetPath.assetList) {
for (final asset in await _getAllAssetLists(assetPath)) {
assets.add(LocalAsset(asset.id, assetPath.name));
}
}
@ -131,12 +134,25 @@ Future<List<File>> _computeFiles(AssetPathEntity pathEntity, int fromTime,
List<File> files, Computer computer) async {
final args = Map<String, dynamic>();
args["pathEntity"] = pathEntity;
args["assetList"] = await pathEntity.assetList;
args["assetList"] = await _getAllAssetLists(pathEntity);
args["fromTime"] = fromTime;
args["files"] = files;
return await computer.compute(_getFiles, param: args);
}
Future<List<AssetEntity>> _getAllAssetLists(AssetPathEntity pathEntity) async {
List<AssetEntity> result = [];
int currentPage = 0;
List<AssetEntity> currentPageResult = [];
do {
currentPageResult = await pathEntity.getAssetListPaged(
page: currentPage, size: assetFetchPageSize);
result.addAll(currentPageResult);
currentPage = currentPage + 1;
} while (currentPageResult.length >= assetFetchPageSize);
return result;
}
Future<List<File>> _getFiles(Map<String, dynamic> args) async {
final pathEntity = args["pathEntity"];
final assetList = args["assetList"];

View file

@ -95,9 +95,8 @@ Future<MediaUploadData> _getMediaUploadDataFromAssetFile(ente.File file) async {
sourceFile = io.File(livePhotoPath);
}
thumbnailData = await asset.thumbDataWithSize(
kThumbnailLargeSize,
kThumbnailLargeSize,
thumbnailData = await asset.thumbnailDataWithSize(
ThumbnailSize(kThumbnailLargeSize, kThumbnailLargeSize),
quality: kThumbnailQuality,
);
if (thumbnailData == null) {

View file

@ -11,6 +11,7 @@ import 'package:logging/logging.dart';
import 'package:motionphoto/motionphoto.dart';
import 'package:path/path.dart';
import 'package:photos/core/cache/image_cache.dart';
import 'package:photos/core/cache/thumbnail_cache.dart';
import 'package:photos/core/cache/video_cache_manager.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/core/constants.dart';
@ -134,8 +135,7 @@ Future<io.File> getFileFromServer(
return fileDownloadsInProgress[downloadID];
}
Future<bool> isFileCached(ente.File file,
{bool liveVideo = false}) async {
Future<bool> isFileCached(ente.File file, {bool liveVideo = false}) async {
final cacheManager = (file.fileType == FileType.video || liveVideo)
? VideoCacheManager.instance
: DefaultCacheManager();
@ -160,7 +160,7 @@ Future<io.File> _getLivePhotoFromServer(ente.File file,
return null;
}
return needLiveVideo ? livePhoto.video : livePhoto.image;
} catch (e,s) {
} catch (e, s) {
_logger.warning("live photo get failed", e, s);
livePhotoDownloadsTracker.remove(downloadID);
return null;
@ -226,8 +226,7 @@ Future<_LivePhoto> _downloadLivePhoto(ente.File file,
}
return _LivePhoto(imageFileCache, videoFileCache);
}).catchError((e) {
_logger.warning(
"failed to download live photos : ${file.tag()}", e);
_logger.warning("failed to download live photos : ${file.tag()}", e);
throw e;
});
}
@ -298,6 +297,7 @@ Future<void> clearCache(ente.File file) async {
if (cachedThumbnail.existsSync()) {
await cachedThumbnail.delete();
}
ThumbnailLruCache.clearCache(file);
}
class _LivePhoto {

View file

@ -6,6 +6,7 @@ import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:flutter_sodium/flutter_sodium.dart';
import 'package:logging/logging.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:photos/core/cache/thumbnail_cache.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/core/constants.dart';
@ -82,7 +83,9 @@ Future<Uint8List> getThumbnailFromLocal(File file,
if (asset == null || !(await asset.exists)) {
return null;
}
return asset.thumbDataWithSize(size, size, quality: quality).then((data) {
return asset
.thumbnailDataWithSize(ThumbnailSize(size, size), quality: quality)
.then((data) {
ThumbnailLruCache.put(file, data, size);
return data;
});

View file

@ -4,24 +4,26 @@ packages:
alice:
dependency: "direct main"
description:
name: alice
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.4"
path: "."
ref: HEAD
resolved-ref: "42c97aebbea93d1944a199b453b41bbed1f3013a"
url: "https://github.com/jhomlala/alice.git"
source: git
version: "0.2.5"
animate_do:
dependency: "direct main"
description:
name: animate_do
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.0"
archive:
dependency: "direct main"
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.2"
version: "3.3.0"
args:
dependency: transitive
description:
@ -42,14 +44,14 @@ packages:
name: background_fetch
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.1.0"
better_player:
dependency: transitive
description:
name: better_player
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.73"
version: "0.0.81"
bip39:
dependency: "direct main"
description:
@ -70,7 +72,21 @@ packages:
name: cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.2.1"
cached_network_image_platform_interface:
dependency: transitive
description:
name: cached_network_image_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
cached_network_image_web:
dependency: transitive
description:
name: cached_network_image_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
characters:
dependency: transitive
description:
@ -98,7 +114,7 @@ packages:
name: chopper
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
version: "4.0.5"
clock:
dependency: transitive
description:
@ -112,7 +128,7 @@ packages:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0"
version: "1.16.0"
computer:
dependency: "direct main"
description:
@ -140,14 +156,14 @@ packages:
name: connectivity_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
version: "0.4.0+1"
connectivity_macos:
dependency: transitive
description:
name: connectivity_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
version: "0.2.1+2"
connectivity_platform_interface:
dependency: transitive
description:
@ -161,14 +177,14 @@ packages:
name: contact_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "4.7.0"
contact_picker_web:
dependency: transitive
description:
name: contact_picker_web
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "4.7.0"
convert:
dependency: transitive
description:
@ -182,7 +198,7 @@ packages:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
csslib:
dependency: transitive
description:
@ -196,14 +212,21 @@ packages:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
version: "1.0.4"
dbus:
dependency: transitive
description:
name: dbus
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.3"
device_info:
dependency: "direct main"
description:
name: device_info
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.3"
device_info_platform_interface:
dependency: transitive
description:
@ -217,14 +240,14 @@ packages:
name: dio
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
version: "4.0.6"
dots_indicator:
dependency: "direct main"
description:
name: dots_indicator
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.0"
email_validator:
dependency: "direct main"
description:
@ -245,7 +268,7 @@ packages:
name: exif
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.1.1"
expansion_tile_card:
dependency: "direct main"
description:
@ -259,21 +282,21 @@ packages:
name: extended_image
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.1"
version: "6.2.1"
extended_image_library:
dependency: transitive
description:
name: extended_image_library
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "3.3.0"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.3.0"
fast_base58:
dependency: "direct main"
description:
@ -287,63 +310,63 @@ packages:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
version: "1.2.1"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.1"
version: "6.1.2"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
version: "1.17.0"
firebase_core_platform_interface:
dependency: transitive
description:
name: firebase_core_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.0"
version: "4.4.0"
firebase_core_web:
dependency: transitive
description:
name: firebase_core_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.6.4"
firebase_messaging:
dependency: "direct main"
description:
name: firebase_messaging
url: "https://pub.dartlang.org"
source: hosted
version: "11.1.0"
version: "11.4.0"
firebase_messaging_platform_interface:
dependency: transitive
description:
name: firebase_messaging_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.9"
version: "3.5.0"
firebase_messaging_web:
dependency: transitive
description:
name: firebase_messaging_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.4.0"
fk_user_agent:
dependency: "direct main"
description:
name: fk_user_agent
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.1.0"
flutter:
dependency: "direct main"
description: flutter
@ -355,7 +378,7 @@ packages:
name: flutter_blurhash
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.0"
version: "0.7.0"
flutter_cache_manager:
dependency: "direct main"
description:
@ -376,7 +399,7 @@ packages:
name: flutter_easyloading
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.3"
flutter_email_sender:
dependency: "direct main"
description:
@ -397,14 +420,14 @@ packages:
name: flutter_inappwebview
url: "https://pub.dartlang.org"
source: hosted
version: "5.3.2"
version: "5.4.3+7"
flutter_keyboard_visibility:
dependency: transitive
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.3"
version: "5.2.0"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
@ -432,14 +455,21 @@ packages:
name: flutter_local_notifications
url: "https://pub.dartlang.org"
source: hosted
version: "8.2.0"
version: "9.5.3+1"
flutter_local_notifications_linux:
dependency: transitive
description:
name: flutter_local_notifications_linux
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.2"
flutter_local_notifications_platform_interface:
dependency: transitive
description:
name: flutter_local_notifications_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
version: "5.0.0"
flutter_localizations:
dependency: "direct main"
description: flutter
@ -465,14 +495,14 @@ packages:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.6"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.0"
version: "4.2.1"
flutter_sodium:
dependency: "direct main"
description:
@ -486,7 +516,7 @@ packages:
name: flutter_spinkit
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0"
version: "5.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -498,7 +528,7 @@ packages:
name: flutter_typeahead
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.1"
version: "4.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@ -510,7 +540,7 @@ packages:
name: flutter_widget_from_html_core
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.2"
version: "0.8.5+3"
flutter_windowmanager:
dependency: "direct main"
description:
@ -524,21 +554,28 @@ packages:
name: fluttercontactpicker
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "4.7.0"
fluttertoast:
dependency: "direct main"
description:
name: fluttertoast
url: "https://pub.dartlang.org"
source: hosted
version: "8.0.7"
version: "8.0.9"
fwfh_text_style:
dependency: transitive
description:
name: fwfh_text_style
url: "https://pub.dartlang.org"
source: hosted
version: "2.7.3+2"
google_nav_bar:
dependency: "direct main"
description:
name: google_nav_bar
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.5"
version: "5.0.6"
hex:
dependency: transitive
description:
@ -559,7 +596,7 @@ packages:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.3"
version: "0.13.4"
http_client_helper:
dependency: transitive
description:
@ -580,21 +617,21 @@ packages:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.1.3"
image_editor:
dependency: "direct main"
description:
name: image_editor
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
implicitly_animated_reorderable_list:
dependency: "direct main"
description:
name: implicitly_animated_reorderable_list
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
version: "0.4.2"
in_app_purchase:
dependency: "direct main"
description:
@ -615,21 +652,21 @@ packages:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.3"
version: "0.6.4"
json_annotation:
dependency: transitive
description:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.0"
version: "4.5.0"
like_button:
dependency: "direct main"
description:
name: like_button
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.4"
lints:
dependency: "direct dev"
description:
@ -650,14 +687,21 @@ packages:
name: local_auth
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.6"
version: "1.1.11"
logging:
dependency: "direct main"
description:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
lottie:
dependency: "direct main"
description:
name: lottie
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
matcher:
dependency: transitive
description:
@ -665,6 +709,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.11"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.4"
meta:
dependency: transitive
description:
@ -678,7 +729,7 @@ packages:
name: mime
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.2"
motionphoto:
dependency: "direct main"
description:
@ -708,7 +759,7 @@ packages:
name: octo_image
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0+1"
version: "1.0.2"
open_file:
dependency: "direct main"
description:
@ -722,21 +773,21 @@ packages:
name: package_info_plus
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.4.2"
package_info_plus_linux:
dependency: transitive
description:
name: package_info_plus_linux
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
version: "1.0.5"
package_info_plus_macos:
dependency: transitive
description:
name: package_info_plus_macos
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.3.0"
package_info_plus_platform_interface:
dependency: transitive
description:
@ -750,63 +801,77 @@ packages:
name: package_info_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "1.0.5"
package_info_plus_windows:
dependency: transitive
description:
name: package_info_plus_windows
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "1.0.5"
page_transition:
dependency: "direct main"
description:
name: page_transition
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.5"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
version: "1.8.1"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.10"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.14"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.6"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.6"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.0.4"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.0.6"
pedantic:
dependency: "direct main"
description:
@ -820,7 +885,7 @@ packages:
name: permission_handler
url: "https://pub.dartlang.org"
source: hosted
version: "8.2.2"
version: "8.3.0"
permission_handler_platform_interface:
dependency: transitive
description:
@ -834,16 +899,14 @@ packages:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "4.3.0"
version: "5.0.0"
photo_manager:
dependency: "direct main"
description:
path: "."
ref: HEAD
resolved-ref: "474fe1df8504307f98a8390032693203f2f47997"
url: "https://github.com/ente-io/flutter_photo_manager.git"
source: git
version: "1.3.6"
name: photo_manager
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
photo_view:
dependency: "direct main"
description:
@ -856,10 +919,10 @@ packages:
description:
path: "."
ref: HEAD
resolved-ref: b4711f50a9e6143f44274184e5a088274fb0e5ce
resolved-ref: "0c21c6098c201dca2e017f0d117f281adb0920c0"
url: "https://github.com/apgapg/pie_chart.git"
source: git
version: "5.0.0"
version: "5.3.0"
pinput:
dependency: "direct main"
description:
@ -873,42 +936,42 @@ packages:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.1.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.2"
pointycastle:
dependency: transitive
description:
name: pointycastle
url: "https://pub.dartlang.org"
source: hosted
version: "3.4.0"
version: "3.6.0"
process:
dependency: transitive
description:
name: process
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.1"
version: "4.2.4"
provider:
dependency: "direct main"
description:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.1"
version: "6.0.2"
quiver:
dependency: "direct main"
description:
name: quiver
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.1.0"
receive_sharing_intent:
dependency: "direct main"
description:
@ -922,14 +985,14 @@ packages:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.27.2"
version: "0.27.3"
scrollable_positioned_list:
dependency: "direct main"
description:
name: scrollable_positioned_list
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.2"
version: "0.2.3"
sensors:
dependency: transitive
description:
@ -943,14 +1006,14 @@ packages:
name: sentry
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
version: "6.5.1"
sentry_flutter:
dependency: transitive
description:
name: sentry_flutter
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
version: "6.5.1"
share:
dependency: transitive
description:
@ -1006,21 +1069,35 @@ packages:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
version: "2.0.15"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.12"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.1"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.4"
shared_preferences_platform_interface:
dependency: transitive
description:
@ -1034,14 +1111,14 @@ packages:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.4"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.1.1"
sky_engine:
dependency: transitive
description: flutter
@ -1053,7 +1130,7 @@ packages:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
version: "1.8.2"
sprintf:
dependency: transitive
description:
@ -1067,14 +1144,14 @@ packages:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0+3"
version: "2.0.2+1"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0+2"
version: "2.2.1+1"
sqflite_migration:
dependency: "direct main"
description:
@ -1089,6 +1166,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
step_progress_indicator:
dependency: "direct main"
description:
name: step_progress_indicator
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
stream_channel:
dependency: transitive
description:
@ -1116,21 +1200,21 @@ packages:
name: syncfusion_flutter_core
url: "https://pub.dartlang.org"
source: hosted
version: "19.2.49"
version: "19.4.56"
syncfusion_flutter_sliders:
dependency: "direct main"
description:
name: syncfusion_flutter_sliders
url: "https://pub.dartlang.org"
source: hosted
version: "19.2.49"
version: "19.4.56"
synchronized:
dependency: transitive
description:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.0+2"
term_glyph:
dependency: transitive
description:
@ -1144,7 +1228,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.3"
version: "0.4.9"
timezone:
dependency: transitive
description:
@ -1165,7 +1249,7 @@ packages:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.3.1"
uni_links:
dependency: "direct main"
description:
@ -1200,56 +1284,70 @@ packages:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.4"
version: "6.1.2"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.17"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.16"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "3.0.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "3.0.1"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.5"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.11"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "3.0.1"
uuid:
dependency: "direct main"
description:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.4"
version: "3.0.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.2"
video_player:
dependency: "direct main"
description:
@ -1277,7 +1375,7 @@ packages:
name: video_thumbnail
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.3"
version: "0.4.6"
visibility_detector:
dependency: "direct main"
description:
@ -1333,28 +1431,28 @@ packages:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.6.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
version: "0.2.0+1"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "5.3.0"
version: "5.4.1"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "3.1.1"
sdks:
dart: ">=2.14.0 <3.0.0"
flutter: ">=2.8.0"
dart: ">=2.17.0 <3.0.0"
flutter: ">=3.0.0"

View file

@ -11,13 +11,14 @@ 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.5.21+301
version: 0.5.24+304
environment:
sdk: ">=2.10.0 <3.0.0"
dependencies:
alice: ^0.2.4
alice:
git: "https://github.com/jhomlala/alice.git"
animate_do: ^2.0.0
archive: ^3.1.2
background_fetch: ^1.0.1
@ -36,7 +37,7 @@ dependencies:
event_bus: ^2.0.0
exif: ^3.0.0
expansion_tile_card: ^2.0.0
extended_image: ^6.0.1
extended_image: ^6.2.1
fast_base58: ^0.2.1
firebase_core: ^1.10.0
firebase_messaging: ^11.1.0
@ -50,14 +51,14 @@ dependencies:
flutter_email_sender: 5.0.2
flutter_image_compress: ^1.1.0
flutter_inappwebview: ^5.3.2
flutter_local_notifications: ^5.0.0+4
flutter_local_notifications: ^9.5.3+1
flutter_password_strength: ^0.1.6
flutter_secure_storage: ^4.2.0
flutter_sodium: ^0.2.0
flutter_typeahead: ^3.2.0
flutter_typeahead: ^4.0.0
fk_user_agent: ^2.0.1
flutter_windowmanager: ^0.2.0
fluttercontactpicker: ^4.4.0
fluttercontactpicker: ^4.7.0
fluttertoast: ^8.0.6
google_nav_bar: ^5.0.5
image: ^3.0.2
@ -69,6 +70,7 @@ dependencies:
loading_animations: ^2.1.0
local_auth: ^1.1.5
logging: ^1.0.1
lottie: ^1.2.2
motionphoto:
git: "https://github.com/ente-io/motionphoto.git"
move_to_background: ^1.0.2
@ -77,8 +79,7 @@ dependencies:
page_transition: ^2.0.2
path_provider: ^2.0.1
pedantic: ^1.9.2
photo_manager:
git: "https://github.com/ente-io/flutter_photo_manager.git"
photo_manager: ^2.0.8
photo_view: ^0.13.0
pie_chart:
git: "https://github.com/apgapg/pie_chart.git"
@ -87,11 +88,12 @@ dependencies:
quiver: ^3.0.1
receive_sharing_intent: ^1.4.5
scrollable_positioned_list: ^0.2.2
sentry: ^5.0.0
sentry: ^6.5.1
share_plus: ^4.0.4
shared_preferences: ^2.0.5
sqflite: ^2.0.0+3
sqflite_migration: ^0.3.0
step_progress_indicator: ^1.0.2
super_logging:
path: thirdparty/super_logging
syncfusion_flutter_core: ^19.2.49
@ -108,7 +110,6 @@ dependencies:
dependency_overrides:
provider: ^6.0.1 # for chewie 1.2.2 https://github.com/brianegan/chewie/issues/530
flutter_local_notifications: ^8.1.1
dev_dependencies:
flutter_launcher_icons: "0.9.0"

View file

@ -17,7 +17,7 @@ dependencies:
intl: ^0.17.0
path: ^1.6.4
path_provider: ^2.0.1
sentry_flutter: ^5.1.0
sentry_flutter: ^6.5.1
dev_dependencies:
flutter_test: