Merge branch 'redesign' into details-screen-remove-dark/light-theme
This commit is contained in:
commit
067fa19137
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
@ -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
|
||||
|
|
|
@ -26,12 +26,15 @@ This repository contains the code for our mobile apps, built with a lot of ❤
|
|||
|
||||
### Android
|
||||
|
||||
This repository's GitHub releases contains APKs, built straight from source. The latest build is available @ [ente.io/apk](https://ente.io/apk). These builds keep themselves updated, without relying on third party stores.
|
||||
This [repository's GitHub releases](https://github.com/ente-io/frame/releases) contains APKs, built straight from source. The latest build is available @ [ente.io/apk](https://ente.io/apk). These builds keep themselves updated, without relying on third party stores.
|
||||
|
||||
You can alternatively install the build from PlayStore.
|
||||
You can alternatively install the build from PlayStore or F-Droid.
|
||||
|
||||
<a href="https://play.google.com/store/apps/details?id=io.ente.photos">
|
||||
<img width="197" alt="Download on Google Play" src="https://user-images.githubusercontent.com/1161789/154795146-e7590d31-7636-4eee-b404-e2dc05fa25b7.png">
|
||||
<img width="197" alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png">
|
||||
</a>
|
||||
<a href="https://f-droid.org/packages/io.ente.photos.fdroid/">
|
||||
<img width="197" alt="Get it on F-Droid" src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png">
|
||||
</a>
|
||||
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
compileSdkVersion 32
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '9.0'
|
||||
platform :ios, '12.0'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
|
|
181
ios/Podfile.lock
181
ios/Podfile.lock
|
@ -1,49 +1,52 @@
|
|||
PODS:
|
||||
- background_fetch (1.0.1):
|
||||
- background_fetch (1.1.0):
|
||||
- Flutter
|
||||
- better_player (0.0.1):
|
||||
- Cache (~> 6.0.0)
|
||||
- Flutter
|
||||
- KTVHTTPCache (~> 2.0.0)
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- GCDWebServer
|
||||
- HLSCachingReverseProxyServer
|
||||
- PINCache
|
||||
- Cache (6.0.0)
|
||||
- connectivity (0.0.1):
|
||||
- Flutter
|
||||
- Reachability
|
||||
- device_info (0.0.1):
|
||||
- Flutter
|
||||
- Firebase/CoreOnly (8.9.0):
|
||||
- FirebaseCore (= 8.9.0)
|
||||
- Firebase/Messaging (8.9.0):
|
||||
- Firebase/CoreOnly (8.15.0):
|
||||
- FirebaseCore (= 8.15.0)
|
||||
- Firebase/Messaging (8.15.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseMessaging (~> 8.9.0)
|
||||
- firebase_core (1.10.0):
|
||||
- Firebase/CoreOnly (= 8.9.0)
|
||||
- FirebaseMessaging (~> 8.15.0)
|
||||
- firebase_core (1.17.1):
|
||||
- Firebase/CoreOnly (= 8.15.0)
|
||||
- Flutter
|
||||
- firebase_messaging (11.1.0):
|
||||
- Firebase/Messaging (= 8.9.0)
|
||||
- firebase_messaging (11.4.1):
|
||||
- Firebase/Messaging (= 8.15.0)
|
||||
- firebase_core
|
||||
- Flutter
|
||||
- FirebaseCore (8.9.0):
|
||||
- FirebaseCore (8.15.0):
|
||||
- FirebaseCoreDiagnostics (~> 8.0)
|
||||
- GoogleUtilities/Environment (~> 7.6)
|
||||
- GoogleUtilities/Logger (~> 7.6)
|
||||
- FirebaseCoreDiagnostics (8.12.0):
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- GoogleUtilities/Logger (~> 7.7)
|
||||
- FirebaseCoreDiagnostics (8.15.0):
|
||||
- GoogleDataTransport (~> 9.1)
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- GoogleUtilities/Logger (~> 7.7)
|
||||
- nanopb (~> 2.30908.0)
|
||||
- FirebaseInstallations (8.12.0):
|
||||
- FirebaseInstallations (8.15.0):
|
||||
- FirebaseCore (~> 8.0)
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- GoogleUtilities/UserDefaults (~> 7.7)
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- FirebaseMessaging (8.9.0):
|
||||
- FirebaseMessaging (8.15.0):
|
||||
- FirebaseCore (~> 8.0)
|
||||
- FirebaseInstallations (~> 8.0)
|
||||
- GoogleDataTransport (~> 9.1)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.6)
|
||||
- GoogleUtilities/Environment (~> 7.6)
|
||||
- GoogleUtilities/Reachability (~> 7.6)
|
||||
- GoogleUtilities/UserDefaults (~> 7.6)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.7)
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- GoogleUtilities/Reachability (~> 7.7)
|
||||
- GoogleUtilities/UserDefaults (~> 7.7)
|
||||
- nanopb (~> 2.30908.0)
|
||||
- fk_user_agent (2.0.0):
|
||||
- Flutter
|
||||
|
@ -70,7 +73,7 @@ PODS:
|
|||
- Flutter
|
||||
- flutter_sodium (0.0.1):
|
||||
- Flutter
|
||||
- fluttercontactpicker (4.4.0):
|
||||
- fluttercontactpicker (4.6.0):
|
||||
- Flutter
|
||||
- fluttertoast (0.0.2):
|
||||
- Flutter
|
||||
|
@ -78,9 +81,12 @@ PODS:
|
|||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- GoogleDataTransport (9.1.2):
|
||||
- GoogleUtilities/Environment (~> 7.2)
|
||||
- nanopb (~> 2.30908.0)
|
||||
- GCDWebServer (3.5.4):
|
||||
- GCDWebServer/Core (= 3.5.4)
|
||||
- GCDWebServer/Core (3.5.4)
|
||||
- GoogleDataTransport (9.1.4):
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.7.0):
|
||||
- GoogleUtilities/Environment
|
||||
|
@ -99,14 +105,13 @@ PODS:
|
|||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (7.7.0):
|
||||
- GoogleUtilities/Logger
|
||||
- HLSCachingReverseProxyServer (0.1.0):
|
||||
- GCDWebServer (~> 3.5)
|
||||
- PINCache (>= 3.0.1-beta.3)
|
||||
- image_editor (0.0.1):
|
||||
- Flutter
|
||||
- in_app_purchase (0.0.1):
|
||||
- Flutter
|
||||
- KTVCocoaHTTPServer (1.0.0):
|
||||
- CocoaAsyncSocket
|
||||
- KTVHTTPCache (2.0.1):
|
||||
- KTVCocoaHTTPServer
|
||||
- libwebp (1.2.1):
|
||||
- libwebp/demux (= 1.2.1)
|
||||
- libwebp/mux (= 1.2.1)
|
||||
|
@ -118,9 +123,9 @@ PODS:
|
|||
- libwebp/webp (1.2.1)
|
||||
- local_auth (0.0.1):
|
||||
- Flutter
|
||||
- Mantle (2.1.6):
|
||||
- Mantle/extobjc (= 2.1.6)
|
||||
- Mantle/extobjc (2.1.6)
|
||||
- Mantle (2.2.0):
|
||||
- Mantle/extobjc (= 2.2.0)
|
||||
- Mantle/extobjc (2.2.0)
|
||||
- motionphoto (0.0.1):
|
||||
- Flutter
|
||||
- move_to_background (0.0.1):
|
||||
|
@ -135,37 +140,45 @@ PODS:
|
|||
- OrderedSet (5.0.0)
|
||||
- package_info_plus (0.4.5):
|
||||
- Flutter
|
||||
- path_provider (0.0.1):
|
||||
- path_provider_ios (0.0.1):
|
||||
- Flutter
|
||||
- "permission_handler (5.1.0+2)":
|
||||
- Flutter
|
||||
- photo_manager (1.0.0):
|
||||
- photo_manager (2.0.0):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- PromisesObjC (2.0.0)
|
||||
- PINCache (3.0.3):
|
||||
- PINCache/Arc-exception-safe (= 3.0.3)
|
||||
- PINCache/Core (= 3.0.3)
|
||||
- PINCache/Arc-exception-safe (3.0.3):
|
||||
- PINCache/Core
|
||||
- PINCache/Core (3.0.3):
|
||||
- PINOperation (~> 1.2.1)
|
||||
- PINOperation (1.2.1)
|
||||
- PromisesObjC (2.1.0)
|
||||
- Reachability (3.2)
|
||||
- receive_sharing_intent (0.0.1):
|
||||
- Flutter
|
||||
- SDWebImage (5.12.1):
|
||||
- SDWebImage/Core (= 5.12.1)
|
||||
- SDWebImage/Core (5.12.1)
|
||||
- SDWebImage (5.12.5):
|
||||
- SDWebImage/Core (= 5.12.5)
|
||||
- SDWebImage/Core (5.12.5)
|
||||
- SDWebImageWebPCoder (0.8.4):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.10)
|
||||
- sensors (0.0.1):
|
||||
- Flutter
|
||||
- Sentry (7.1.4):
|
||||
- Sentry/Core (= 7.1.4)
|
||||
- Sentry/Core (7.1.4)
|
||||
- Sentry (7.11.0):
|
||||
- Sentry/Core (= 7.11.0)
|
||||
- Sentry/Core (7.11.0)
|
||||
- sentry_flutter (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- Sentry (~> 7.1.3)
|
||||
- Sentry (~> 7.11.0)
|
||||
- share (0.0.1):
|
||||
- Flutter
|
||||
- share_plus (0.0.1):
|
||||
- Flutter
|
||||
- shared_preferences (0.0.1):
|
||||
- shared_preferences_ios (0.0.1):
|
||||
- Flutter
|
||||
- sqflite (0.0.2):
|
||||
- Flutter
|
||||
|
@ -173,7 +186,7 @@ PODS:
|
|||
- Toast (4.0.0)
|
||||
- uni_links (0.0.1):
|
||||
- Flutter
|
||||
- url_launcher (0.0.1):
|
||||
- url_launcher_ios (0.0.1):
|
||||
- Flutter
|
||||
- video_player (0.0.1):
|
||||
- Flutter
|
||||
|
@ -208,7 +221,7 @@ DEPENDENCIES:
|
|||
- move_to_background (from `.symlinks/plugins/move_to_background/ios`)
|
||||
- open_file (from `.symlinks/plugins/open_file/ios`)
|
||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
|
||||
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
|
||||
- photo_manager (from `.symlinks/plugins/photo_manager/ios`)
|
||||
- receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`)
|
||||
|
@ -216,31 +229,33 @@ DEPENDENCIES:
|
|||
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
|
||||
- share (from `.symlinks/plugins/share/ios`)
|
||||
- share_plus (from `.symlinks/plugins/share_plus/ios`)
|
||||
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
|
||||
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||
- uni_links (from `.symlinks/plugins/uni_links/ios`)
|
||||
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
|
||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||
- video_player (from `.symlinks/plugins/video_player/ios`)
|
||||
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
|
||||
- wakelock (from `.symlinks/plugins/wakelock/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- CocoaAsyncSocket
|
||||
- Cache
|
||||
- Firebase
|
||||
- FirebaseCore
|
||||
- FirebaseCoreDiagnostics
|
||||
- FirebaseInstallations
|
||||
- FirebaseMessaging
|
||||
- FMDB
|
||||
- GCDWebServer
|
||||
- GoogleDataTransport
|
||||
- GoogleUtilities
|
||||
- KTVCocoaHTTPServer
|
||||
- KTVHTTPCache
|
||||
- HLSCachingReverseProxyServer
|
||||
- libwebp
|
||||
- Mantle
|
||||
- nanopb
|
||||
- OrderedSet
|
||||
- PINCache
|
||||
- PINOperation
|
||||
- PromisesObjC
|
||||
- Reachability
|
||||
- SDWebImage
|
||||
|
@ -297,8 +312,8 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/open_file/ios"
|
||||
package_info_plus:
|
||||
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||
path_provider:
|
||||
:path: ".symlinks/plugins/path_provider/ios"
|
||||
path_provider_ios:
|
||||
:path: ".symlinks/plugins/path_provider_ios/ios"
|
||||
permission_handler:
|
||||
:path: ".symlinks/plugins/permission_handler/ios"
|
||||
photo_manager:
|
||||
|
@ -313,14 +328,14 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/share/ios"
|
||||
share_plus:
|
||||
:path: ".symlinks/plugins/share_plus/ios"
|
||||
shared_preferences:
|
||||
:path: ".symlinks/plugins/shared_preferences/ios"
|
||||
shared_preferences_ios:
|
||||
:path: ".symlinks/plugins/shared_preferences_ios/ios"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/ios"
|
||||
uni_links:
|
||||
:path: ".symlinks/plugins/uni_links/ios"
|
||||
url_launcher:
|
||||
:path: ".symlinks/plugins/url_launcher/ios"
|
||||
url_launcher_ios:
|
||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||
video_player:
|
||||
:path: ".symlinks/plugins/video_player/ios"
|
||||
video_thumbnail:
|
||||
|
@ -329,18 +344,18 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/wakelock/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
background_fetch: 2edffc19a5a465c47f073efa35db57f7910738fa
|
||||
better_player: a4383402f457e53720525888c0fc5d337ef6ba11
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
background_fetch: 3795af8a49054dc526477cc2f60d2ed41de60587
|
||||
better_player: 2406bfe8175203c7a46fa15f9d778d73b12e1646
|
||||
Cache: 4ca7e00363fca5455f26534e5607634c820ffc2d
|
||||
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
|
||||
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
|
||||
Firebase: 13d8d96499e2635428d5bf0ec675df21f95d9a95
|
||||
firebase_core: f770e033e790657b3505f04be4cb24c482912f11
|
||||
firebase_messaging: 0c8d1a1732487db7f332fb65232053e93201e2fb
|
||||
FirebaseCore: 599ee609343eaf4941bd188f85e3aa077ffe325b
|
||||
FirebaseCoreDiagnostics: 3b40dfadef5b90433a60ae01f01e90fe87aa76aa
|
||||
FirebaseInstallations: 25764cf322e77f99449395870a65b2bef88e1545
|
||||
FirebaseMessaging: 82c4a48638f53f7b184f3cc9f6cd2cbe533ab316
|
||||
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
|
||||
firebase_core: 318de541b0e61d3f24262982a3f0b54afe72439b
|
||||
firebase_messaging: 943cfe65e0b3f457240489ce67655e40da1d270c
|
||||
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
|
||||
FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb
|
||||
FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd
|
||||
FirebaseMessaging: 5e5118a2383b3531e730d974680954c679ca0a13
|
||||
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
|
||||
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
|
||||
flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b
|
||||
|
@ -350,46 +365,48 @@ SPEC CHECKSUMS:
|
|||
flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
|
||||
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
|
||||
flutter_sodium: c84426b4de738514b5b66cfdeb8a06634e72fe0b
|
||||
fluttercontactpicker: 36cf7811f583f3c5aec3c53efcbf366b9cdfdf51
|
||||
fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58
|
||||
fluttercontactpicker: d582836dea6b5d489f3d259f35d7817ae82ee5e6
|
||||
fluttertoast: 16fbe6039d06a763f3533670197d01fc73459037
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940
|
||||
GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
|
||||
GoogleDataTransport: 5fffe35792f8b96ec8d6775f5eccd83c998d5a3b
|
||||
GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1
|
||||
HLSCachingReverseProxyServer: 59935e1e0244ad7f3375d75b5ef46e8eb26ab181
|
||||
image_editor: c1d038630eedea60d2dee9c14f36aa66c7f9cfab
|
||||
in_app_purchase: 3e2155afa9d03d4fa32d9e62d567885080ce97d6
|
||||
KTVCocoaHTTPServer: df8d7b861e603ff8037e9b2138aca2563a6b768d
|
||||
KTVHTTPCache: 588c3eb16f6bd1e6fde1e230dabfb7bd4e490a4d
|
||||
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc
|
||||
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
|
||||
Mantle: 4c0ed6ce47c96eccc4dc3bb071deb3def0e2c3be
|
||||
local_auth: 1740f55d7af0a2e2a8684ce225fe79d8931e808c
|
||||
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||
motionphoto: d4a432b8c8f22fb3ad966258597c0103c9c5ff16
|
||||
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
|
||||
nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
|
||||
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
|
||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
||||
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
|
||||
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
|
||||
photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463
|
||||
PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
|
||||
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
|
||||
PINCache: 7a8fc1a691173d21dbddbf86cd515de6efa55086
|
||||
PINOperation: 00c935935f1e8cf0d1e2d6b542e75b88fc3e5e20
|
||||
PromisesObjC: 99b6f43f9e1044bd87a95a60beff28c2c44ddb72
|
||||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
|
||||
SDWebImage: 4dc3e42d9ec0c1028b960a33ac6b637bb432207b
|
||||
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e
|
||||
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815
|
||||
sensors: 84eb7a30e47a649e4172b71d6e81be614c280336
|
||||
Sentry: 1d3eb1a25f8c5333c88dd5603904a6d461cd9fcf
|
||||
sentry_flutter: f20d4f199442900fbdab2b8496f1d2091d8b94d9
|
||||
Sentry: 0c5cd63d714187b4a39c331c1f0eb04ba7868341
|
||||
sentry_flutter: efb3df2c203cd03aad255892a8d628a458656d14
|
||||
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
||||
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
|
||||
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
|
||||
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
|
||||
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
||||
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
|
||||
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
|
||||
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
|
||||
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
|
||||
video_player: ecd305f42e9044793efd34846e1ce64c31ea6fcb
|
||||
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
|
||||
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
|
||||
|
||||
PODFILE CHECKSUM: 58fb802948678e2071d210cfc8aab09d85c8341b
|
||||
PODFILE CHECKSUM: 44d44a69efc5f474c5f17ed621cb4a9375ab0d86
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
|
|
@ -256,18 +256,20 @@
|
|||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/CocoaAsyncSocket/CocoaAsyncSocket.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/Cache/Cache.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/GCDWebServer/GCDWebServer.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/KTVCocoaHTTPServer/KTVCocoaHTTPServer.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/KTVHTTPCache/KTVHTTPCache.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/HLSCachingReverseProxyServer/HLSCachingReverseProxyServer.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/Mantle/Mantle.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/OrderedSet/OrderedSet.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/PINCache/PINCache.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/PINOperation/PINOperation.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
|
||||
|
@ -297,35 +299,37 @@
|
|||
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/open_file/open_file.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/path_provider_ios/path_provider_ios.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/photo_manager/photo_manager.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/receive_sharing_intent/receive_sharing_intent.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/sensors/sensors.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/sentry_flutter/sentry_flutter.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/share/share.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/share_plus/share_plus.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/shared_preferences_ios/shared_preferences_ios.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/uni_links/uni_links.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/video_player/video_player.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/video_thumbnail/video_thumbnail.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/wakelock/wakelock.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaAsyncSocket.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cache.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreDiagnostics.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GCDWebServer.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KTVCocoaHTTPServer.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KTVHTTPCache.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HLSCachingReverseProxyServer.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mantle.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OrderedSet.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PINCache.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PINOperation.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
|
||||
|
@ -355,17 +359,17 @@
|
|||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/open_file.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/photo_manager.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/receive_sharing_intent.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sensors.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share_plus.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/uni_links.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_player.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_thumbnail.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wakelock.framework",
|
||||
|
|
|
@ -77,5 +77,7 @@
|
|||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -96,7 +96,7 @@ final darkThemeData = ThemeData(
|
|||
hintColor: Colors.grey,
|
||||
bottomAppBarColor: Color.fromRGBO(196, 196, 196, 0.5),
|
||||
|
||||
colorScheme: ColorScheme.dark(secondary: Color.fromARGB(255, 92, 92, 92)),
|
||||
colorScheme: ColorScheme.dark(primary: Colors.white, secondary: Color.fromARGB(255, 92, 92, 92)),
|
||||
accentColor: Color.fromRGBO(255, 255, 255, 0.6),
|
||||
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
|
||||
buttonTheme: ButtonThemeData().copyWith(
|
||||
|
|
7
lib/core/cache/thumbnail_cache.dart
vendored
7
lib/core/cache/thumbnail_cache.dart
vendored
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -863,10 +863,10 @@ class FilesDB {
|
|||
return count;
|
||||
}
|
||||
|
||||
Future<int> fileCountWithVisibility(int visibility) async {
|
||||
Future<int> fileCountWithVisibility(int visibility, int ownerID) async {
|
||||
final db = await instance.database;
|
||||
var count = Sqflite.firstIntValue(await db.rawQuery(
|
||||
'SELECT COUNT(*) FROM $table where $columnMMdVisibility = $visibility'));
|
||||
'SELECT COUNT(*) FROM $table where $columnMMdVisibility = $visibility AND $columnOwnerID = $ownerID'));
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -776,10 +776,7 @@ class CollectionsService {
|
|||
name = utf8.decode(result);
|
||||
} catch (e, s) {
|
||||
_logger.severe(
|
||||
"Error while decrypting collection name: " +
|
||||
collection.id.toString(),
|
||||
e,
|
||||
s);
|
||||
"failed to decrypt collection name: ${collection.id}", e, s);
|
||||
name = "Unknown Album";
|
||||
}
|
||||
return collection.copyWith(name: name);
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -34,7 +34,7 @@ class NotificationService {
|
|||
AndroidNotificationDetails(
|
||||
'io.ente.photos',
|
||||
'ente',
|
||||
'ente alerts',
|
||||
channelDescription: 'ente alerts',
|
||||
importance: Importance.max,
|
||||
priority: Priority.high,
|
||||
showWhen: false,
|
||||
|
|
|
@ -465,5 +465,16 @@ class RemoteSyncService {
|
|||
return -1;
|
||||
}
|
||||
});
|
||||
// move updated files towards the end
|
||||
file.sort((first, second) {
|
||||
if (first.updationTime == second.updationTime) {
|
||||
return 0;
|
||||
}
|
||||
if (first.updationTime == -1) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:open_file/open_file.dart';
|
||||
import 'package:photos/core/configuration.dart';
|
||||
|
@ -38,7 +37,7 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
|
|||
),
|
||||
),
|
||||
Padding(padding: EdgeInsets.all(8)),
|
||||
Text("changelog",
|
||||
Text("Changelog",
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
)),
|
||||
|
@ -53,7 +52,7 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
|
|||
height: 64,
|
||||
padding: const EdgeInsets.fromLTRB(50, 0, 50, 0),
|
||||
child: button(
|
||||
"update",
|
||||
"Update",
|
||||
fontSize: 16,
|
||||
onPressed: () async {
|
||||
Navigator.pop(context);
|
||||
|
@ -75,8 +74,8 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
|
|||
onWillPop: () async => !shouldForceUpdate,
|
||||
child: AlertDialog(
|
||||
title: Text(shouldForceUpdate
|
||||
? "critical update available"
|
||||
: "update available"),
|
||||
? "Critical update available"
|
||||
: "Update available"),
|
||||
content: content,
|
||||
),
|
||||
);
|
||||
|
|
|
@ -29,7 +29,7 @@ class BillingQuestionsWidget extends StatelessWidget {
|
|||
faqs.add(Padding(
|
||||
padding: const EdgeInsets.all(24),
|
||||
child: Text(
|
||||
"faqs",
|
||||
"FAQs",
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
|
|
@ -16,7 +16,7 @@ class _ChangeEmailDialogState extends State<ChangeEmailDialog> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text("enter your email address"),
|
||||
title: Text("Enter your email address"),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
|
@ -46,7 +46,7 @@ class _ChangeEmailDialogState extends State<ChangeEmailDialog> {
|
|||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
"cancel",
|
||||
"Cancel",
|
||||
style: TextStyle(
|
||||
color: Colors.redAccent,
|
||||
),
|
||||
|
@ -57,15 +57,15 @@ class _ChangeEmailDialogState extends State<ChangeEmailDialog> {
|
|||
),
|
||||
TextButton(
|
||||
child: Text(
|
||||
"verify",
|
||||
"Verify",
|
||||
style: TextStyle(
|
||||
color: Colors.green,
|
||||
),
|
||||
),
|
||||
onPressed: () {
|
||||
if (!isValidEmail(_email)) {
|
||||
showErrorDialog(context, "invalid email address",
|
||||
"please enter a valid email address.");
|
||||
showErrorDialog(context, "Invalid email address",
|
||||
"Please enter a valid email address.");
|
||||
return;
|
||||
}
|
||||
UserService.instance.getOtt(context, _email, isChangeEmail: true);
|
||||
|
|
|
@ -335,7 +335,8 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
|
|||
FutureBuilder<int>(
|
||||
future: FilesDB.instance
|
||||
.fileCountWithVisibility(
|
||||
kVisibilityArchive),
|
||||
kVisibilityArchive,
|
||||
Configuration.instance.getUserID()),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData && snapshot.data > 0) {
|
||||
return RichText(
|
||||
|
|
|
@ -10,7 +10,7 @@ PopupMenuButton<dynamic> reportBugPopupMenu(BuildContext context) {
|
|||
value: 1,
|
||||
child: Row(
|
||||
children: const [
|
||||
Text("contact support"),
|
||||
Text("Contact support"),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -19,7 +19,7 @@ PopupMenuButton<dynamic> reportBugPopupMenu(BuildContext context) {
|
|||
},
|
||||
onSelected: (value) async {
|
||||
if (value == 1) {
|
||||
await sendLogs(context, "contact support", "support@ente.io",
|
||||
await sendLogs(context, "Contact support", "support@ente.io",
|
||||
postShare: () {});
|
||||
}
|
||||
},
|
||||
|
|
|
@ -6,7 +6,7 @@ Widget nothingToSeeHere({Color textColor}) {
|
|||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(
|
||||
"nothing to see here! 👀",
|
||||
"Nothing to see here! 👀",
|
||||
style: TextStyle(
|
||||
fontFamily: "Inter",
|
||||
color: textColor.withOpacity(0.35),
|
||||
|
|
|
@ -24,13 +24,13 @@ String _actionName(CollectionActionType type, bool plural) {
|
|||
String text = "";
|
||||
switch (type) {
|
||||
case CollectionActionType.addFiles:
|
||||
text = "add file";
|
||||
text = "Add file";
|
||||
break;
|
||||
case CollectionActionType.moveFiles:
|
||||
text = "move file";
|
||||
text = "Move file";
|
||||
break;
|
||||
case CollectionActionType.restoreFiles:
|
||||
text = "restore file";
|
||||
text = "Restore file";
|
||||
break;
|
||||
}
|
||||
return text + titleSuffix;
|
||||
|
@ -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,
|
||||
|
@ -280,7 +287,7 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
|
|||
return true;
|
||||
} on AssertionError catch (e, s) {
|
||||
await dialog.hide();
|
||||
showErrorDialog(context, "oops", e.message);
|
||||
showErrorDialog(context, "Oops", e.message);
|
||||
return false;
|
||||
} catch (e, s) {
|
||||
_logger.severe("Could not move to album", e, s);
|
||||
|
@ -291,7 +298,7 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
|
|||
}
|
||||
|
||||
Future<bool> _restoreFilesToCollection(int toCollectionID) async {
|
||||
final dialog = createProgressDialog(context, "restoring files...");
|
||||
final dialog = createProgressDialog(context, "Restoring files...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await CollectionsService.instance
|
||||
|
@ -302,7 +309,7 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
|
|||
return true;
|
||||
} on AssertionError catch (e, s) {
|
||||
await dialog.hide();
|
||||
showErrorDialog(context, "oops", e.message);
|
||||
showErrorDialog(context, "Oops", e.message);
|
||||
return false;
|
||||
} catch (e, s) {
|
||||
_logger.severe("Could not move to album", e, s);
|
||||
|
|
|
@ -270,10 +270,10 @@ class _DetailPageState extends State<DetailPage> {
|
|||
_logger.severe("Attempt to edit unowned file", UnauthorizedEditError(),
|
||||
StackTrace.current);
|
||||
showErrorDialog(context, "Sorry",
|
||||
"we don't support editing photos and albums that you don't own yet");
|
||||
"We don't support editing photos and albums that you don't own yet");
|
||||
return;
|
||||
}
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
final imageProvider =
|
||||
ExtendedFileImageProvider(await getFile(file), cacheRawData: true);
|
||||
|
|
|
@ -557,7 +557,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return WebPage("terms", "https://ente.io/terms");
|
||||
return WebPage("Terms", "https://ente.io/terms");
|
||||
},
|
||||
),
|
||||
);
|
||||
|
@ -575,7 +575,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return WebPage(
|
||||
"privacy", "https://ente.io/privacy");
|
||||
"Privacy", "https://ente.io/privacy");
|
||||
},
|
||||
),
|
||||
);
|
||||
|
@ -709,7 +709,7 @@ class PricingWidget extends StatelessWidget {
|
|||
if (snapshot.hasData) {
|
||||
return _buildPlans(context, snapshot.data);
|
||||
} else if (snapshot.hasError) {
|
||||
return Text("Oops, something went wrong.");
|
||||
return Text("Oops, Something went wrong.");
|
||||
}
|
||||
return loadWidget;
|
||||
},
|
||||
|
|
|
@ -62,7 +62,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
List<Widget> children = [];
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: "info",
|
||||
message: "Info",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
@ -85,7 +85,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
widget.file.fileType == FileType.livePhoto) {
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: "edit",
|
||||
message: "Edit",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
@ -107,7 +107,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
widget.file.magicMetadata.visibility == kVisibilityArchive;
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: isArchived ? "unarchive" : "archive",
|
||||
message: isArchived ? "Unhide" : "Hide",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
@ -132,7 +132,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
}
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: "share",
|
||||
message: "Share",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
@ -181,7 +181,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
void _addTrashOptions(List<Widget> children) {
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: "restore",
|
||||
message: "Restore",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
@ -206,7 +206,7 @@ class FadingBottomBarState extends State<FadingBottomBar> {
|
|||
|
||||
children.add(
|
||||
Tooltip(
|
||||
message: "delete",
|
||||
message: "Delete",
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 12),
|
||||
child: IconButton(
|
||||
|
|
|
@ -189,7 +189,7 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
|
|||
|
||||
Future<void> _showShareCollectionDialog() async {
|
||||
var collection = widget.collection;
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
if (collection == null) {
|
||||
|
|
|
@ -351,7 +351,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
|||
widget.type == GalleryType.archive) {
|
||||
bool showArchive = widget.type == GalleryType.homepage;
|
||||
actions.add(Tooltip(
|
||||
message: showArchive ? "archive" : "unarchive",
|
||||
message: showArchive ? "Hide" : "Unhide",
|
||||
child: IconButton(
|
||||
color: Colors.black, //same for both themes
|
||||
icon: Icon(
|
||||
|
@ -369,7 +369,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
|||
|
||||
void _addTrashAction(List<Widget> actions) {
|
||||
actions.add(Tooltip(
|
||||
message: "restore",
|
||||
message: "Restore",
|
||||
child: IconButton(
|
||||
color: Colors.black, //same for both themes
|
||||
icon: Icon(
|
||||
|
|
|
@ -124,19 +124,19 @@ class _HomeWidgetState extends State<HomeWidget> {
|
|||
_triggerLogoutEvent =
|
||||
Bus.instance.on<TriggerLogoutEvent>().listen((event) async {
|
||||
AlertDialog alert = AlertDialog(
|
||||
title: Text("session expired"),
|
||||
content: Text("please login again"),
|
||||
title: Text("Session expired"),
|
||||
content: Text("Please login again"),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
"ok",
|
||||
"Ok",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).buttonColor,
|
||||
),
|
||||
),
|
||||
onPressed: () async {
|
||||
Navigator.of(context, rootNavigator: true).pop('dialog');
|
||||
final dialog = createProgressDialog(context, "logging out...");
|
||||
final dialog = createProgressDialog(context, "Logging out...");
|
||||
await dialog.show();
|
||||
await Configuration.instance.logout();
|
||||
await dialog.hide();
|
||||
|
|
|
@ -377,7 +377,7 @@ class _ImageEditorPageState extends State<ImageEditorPage> {
|
|||
),
|
||||
);
|
||||
} catch (e, s) {
|
||||
showToast("oops, could not save edits");
|
||||
showToast("Oops, could not save edits");
|
||||
_logger.severe(e, s);
|
||||
}
|
||||
await dialog.hide();
|
||||
|
|
|
@ -413,12 +413,12 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|||
|
||||
Future<void> _updateUrlSettings(
|
||||
BuildContext context, Map<String, dynamic> prop) async {
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await CollectionsService.instance.updateShareUrl(widget.collection, prop);
|
||||
await dialog.hide();
|
||||
showToast("album updated");
|
||||
showToast("Album updated");
|
||||
} catch (e) {
|
||||
await dialog.hide();
|
||||
await showGenericErrorDialog(context);
|
||||
|
|
|
@ -186,7 +186,7 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
|||
UserService.instance.getOtt(context, widget.email,
|
||||
isCreateAccountScreen: widget.isCreateAccountScreen);
|
||||
},
|
||||
child: Text("resend email",
|
||||
child: Text("Resend email",
|
||||
style: Theme.of(context).textTheme.subtitle1.copyWith(
|
||||
fontSize: 14,
|
||||
decoration: TextDecoration
|
||||
|
|
|
@ -661,7 +661,7 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
|
|||
Configuration.instance.setVolatilePassword(null);
|
||||
await dialog.hide();
|
||||
onDone() async {
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await UserService.instance.setAttributes(result);
|
||||
|
|
|
@ -60,7 +60,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||
isFormValid: _passwordController.text.isNotEmpty,
|
||||
buttonText: 'Log in',
|
||||
onPressedFunction: () async {
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await Configuration.instance.decryptAndSaveSecrets(
|
||||
|
@ -173,7 +173,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||
behavior: HitTestBehavior.opaque,
|
||||
onTap: () async {
|
||||
final dialog =
|
||||
createProgressDialog(context, "please wait...");
|
||||
createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
await Configuration.instance.logout();
|
||||
await dialog.hide();
|
||||
|
@ -182,7 +182,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||
},
|
||||
child: Container(
|
||||
child: Center(
|
||||
child: Text("change email",
|
||||
child: Text("Change email",
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.subtitle1
|
||||
|
@ -208,7 +208,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||
// onPressed: _passwordController.text.isNotEmpty
|
||||
// ? () async {
|
||||
// final dialog =
|
||||
// createProgressDialog(context, "please wait...");
|
||||
// createProgressDialog(context, "Please wait...");
|
||||
// await dialog.show();
|
||||
// try {
|
||||
// await Configuration.instance.decryptAndSaveSecrets(
|
||||
|
|
|
@ -125,17 +125,17 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
|||
Future<void> _leaveFamilyPlan(BuildContext context) async {
|
||||
final choice = await showChoiceDialog(
|
||||
context,
|
||||
'leave family',
|
||||
'are you sure that you want to leave the family plan?',
|
||||
firstAction: 'no',
|
||||
secondAction: 'yes',
|
||||
'Leave family',
|
||||
'Are you sure that you want to leave the family plan?',
|
||||
firstAction: 'No',
|
||||
secondAction: 'Yes',
|
||||
firstActionColor: Theme.of(context).buttonColor,
|
||||
secondActionColor: Colors.white,
|
||||
);
|
||||
if (choice != DialogUserChoice.secondChoice) {
|
||||
return;
|
||||
}
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await UserService.instance.leaveFamilyPlan();
|
||||
|
|
|
@ -47,7 +47,7 @@ class _PaymentWebPageState extends State<PaymentWebPage> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_dialog = createProgressDialog(context, "please wait...");
|
||||
_dialog = createProgressDialog(context, "Please wait...");
|
||||
if (initPaymentUrl == null) {
|
||||
return loadWidget;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ class _PaymentWebPageState extends State<PaymentWebPage> {
|
|||
onWillPop: () async => _buildPageExitWidget(context),
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('subscription'),
|
||||
title: const Text('Subscription'),
|
||||
),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
|
|
|
@ -121,7 +121,7 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
|
|||
Widget _getBody() {
|
||||
if (!_isLoading) {
|
||||
_isLoading = true;
|
||||
_dialog = createProgressDialog(context, "please wait...");
|
||||
_dialog = createProgressDialog(context, "Please wait...");
|
||||
_fetchSub();
|
||||
}
|
||||
if (_hasLoadedData) {
|
||||
|
|
|
@ -129,7 +129,7 @@ class _SubscriptionPageState extends State<SubscriptionPage> {
|
|||
_isLoading = true;
|
||||
_fetchSubData();
|
||||
}
|
||||
_dialog = createProgressDialog(context, "please wait...");
|
||||
_dialog = createProgressDialog(context, "Please wait...");
|
||||
final appBar = AppBar(
|
||||
title: Text("Subscription"),
|
||||
);
|
||||
|
|
|
@ -108,7 +108,7 @@ class _SessionsPageState extends State<SessionsPage> {
|
|||
}
|
||||
|
||||
Future<void> _terminateSession(Session session) async {
|
||||
final dialog = createProgressDialog(context, "please wait...");
|
||||
final dialog = createProgressDialog(context, "Please wait...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await UserService.instance.terminateSession(session.token);
|
||||
|
@ -118,7 +118,7 @@ class _SessionsPageState extends State<SessionsPage> {
|
|||
await dialog.hide();
|
||||
_logger.severe('failed to terminate', e, s);
|
||||
showErrorDialog(
|
||||
context, 'oops', "something went wrong, please try again");
|
||||
context, 'Oops', "Something went wrong, please try again");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ class _SetWallpaperDialogState extends State<SetWallpaperDialog> {
|
|||
} catch (e, s) {
|
||||
await dialog.hide();
|
||||
Logger("SetWallpaperDialog").severe(e, s);
|
||||
showToast("something went wrong");
|
||||
showToast("Something went wrong");
|
||||
return;
|
||||
}
|
||||
},
|
||||
|
|
|
@ -50,7 +50,7 @@ class _AppVersionWidgetState extends State<AppVersionWidget> {
|
|||
return Padding(
|
||||
padding: const EdgeInsets.all(20),
|
||||
child: Text(
|
||||
"app version: " + snapshot.data,
|
||||
"Version: " + snapshot.data,
|
||||
style: Theme.of(context).textTheme.caption,
|
||||
),
|
||||
);
|
||||
|
|
|
@ -61,6 +61,7 @@ class _DetailsSectionWidgetState extends State<DetailsSectionWidget> {
|
|||
color: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fill,
|
||||
image: AssetImage("assets/card_background.png"),
|
||||
),
|
||||
),
|
||||
|
@ -168,11 +169,10 @@ class _DetailsSectionWidgetState extends State<DetailsSectionWidget> {
|
|||
)
|
||||
: Text(
|
||||
"${convertBytesToReadableFormat(_userDetails.getFamilyOrPersonalUsage())} used",
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.headline5
|
||||
.copyWith(color: Colors.white.withOpacity(0.7), fontSize: 14),
|
||||
),
|
||||
style: Theme.of(context).textTheme.headline5.copyWith(
|
||||
color: Colors.white.withOpacity(0.7),
|
||||
fontSize: 14),
|
||||
),
|
||||
Text(
|
||||
"${_userDetails.fileCount.toString()} Memories",
|
||||
style: Theme.of(context)
|
||||
|
|
|
@ -26,7 +26,7 @@ class SecuritySectionWidget extends StatefulWidget {
|
|||
|
||||
class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
||||
static const kAuthToViewSessions =
|
||||
"please authenticate to view your active sessions";
|
||||
"Please authenticate to view your active sessions";
|
||||
|
||||
final _config = Configuration.instance;
|
||||
|
||||
|
@ -70,7 +70,10 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
|||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text("Two-factor", style: Theme.of(context).textTheme.subtitle1,),
|
||||
Text(
|
||||
"Two-factor",
|
||||
style: Theme.of(context).textTheme.subtitle1,
|
||||
),
|
||||
FutureBuilder(
|
||||
future: UserService.instance.fetchTwoFactorStatus(),
|
||||
builder: (_, snapshot) {
|
||||
|
@ -117,7 +120,10 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
|||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text("Lockscreen", style: Theme.of(context).textTheme.subtitle1,),
|
||||
Text(
|
||||
"Lockscreen",
|
||||
style: Theme.of(context).textTheme.subtitle1,
|
||||
),
|
||||
Switch.adaptive(
|
||||
value: _config.shouldShowLockScreen(),
|
||||
onChanged: (value) async {
|
||||
|
@ -147,7 +153,8 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
|||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text("Hide from recents", style: Theme.of(context).textTheme.subtitle1),
|
||||
Text("Hide from recents",
|
||||
style: Theme.of(context).textTheme.subtitle1),
|
||||
Switch.adaptive(
|
||||
value: _config.shouldHideFromRecents(),
|
||||
onChanged: (value) async {
|
||||
|
|
|
@ -71,10 +71,15 @@ class SettingsPage extends StatelessWidget {
|
|||
DangerSectionWidget(),
|
||||
]);
|
||||
}
|
||||
contents.add(AppVersionWidget());
|
||||
|
||||
if (kDebugMode && hasLoggedIn) {
|
||||
contents.add(DebugSectionWidget());
|
||||
contents.addAll([sectionDivider, DebugSectionWidget()]);
|
||||
}
|
||||
contents.add(AppVersionWidget());
|
||||
contents.add(Padding(
|
||||
padding: EdgeInsets.only(bottom: 60),
|
||||
));
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 20),
|
||||
|
|
|
@ -58,9 +58,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(() {
|
||||
|
@ -314,19 +315,19 @@ class _SharingDialogState extends State<SharingDialog> {
|
|||
String publicKey,
|
||||
}) async {
|
||||
if (!isValidEmail(email)) {
|
||||
showErrorDialog(context, "invalid email address",
|
||||
"please enter a valid email address.");
|
||||
showErrorDialog(context, "Invalid email address",
|
||||
"Please enter a valid email address.");
|
||||
return;
|
||||
} else if (email == Configuration.instance.getEmail()) {
|
||||
showErrorDialog(context, "oops", "you cannot share with yourself");
|
||||
showErrorDialog(context, "Oops", "You cannot share with yourself");
|
||||
return;
|
||||
} else if (widget.collection.sharees.any((user) => user.email == email)) {
|
||||
showErrorDialog(
|
||||
context, "oops", "you're already sharing this with " + email);
|
||||
context, "Oops", "You're already sharing this with " + email);
|
||||
return;
|
||||
}
|
||||
if (publicKey == null) {
|
||||
final dialog = createProgressDialog(context, "searching for user...");
|
||||
final dialog = createProgressDialog(context, "Searching for user...");
|
||||
await dialog.show();
|
||||
|
||||
publicKey = await UserService.instance.getPublicKey(email);
|
||||
|
@ -335,9 +336,9 @@ class _SharingDialogState extends State<SharingDialog> {
|
|||
if (publicKey == null) {
|
||||
Navigator.of(context, rootNavigator: true).pop('dialog');
|
||||
final dialog = AlertDialog(
|
||||
title: Text("invite to ente?"),
|
||||
title: Text("Invite to ente?"),
|
||||
content: Text(
|
||||
"looks like " +
|
||||
"Looks like " +
|
||||
email +
|
||||
" hasn't signed up for ente yet. would you like to invite them?",
|
||||
style: TextStyle(
|
||||
|
@ -347,7 +348,7 @@ class _SharingDialogState extends State<SharingDialog> {
|
|||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
"invite",
|
||||
"Invite",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).buttonColor,
|
||||
),
|
||||
|
@ -366,7 +367,7 @@ class _SharingDialogState extends State<SharingDialog> {
|
|||
},
|
||||
);
|
||||
} else {
|
||||
final dialog = createProgressDialog(context, "sharing...");
|
||||
final dialog = createProgressDialog(context, "Sharing...");
|
||||
await dialog.show();
|
||||
final collection = widget.collection;
|
||||
try {
|
||||
|
@ -380,7 +381,7 @@ class _SharingDialogState extends State<SharingDialog> {
|
|||
await CollectionsService.instance
|
||||
.share(widget.collection.id, email, publicKey);
|
||||
await dialog.hide();
|
||||
showToast("shared successfully!");
|
||||
showShortToast("Shared successfully!");
|
||||
setState(() {
|
||||
_sharees.add(User(email: email));
|
||||
_showEntryField = false;
|
||||
|
|
|
@ -3,7 +3,6 @@ import 'dart:ui';
|
|||
|
||||
import 'package:confetti/confetti.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:photos/ui/loading_widget.dart';
|
||||
import 'package:photos/ui/progress_dialog.dart';
|
||||
|
||||
|
@ -36,7 +35,7 @@ Future<dynamic> showErrorDialog(
|
|||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
"OK",
|
||||
"Ok",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurface,
|
||||
),
|
||||
|
@ -61,7 +60,7 @@ Future<dynamic> showErrorDialog(
|
|||
}
|
||||
|
||||
Future<dynamic> showGenericErrorDialog(BuildContext context) {
|
||||
return showErrorDialog(context, "something went wrong", "please try again.");
|
||||
return showErrorDialog(context, "Something went wrong", "Please try again.");
|
||||
}
|
||||
|
||||
Future<T> showConfettiDialog<T>({
|
||||
|
@ -92,7 +91,8 @@ Future<T> showConfettiDialog<T>({
|
|||
confettiController: _confettiController,
|
||||
blastDirection: pi / 2,
|
||||
emissionFrequency: 0,
|
||||
numberOfParticles: 100, // a lot of particles at once
|
||||
numberOfParticles: 100,
|
||||
// a lot of particles at once
|
||||
gravity: 1,
|
||||
blastDirectionality: BlastDirectionality.explosive,
|
||||
),
|
||||
|
@ -107,128 +107,3 @@ Future<T> showConfettiDialog<T>({
|
|||
routeSettings: routeSettings,
|
||||
);
|
||||
}
|
||||
|
||||
Widget test() {
|
||||
return Container(
|
||||
width: 355,
|
||||
height: 236,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 355,
|
||||
height: 236,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
color: Color(0x4c000000),
|
||||
),
|
||||
padding: const EdgeInsets.only(
|
||||
top: 20,
|
||||
bottom: 16,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 234,
|
||||
child: Text(
|
||||
"Are you sure you want to logout?",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 24,
|
||||
fontFamily: "SF Pro Display",
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 16),
|
||||
Container(
|
||||
width: 323,
|
||||
height: 48,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 323,
|
||||
height: 48,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
color: Color(0x4c000000),
|
||||
),
|
||||
padding: const EdgeInsets.only(
|
||||
left: 135,
|
||||
right: 136,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"Cancel",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16,
|
||||
fontFamily: "SF Pro Text",
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 16),
|
||||
Container(
|
||||
width: 323,
|
||||
height: 48,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 323,
|
||||
height: 48,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
color: Colors.white,
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 120,
|
||||
vertical: 12,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"Yes Logout",
|
||||
style: TextStyle(
|
||||
color: Colors.black,
|
||||
fontSize: 16,
|
||||
fontFamily: "SF Pro Text",
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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"];
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -18,13 +18,13 @@ final _logger = Logger('MagicUtil');
|
|||
Future<void> changeVisibility(
|
||||
BuildContext context, List<File> files, int newVisibility) async {
|
||||
final dialog = createProgressDialog(context,
|
||||
newVisibility == kVisibilityArchive ? "archiving..." : "unarchiving...");
|
||||
newVisibility == kVisibilityArchive ? "Hiding..." : "Unhiding...");
|
||||
await dialog.show();
|
||||
try {
|
||||
await FileMagicService.instance.changeVisibility(files, newVisibility);
|
||||
showShortToast(newVisibility == kVisibilityArchive
|
||||
? "successfully archived"
|
||||
: "successfully unarchived");
|
||||
? "Successfully hidden"
|
||||
: "Successfully unhidden");
|
||||
|
||||
await dialog.hide();
|
||||
} catch (e, s) {
|
||||
|
@ -37,7 +37,7 @@ Future<void> changeVisibility(
|
|||
Future<void> changeCollectionVisibility(
|
||||
BuildContext context, Collection collection, int newVisibility) async {
|
||||
final dialog = createProgressDialog(context,
|
||||
newVisibility == kVisibilityArchive ? "archiving..." : "unarchiving...");
|
||||
newVisibility == kVisibilityArchive ? "Hiding..." : "Unhiding...");
|
||||
await dialog.show();
|
||||
try {
|
||||
Map<String, dynamic> update = {kMagicKeyVisibility: newVisibility};
|
||||
|
@ -45,8 +45,8 @@ Future<void> changeCollectionVisibility(
|
|||
// Force reload home gallery to pull in the now unarchived files
|
||||
Bus.instance.fire(ForceReloadHomeGalleryEvent());
|
||||
showShortToast(newVisibility == kVisibilityArchive
|
||||
? "successfully archived"
|
||||
: "successfully unarchived");
|
||||
? "Successfully hidden"
|
||||
: "Successfully unhidden");
|
||||
|
||||
await dialog.hide();
|
||||
} catch (e, s) {
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
|
|
324
pubspec.lock
324
pubspec.lock
|
@ -7,28 +7,30 @@ packages:
|
|||
name: adaptive_theme
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.3.1"
|
||||
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:
|
||||
|
@ -49,14 +51,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:
|
||||
|
@ -77,7 +79,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:
|
||||
|
@ -105,7 +121,7 @@ packages:
|
|||
name: chopper
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.0.1"
|
||||
version: "4.0.5"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -119,7 +135,7 @@ packages:
|
|||
name: collection
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
version: "1.16.0"
|
||||
computer:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -147,14 +163,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:
|
||||
|
@ -168,14 +184,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:
|
||||
|
@ -189,28 +205,35 @@ packages:
|
|||
name: crypto
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
csslib:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: csslib
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.17.1"
|
||||
version: "0.17.2"
|
||||
cupertino_icons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
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:
|
||||
|
@ -224,14 +247,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"
|
||||
dotted_border:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -259,7 +282,7 @@ packages:
|
|||
name: exif
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.1.1"
|
||||
expandable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -280,21 +303,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:
|
||||
|
@ -308,63 +331,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.1"
|
||||
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.1"
|
||||
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.1"
|
||||
firebase_messaging_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.4.1"
|
||||
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
|
||||
|
@ -376,7 +399,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:
|
||||
|
@ -397,7 +420,7 @@ packages:
|
|||
name: flutter_easyloading
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.5"
|
||||
flutter_email_sender:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -418,14 +441,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:
|
||||
|
@ -453,14 +476,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
|
||||
|
@ -486,14 +516,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:
|
||||
|
@ -507,7 +537,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
|
||||
|
@ -519,7 +549,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
|
||||
|
@ -531,7 +561,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:
|
||||
|
@ -545,21 +575,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:
|
||||
|
@ -580,7 +617,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:
|
||||
|
@ -594,28 +631,28 @@ packages:
|
|||
name: http_parser
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
version: "4.0.1"
|
||||
image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
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:
|
||||
|
@ -636,21 +673,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:
|
||||
|
@ -671,21 +708,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.2.2"
|
||||
version: "1.3.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -693,6 +730,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:
|
||||
|
@ -706,7 +750,7 @@ packages:
|
|||
name: mime
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.2"
|
||||
motionphoto:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -736,7 +780,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:
|
||||
|
@ -750,21 +794,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:
|
||||
|
@ -778,28 +822,28 @@ 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_drawing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -820,35 +864,49 @@ packages:
|
|||
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:
|
||||
|
@ -862,7 +920,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:
|
||||
|
@ -876,16 +934,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:
|
||||
|
@ -906,42 +962,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.3"
|
||||
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:
|
||||
|
@ -955,14 +1011,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:
|
||||
|
@ -976,14 +1032,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:
|
||||
|
@ -1039,21 +1095,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:
|
||||
|
@ -1067,14 +1137,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
|
||||
|
@ -1086,7 +1156,7 @@ packages:
|
|||
name: source_span
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
version: "1.8.2"
|
||||
sprintf:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1100,14 +1170,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:
|
||||
|
@ -1156,21 +1226,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:
|
||||
|
@ -1184,7 +1254,7 @@ packages:
|
|||
name: test_api
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.3"
|
||||
version: "0.4.9"
|
||||
timezone:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1205,7 +1275,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:
|
||||
|
@ -1240,56 +1310,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.17"
|
||||
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:
|
||||
|
@ -1317,7 +1401,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:
|
||||
|
@ -1373,28 +1457,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"
|
||||
|
|
19
pubspec.yaml
19
pubspec.yaml
|
@ -11,14 +11,15 @@ 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.25+305
|
||||
|
||||
environment:
|
||||
sdk: ">=2.10.0 <3.0.0"
|
||||
|
||||
dependencies:
|
||||
alice: ^0.2.4
|
||||
adaptive_theme: ^2.3.0
|
||||
alice:
|
||||
git: "https://github.com/jhomlala/alice.git"
|
||||
animate_do: ^2.0.0
|
||||
archive: ^3.1.2
|
||||
background_fetch: ^1.0.1
|
||||
|
@ -39,7 +40,7 @@ dependencies:
|
|||
exif: ^3.0.0
|
||||
expandable: ^5.0.1
|
||||
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
|
||||
|
@ -53,14 +54,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
|
||||
|
@ -81,15 +82,14 @@ 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
|
||||
pinput: ^1.2.2
|
||||
provider: ^6.0.0
|
||||
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
|
||||
|
@ -111,7 +111,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"
|
||||
|
|
2
thirdparty/super_logging/pubspec.yaml
vendored
2
thirdparty/super_logging/pubspec.yaml
vendored
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue