Merge branch 'main' into text_input_dialog

This commit is contained in:
ashilkn 2023-02-08 12:31:39 +05:30
commit ee834ac244
3 changed files with 27 additions and 8 deletions

View file

@ -1,21 +1,24 @@
Ente is a simple app to automatically backup and organize your photos and videos.
ente is a simple app to backup and share your photos and videos.
If you've been looking for a privacy-friendly alternative to preserve your memories, you've come to the right place. With Ente, they are stored end-to-end encrypted (e2ee). This means that only you can view them.
If you've been looking for a privacy-friendly alternative to Google Photos, you've come to the right place. With ente, they are stored end-to-end encrypted (e2ee). This means that only you can view them.
We have apps across Android, iOS, web and Desktop, and your photos will seamlessly sync between all your devices in an end-to-end encrypted (e2ee) manner.
We have open-source apps across Android, iOS, web and desktop, and your photos will seamlessly sync between all of them in an end-to-end encrypted (e2ee) manner.
Ente also makes it simple to share your albums with your loved ones. You can either share them directly with other Ente users, end-to-end encrypted; or with publicly viewable links.
ente also makes it simple to share your albums with your loved ones, even if they aren't on ente. You can share publicly viewable links, where they can view your album and collaborate by adding photos to it, even without an account or app.
Your encrypted data is stored across multiple locations, including a fall-out shelter in Paris. We take posterity seriously and make it easy to ensure that your memories outlive you.
Your encrypted data is replicated to 3 different locations, including a fall-out shelter in Paris. We take posterity seriously and make it easy to ensure that your memories outlive you.
We are here to make the safest photos app ever, come join our journey!
FEATURES
- Original quality backups, because every pixel is important
- Family plans, so you can share storage with your family
- Collaborative albums, so you can pool together photos after a trip
- Shared folders, in case you want your partner to enjoy your "Camera" clicks
- Album links, that can be protected with a password and set to expire
- Album links, that can be protected with a password
- Ability to free up space, by removing files that have been safely backed up
- Human support, because you're worth it
- Descriptions, so you can caption your memories and find them easily
- Image editor, to add finishing touches
- Favorite, hide and relive your memories, for they are precious
- One-click import from Google, Apple, your hard drive and more
@ -24,7 +27,7 @@ FEATURES
- and a LOT more!
PERMISSIONS
Ente requests for certain permissions to serve the purpose of a photo storage provider, which can be reviewed here: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente requests for certain permissions to serve the purpose of a photo storage provider, which can be reviewed here: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
PRICING
We don't offer forever free plans, because it is important to us that we remain sustainable and withstand the test of time. Instead we offer affordable plans that you can freely share with your family. You can find more information at ente.io.

View file

@ -129,6 +129,12 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
super.didChangeDependencies();
}
@override
void didUpdateWidget(covariant MenuItemWidget oldWidget) {
menuItemColor = widget.menuItemColor;
super.didUpdateWidget(oldWidget);
}
@override
void dispose() {
if (widget.expandableController != null) {
@ -210,6 +216,8 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
}
Future<void> _onTap() async {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
_debouncer.run(
() => Future(
() {
@ -245,6 +253,8 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
}
void _onTapDown(details) {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
setState(() {
if (widget.pressedColor == null) {
hasPassedGestureCallbacks()
@ -261,6 +271,8 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
}
void _onTapUp(details) {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
Future.delayed(
const Duration(milliseconds: 100),
() => setState(() {
@ -270,6 +282,8 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
}
void _onCancel() {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
setState(() {
menuItemColor = widget.menuItemColor;
});

View file

@ -603,7 +603,9 @@ class FileUploader {
// case c and d
final File? fileExistsButDifferentCollection =
existingUploadedFiles.firstWhereOrNull(
(e) => e.collectionID != toCollectionID,
(e) =>
e.collectionID != toCollectionID &&
(e.localID == null || e.localID == fileToUpload.localID),
);
if (fileExistsButDifferentCollection != null) {
_logger.fine(