@@ -458,6 +458,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "0.0.1"
|
||||
ente_sharing:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../../packages/sharing"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -511,6 +518,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
fast_base58:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fast_base58
|
||||
sha256: "611f65633b734f27a850b51371b3eba993a5165650e12e8e7b02959f3768ba06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
ffi:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_sharing
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../../packages/accounts
|
||||
@@ -14,6 +14,8 @@ dependency_overrides:
|
||||
path: ../../packages/logging
|
||||
ente_network:
|
||||
path: ../../packages/network
|
||||
ente_sharing:
|
||||
path: ../../packages/sharing
|
||||
ente_strings:
|
||||
path: ../../packages/strings
|
||||
ente_ui:
|
||||
|
||||
@@ -3,7 +3,7 @@ import "package:ente_sharing/models/user.dart";
|
||||
extension UserExtension on User {
|
||||
//Some initial users have name in name field.
|
||||
String? get displayName =>
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
// ignore: deprecated_member_use_from_same_package, deprecated_member_use
|
||||
((name?.isEmpty ?? true) ? null : name);
|
||||
|
||||
String get nameOrEmail {
|
||||
|
||||
@@ -504,5 +504,7 @@
|
||||
"filesAddedByYouWillBeRemovedFromTheCollection": "Files added by you will be removed from the collection",
|
||||
"leaveSharedCollection": "Leave shared collection?",
|
||||
"noSystemLockFound": "No system lock found",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "To enable app lock, please setup device passcode or screen lock in your system settings."
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "To enable app lock, please setup device passcode or screen lock in your system settings.",
|
||||
"legacy": "Legacy",
|
||||
"authToManageLegacy": "Please authenticate to manage your trusted contacts"
|
||||
}
|
||||
|
||||
@@ -1587,6 +1587,18 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'To enable app lock, please setup device passcode or screen lock in your system settings.'**
|
||||
String get toEnableAppLockPleaseSetupDevicePasscodeOrScreen;
|
||||
|
||||
/// No description provided for @legacy.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Legacy'**
|
||||
String get legacy;
|
||||
|
||||
/// No description provided for @authToManageLegacy.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Please authenticate to manage your trusted contacts'**
|
||||
String get authToManageLegacy;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -903,4 +903,11 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
@override
|
||||
String get toEnableAppLockPleaseSetupDevicePasscodeOrScreen =>
|
||||
'To enable app lock, please setup device passcode or screen lock in your system settings.';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get authToManageLegacy =>
|
||||
'Please authenticate to manage your trusted contacts';
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:io';
|
||||
import 'package:adaptive_theme/adaptive_theme.dart';
|
||||
import 'package:ente_accounts/services/user_service.dart';
|
||||
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
|
||||
import "package:ente_legacy/services/emergency_service.dart";
|
||||
import 'package:ente_lock_screen/lock_screen_settings.dart';
|
||||
import 'package:ente_lock_screen/ui/app_lock.dart';
|
||||
import 'package:ente_lock_screen/ui/lock_screen.dart';
|
||||
@@ -169,4 +170,8 @@ Future<void> _init(bool bool, {String? via}) async {
|
||||
packageInfo,
|
||||
);
|
||||
await TrashService.instance.init(preferences);
|
||||
await EmergencyContactService.instance.init(
|
||||
UserService.instance,
|
||||
Configuration.instance,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import "package:ente_accounts/pages/password_entry_page.dart";
|
||||
import "package:ente_accounts/pages/recovery_key_page.dart";
|
||||
import "package:ente_accounts/services/user_service.dart";
|
||||
import "package:ente_crypto_dart/ente_crypto_dart.dart";
|
||||
import "package:ente_legacy/pages/emergency_page.dart";
|
||||
import "package:ente_lock_screen/local_authentication_service.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
@@ -11,6 +12,7 @@ import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_ui/utils/dialog_util.dart";
|
||||
import "package:ente_utils/navigation_util.dart";
|
||||
import "package:ente_utils/platform_util.dart";
|
||||
import "package:flutter/foundation.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:locker/l10n/l10n.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
@@ -135,6 +137,35 @@ class AccountSectionWidget extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: context.l10n.legacy,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
showOnlyLoadingState: true,
|
||||
onTap: () async {
|
||||
final hasAuthenticated = kDebugMode ||
|
||||
await LocalAuthenticationService.instance
|
||||
.requestLocalAuthentication(
|
||||
context,
|
||||
"Authenticate to manage legacy contacts",
|
||||
);
|
||||
if (hasAuthenticated) {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return EmergencyPage(
|
||||
config: Configuration.instance,
|
||||
);
|
||||
},
|
||||
),
|
||||
).ignore();
|
||||
}
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: context.l10n.logout,
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'package:email_validator/email_validator.dart';
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_sharing/user_avator_widget.dart";
|
||||
import "package:ente_sharing/verify_identity_dialog.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
@@ -15,8 +17,7 @@ import "package:locker/extensions/user_extension.dart";
|
||||
import "package:locker/l10n/l10n.dart";
|
||||
import "package:locker/services/collections/collections_service.dart";
|
||||
import "package:locker/services/collections/models/collection.dart";
|
||||
import "package:locker/ui/sharing/user_avator_widget.dart";
|
||||
import "package:locker/ui/sharing/verify_identity_dialog.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:locker/utils/collection_actions.dart";
|
||||
|
||||
enum ActionTypesToShow {
|
||||
@@ -162,6 +163,7 @@ class _AddParticipantPage extends State<AddParticipantPage> {
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
currentUser,
|
||||
type: AvatarType.mini,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
menuItemColor:
|
||||
getEnteColorScheme(context).fillFaint,
|
||||
@@ -188,9 +190,10 @@ class _AddParticipantPage extends State<AddParticipantPage> {
|
||||
useRootNavigator: false,
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return VerifyIdentifyDialog(
|
||||
return VerifyIdentityDialog(
|
||||
self: false,
|
||||
email: currentUser.email,
|
||||
config: Configuration.instance,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_sharing/user_avator_widget.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/divider_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
@@ -14,7 +15,6 @@ import "package:locker/services/collections/models/collection.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:locker/ui/sharing/add_participant_page.dart";
|
||||
import "package:locker/ui/sharing/manage_album_participant.dart";
|
||||
import "package:locker/ui/sharing/user_avator_widget.dart";
|
||||
|
||||
class AlbumParticipantsPage extends StatefulWidget {
|
||||
final Collection collection;
|
||||
@@ -119,6 +119,7 @@ class _AlbumParticipantsPageState extends State<AlbumParticipantsPage> {
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
owner,
|
||||
currentUserID: currentUserID,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
leadingIconSize: 24,
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
@@ -165,6 +166,7 @@ class _AlbumParticipantsPageState extends State<AlbumParticipantsPage> {
|
||||
currentUser,
|
||||
type: AvatarType.mini,
|
||||
currentUserID: currentUserID,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: isOwner ? Icons.chevron_right : null,
|
||||
@@ -243,6 +245,7 @@ class _AlbumParticipantsPageState extends State<AlbumParticipantsPage> {
|
||||
currentUser,
|
||||
type: AvatarType.mini,
|
||||
currentUserID: currentUserID,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: isOwner ? Icons.chevron_right : null,
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import "dart:math";
|
||||
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_sharing/user_avator_widget.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:locker/ui/sharing/more_count_badge.dart";
|
||||
import "package:locker/ui/sharing/user_avator_widget.dart";
|
||||
|
||||
class AlbumSharesIcons extends StatelessWidget {
|
||||
final List<User> sharees;
|
||||
@@ -38,6 +39,7 @@ class AlbumSharesIcons extends StatelessWidget {
|
||||
sharees[index],
|
||||
thumbnailView: removeBorder,
|
||||
type: type,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_sharing/user_avator_widget.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/divider_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
@@ -13,13 +14,13 @@ import "package:flutter/services.dart";
|
||||
import "package:locker/extensions/user_extension.dart";
|
||||
import "package:locker/l10n/l10n.dart";
|
||||
import "package:locker/services/collections/collections_service.dart";
|
||||
import "package:locker/services/collections/models/collection.dart";
|
||||
import "package:locker/services/collections/models/collection.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:locker/ui/sharing/add_participant_page.dart";
|
||||
import "package:locker/ui/sharing/album_participants_page.dart";
|
||||
import "package:locker/ui/sharing/album_share_info_widget.dart";
|
||||
import "package:locker/ui/sharing/manage_album_participant.dart";
|
||||
import "package:locker/ui/sharing/manage_links_widget.dart";
|
||||
import "package:locker/ui/sharing/user_avator_widget.dart";
|
||||
import "package:locker/utils/collection_actions.dart";
|
||||
|
||||
class ShareCollectionPage extends StatefulWidget {
|
||||
@@ -341,6 +342,7 @@ class EmailItemWidget extends StatelessWidget {
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
collection.getSharees().first,
|
||||
thumbnailView: false,
|
||||
config: Configuration.instance,
|
||||
),
|
||||
leadingIconSize: 24,
|
||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:ente_ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_ui/components/buttons/models/button_type.dart';
|
||||
import "package:ente_ui/components/dialog_widget.dart";
|
||||
import "package:ente_ui/components/progress_dialog.dart";
|
||||
import "package:ente_ui/components/user_dialogs.dart";
|
||||
import 'package:ente_ui/utils/dialog_util.dart';
|
||||
import "package:ente_utils/email_util.dart";
|
||||
import "package:ente_utils/share_utils.dart";
|
||||
@@ -18,7 +19,6 @@ import "package:locker/services/collections/collections_api_client.dart";
|
||||
import 'package:locker/services/collections/collections_service.dart';
|
||||
import 'package:locker/services/collections/models/collection.dart';
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:locker/ui/components/user_dialogs.dart";
|
||||
import 'package:locker/utils/snack_bar_utils.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
|
||||
@@ -254,6 +254,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_legacy:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../../packages/legacy"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_lock_screen:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -562,6 +569,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
flutter_svg:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_svg
|
||||
sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -940,6 +955,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
path_parsing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_parsing
|
||||
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
path_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1441,6 +1464,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.1"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.19"
|
||||
vector_graphics_codec:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_codec
|
||||
sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.13"
|
||||
vector_graphics_compiler:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_compiler
|
||||
sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.19"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1531,4 +1578,4 @@ packages:
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.8.0 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
||||
@@ -25,6 +25,8 @@ dependencies:
|
||||
url: https://github.com/ente-io/ente_crypto_dart.git
|
||||
ente_events:
|
||||
path: ../../packages/events
|
||||
ente_legacy:
|
||||
path: ../../packages/legacy
|
||||
ente_lock_screen:
|
||||
path: ../../packages/lock_screen
|
||||
ente_logging:
|
||||
@@ -52,6 +54,7 @@ dependencies:
|
||||
ref: 1ac346a04592a05fd75acccf2e01fa3c7e955d96
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
flutter_svg: ^2.2.1
|
||||
intl: ^0.20.2
|
||||
io: ^1.0.5
|
||||
listen_sharing_intent: ^1.9.2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_sharing
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_sharing,ente_legacy
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../../packages/accounts
|
||||
@@ -8,6 +8,8 @@ dependency_overrides:
|
||||
path: ../../packages/configuration
|
||||
ente_events:
|
||||
path: ../../packages/events
|
||||
ente_legacy:
|
||||
path: ../../packages/legacy
|
||||
ente_lock_screen:
|
||||
path: ../../packages/lock_screen
|
||||
ente_logging:
|
||||
|
||||
@@ -244,6 +244,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_sharing:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../sharing"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -289,6 +296,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
fast_base58:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fast_base58
|
||||
sha256: "611f65633b734f27a850b51371b3eba993a5165650e12e8e7b02959f3768ba06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_sharing
|
||||
dependency_overrides:
|
||||
ente_base:
|
||||
path: ../base
|
||||
@@ -12,6 +12,8 @@ dependency_overrides:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
|
||||
1
mobile/packages/legacy/analysis_options.yaml
Normal file
1
mobile/packages/legacy/analysis_options.yaml
Normal file
@@ -0,0 +1 @@
|
||||
include: ../../analysis_options.yaml
|
||||
5
mobile/packages/legacy/lib/ente_legacy.dart
Normal file
5
mobile/packages/legacy/lib/ente_legacy.dart
Normal file
@@ -0,0 +1,5 @@
|
||||
export 'models/emergency_models.dart';
|
||||
export 'pages/emergency_page.dart';
|
||||
export 'pages/other_contact_page.dart';
|
||||
export 'pages/recover_others_account.dart';
|
||||
export 'services/emergency_service.dart';
|
||||
153
mobile/packages/legacy/lib/models/emergency_models.dart
Normal file
153
mobile/packages/legacy/lib/models/emergency_models.dart
Normal file
@@ -0,0 +1,153 @@
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
|
||||
enum ContactState {
|
||||
userInvitedContact,
|
||||
userRevokedContact,
|
||||
contactAccepted,
|
||||
contactLeft,
|
||||
contactDenied,
|
||||
unknown,
|
||||
}
|
||||
|
||||
extension ContactStateExtension on ContactState {
|
||||
String get stringValue {
|
||||
switch (this) {
|
||||
case ContactState.userInvitedContact:
|
||||
return "INVITED";
|
||||
case ContactState.userRevokedContact:
|
||||
return "REVOKED";
|
||||
case ContactState.contactAccepted:
|
||||
return "ACCEPTED";
|
||||
case ContactState.contactLeft:
|
||||
return "CONTACT_LEFT";
|
||||
case ContactState.contactDenied:
|
||||
return "CONTACT_DENIED";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
static ContactState fromString(String value) {
|
||||
switch (value) {
|
||||
case "INVITED":
|
||||
return ContactState.userInvitedContact;
|
||||
case "REVOKED":
|
||||
return ContactState.userRevokedContact;
|
||||
case "ACCEPTED":
|
||||
return ContactState.contactAccepted;
|
||||
case "CONTACT_LEFT":
|
||||
return ContactState.contactLeft;
|
||||
case "CONTACT_DENIED":
|
||||
return ContactState.contactDenied;
|
||||
default:
|
||||
return ContactState.unknown;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class EmergencyContact {
|
||||
final User user;
|
||||
final User emergencyContact;
|
||||
final ContactState state;
|
||||
final int recoveryNoticeInDays;
|
||||
|
||||
EmergencyContact(
|
||||
this.user,
|
||||
this.emergencyContact,
|
||||
this.state,
|
||||
this.recoveryNoticeInDays,
|
||||
);
|
||||
|
||||
// copyWith
|
||||
EmergencyContact copyWith({
|
||||
User? user,
|
||||
User? emergencyContact,
|
||||
ContactState? state,
|
||||
int? recoveryNoticeInDays,
|
||||
}) {
|
||||
return EmergencyContact(
|
||||
user ?? this.user,
|
||||
emergencyContact ?? this.emergencyContact,
|
||||
state ?? this.state,
|
||||
recoveryNoticeInDays ?? this.recoveryNoticeInDays,
|
||||
);
|
||||
}
|
||||
|
||||
// fromJson
|
||||
EmergencyContact.fromJson(Map<String, dynamic> json)
|
||||
: user = User.fromMap(json['user']),
|
||||
emergencyContact = User.fromMap(json['emergencyContact']),
|
||||
state = ContactStateExtension.fromString(json['state'] as String),
|
||||
recoveryNoticeInDays = json['recoveryNoticeInDays'];
|
||||
|
||||
bool isCurrentUserContact(int userID) {
|
||||
return user.id == userID;
|
||||
}
|
||||
|
||||
bool isPendingInvite() {
|
||||
return state == ContactState.userInvitedContact;
|
||||
}
|
||||
}
|
||||
|
||||
class EmergencyInfo {
|
||||
// List of emergency contacts added by the user
|
||||
final List<EmergencyContact> contacts;
|
||||
|
||||
// List of recovery sessions that are created to recover current user account
|
||||
final List<RecoverySessions> recoverSessions;
|
||||
|
||||
// List of emergency contacts that have added current user as their emergency contact
|
||||
final List<EmergencyContact> othersEmergencyContact;
|
||||
|
||||
// List of recovery sessions that are created to recover grantor's account
|
||||
final List<RecoverySessions> othersRecoverySession;
|
||||
|
||||
EmergencyInfo(
|
||||
this.contacts,
|
||||
this.recoverSessions,
|
||||
this.othersEmergencyContact,
|
||||
this.othersRecoverySession,
|
||||
);
|
||||
|
||||
// from json
|
||||
EmergencyInfo.fromJson(Map<String, dynamic> json)
|
||||
: contacts = (json['contacts'] as List)
|
||||
.map((contact) => EmergencyContact.fromJson(contact))
|
||||
.toList(),
|
||||
recoverSessions = (json['recoverSessions'] as List)
|
||||
.map((session) => RecoverySessions.fromJson(session))
|
||||
.toList(),
|
||||
othersEmergencyContact = (json['othersEmergencyContact'] as List)
|
||||
.map((grantor) => EmergencyContact.fromJson(grantor))
|
||||
.toList(),
|
||||
othersRecoverySession = (json['othersRecoverySession'] as List)
|
||||
.map((session) => RecoverySessions.fromJson(session))
|
||||
.toList();
|
||||
}
|
||||
|
||||
class RecoverySessions {
|
||||
final String id;
|
||||
final User user;
|
||||
final User emergencyContact;
|
||||
final String status;
|
||||
final int waitTill;
|
||||
final int createdAt;
|
||||
|
||||
RecoverySessions(
|
||||
this.id,
|
||||
this.user,
|
||||
this.emergencyContact,
|
||||
this.status,
|
||||
this.waitTill,
|
||||
this.createdAt,
|
||||
);
|
||||
|
||||
// fromJson
|
||||
RecoverySessions.fromJson(Map<String, dynamic> json)
|
||||
: id = json['id'],
|
||||
user = User.fromMap(json['user']),
|
||||
emergencyContact = User.fromMap(json['emergencyContact']),
|
||||
status = json['status'],
|
||||
waitTill = json['waitTill'],
|
||||
createdAt = json['createdAt'];
|
||||
}
|
||||
556
mobile/packages/legacy/lib/pages/emergency_page.dart
Normal file
556
mobile/packages/legacy/lib/pages/emergency_page.dart
Normal file
@@ -0,0 +1,556 @@
|
||||
import "dart:async";
|
||||
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_legacy/models/emergency_models.dart";
|
||||
import "package:ente_legacy/pages/other_contact_page.dart";
|
||||
import "package:ente_legacy/pages/select_contact_page.dart";
|
||||
import "package:ente_legacy/services/emergency_service.dart";
|
||||
import "package:ente_sharing/user_avator_widget.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/action_sheet_widget.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/divider_widget.dart";
|
||||
import "package:ente_ui/components/loading_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
import "package:ente_ui/components/menu_section_title.dart";
|
||||
import "package:ente_ui/components/notification_widget.dart";
|
||||
import "package:ente_ui/components/title_bar_title_widget.dart";
|
||||
import "package:ente_ui/components/title_bar_widget.dart";
|
||||
import "package:ente_ui/theme/colors.dart";
|
||||
import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_ui/utils/toast_util.dart";
|
||||
import "package:ente_utils/navigation_util.dart";
|
||||
import "package:flutter/foundation.dart";
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_svg/svg.dart";
|
||||
|
||||
class EmergencyPage extends StatefulWidget {
|
||||
final BaseConfiguration config;
|
||||
|
||||
const EmergencyPage({
|
||||
required this.config,
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
State<EmergencyPage> createState() => _EmergencyPageState();
|
||||
}
|
||||
|
||||
class _EmergencyPageState extends State<EmergencyPage> {
|
||||
late int currentUserID;
|
||||
EmergencyInfo? info;
|
||||
bool hasTrustedContact = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
currentUserID = widget.config.getUserID()!;
|
||||
Future.delayed(
|
||||
const Duration(seconds: 0),
|
||||
() async {
|
||||
unawaited(_fetchData());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _fetchData() async {
|
||||
try {
|
||||
final result = await EmergencyContactService.instance.getInfo();
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
info = result;
|
||||
if (info != null) {
|
||||
hasTrustedContact = info!.contacts.isNotEmpty;
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
showShortToast(
|
||||
context,
|
||||
context.strings.somethingWentWrong,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final List<EmergencyContact> othersTrustedContacts =
|
||||
info?.othersEmergencyContact ?? [];
|
||||
final List<EmergencyContact> trustedContacts = info?.contacts ?? [];
|
||||
|
||||
return Scaffold(
|
||||
body: CustomScrollView(
|
||||
slivers: [
|
||||
TitleBarWidget(
|
||||
flexibleSpaceTitle: TitleBarTitleWidget(
|
||||
title: context.strings.legacy,
|
||||
),
|
||||
),
|
||||
if (info == null)
|
||||
const SliverFillRemaining(
|
||||
hasScrollBody: false,
|
||||
child: Center(
|
||||
child: EnteLoadingWidget(),
|
||||
),
|
||||
),
|
||||
if (info != null && info!.recoverSessions.isNotEmpty)
|
||||
SliverPadding(
|
||||
padding: const EdgeInsets.only(
|
||||
top: 20,
|
||||
left: 16,
|
||||
right: 16,
|
||||
),
|
||||
sliver: SliverList(
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
if (index == 0) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: 16.0),
|
||||
child: NotificationWidget(
|
||||
startIcon: Icons.warning_amber_rounded,
|
||||
text: context.strings.recoveryWarning,
|
||||
actionIcon: null,
|
||||
onTap: () {},
|
||||
),
|
||||
);
|
||||
}
|
||||
final RecoverySessions recoverSession =
|
||||
info!.recoverSessions[index - 1];
|
||||
return MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: recoverSession.emergencyContact.email,
|
||||
makeTextBold: recoverSession.status.isNotEmpty,
|
||||
textColor: colorScheme.warning500,
|
||||
),
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
recoverSession.emergencyContact,
|
||||
currentUserID: currentUserID,
|
||||
config: widget.config,
|
||||
),
|
||||
leadingIconSize: 24,
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
trailingIcon: Icons.chevron_right,
|
||||
onTap: () async {
|
||||
await showRejectRecoveryDialog(recoverSession);
|
||||
},
|
||||
);
|
||||
},
|
||||
childCount: 1 + info!.recoverSessions.length,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (info != null)
|
||||
SliverPadding(
|
||||
padding: const EdgeInsets.only(
|
||||
top: 16,
|
||||
left: 16,
|
||||
right: 16,
|
||||
bottom: 8,
|
||||
),
|
||||
sliver: SliverList(
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
if (index == 0 && trustedContacts.isNotEmpty) {
|
||||
return MenuSectionTitle(
|
||||
title: context.strings.trustedContacts,
|
||||
);
|
||||
} else if (index > 0 && index <= trustedContacts.length) {
|
||||
final listIndex = index - 1;
|
||||
final contact = trustedContacts[listIndex];
|
||||
return Column(
|
||||
children: [
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: contact.emergencyContact.email,
|
||||
subTitle: contact.isPendingInvite() ? "⚠" : null,
|
||||
makeTextBold: contact.isPendingInvite(),
|
||||
),
|
||||
leadingIconSize: 24.0,
|
||||
surfaceExecutionStates: false,
|
||||
alwaysShowSuccessState: false,
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
contact.emergencyContact,
|
||||
type: AvatarType.mini,
|
||||
currentUserID: currentUserID,
|
||||
config: widget.config,
|
||||
),
|
||||
menuItemColor:
|
||||
getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
await showRevokeOrRemoveDialog(context, contact);
|
||||
},
|
||||
isTopBorderRadiusRemoved: listIndex > 0,
|
||||
isBottomBorderRadiusRemoved: true,
|
||||
singleBorderRadius: 8,
|
||||
),
|
||||
DividerWidget(
|
||||
dividerType: DividerType.menu,
|
||||
bgColor: getEnteColorScheme(context).fillFaint,
|
||||
),
|
||||
],
|
||||
);
|
||||
} else if (index == (1 + trustedContacts.length)) {
|
||||
if (trustedContacts.isEmpty) {
|
||||
return Column(
|
||||
children: [
|
||||
const SizedBox(height: 20),
|
||||
Text(
|
||||
context.strings.legacyPageDesc,
|
||||
style: getEnteTextTheme(context).body,
|
||||
),
|
||||
SizedBox(
|
||||
height: 200,
|
||||
width: 200,
|
||||
child: SvgPicture.asset(
|
||||
getEnteColorScheme(context).backdropBase ==
|
||||
backgroundBaseDark
|
||||
? "assets/icons/legacy-light.svg"
|
||||
: "assets/icons/legacy-dark.svg",
|
||||
width: 156,
|
||||
height: 152,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
context.strings.legacyPageDesc2,
|
||||
style: getEnteTextTheme(context).smallMuted,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.primary,
|
||||
labelText: context.strings.addTrustedContact,
|
||||
shouldSurfaceExecutionStates: false,
|
||||
onTap: () async {
|
||||
await routeToPage(
|
||||
context,
|
||||
AddContactPage(
|
||||
info!,
|
||||
config: widget.config,
|
||||
),
|
||||
forceCustomPageRoute: true,
|
||||
);
|
||||
unawaited(_fetchData());
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
return MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: trustedContacts.isNotEmpty
|
||||
? context.strings.addMore
|
||||
: context.strings.addTrustedContact,
|
||||
makeTextBold: true,
|
||||
),
|
||||
leadingIcon: Icons.add_outlined,
|
||||
surfaceExecutionStates: false,
|
||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||
onTap: () async {
|
||||
await routeToPage(
|
||||
context,
|
||||
AddContactPage(
|
||||
info!,
|
||||
config: widget.config,
|
||||
),
|
||||
forceCustomPageRoute: true,
|
||||
);
|
||||
unawaited(_fetchData());
|
||||
},
|
||||
isTopBorderRadiusRemoved: trustedContacts.isNotEmpty,
|
||||
singleBorderRadius: 8,
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
childCount: 1 + trustedContacts.length + 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (info != null && info!.othersEmergencyContact.isNotEmpty)
|
||||
SliverPadding(
|
||||
padding: const EdgeInsets.only(top: 0, left: 16, right: 16),
|
||||
sliver: SliverList(
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) {
|
||||
if (index == 0 && (othersTrustedContacts.isNotEmpty)) {
|
||||
return Column(
|
||||
children: [
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 8),
|
||||
child: DividerWidget(
|
||||
dividerType: DividerType.solid,
|
||||
),
|
||||
),
|
||||
MenuSectionTitle(
|
||||
title: context.strings.legacyAccounts,
|
||||
),
|
||||
],
|
||||
);
|
||||
} else if (index > 0 &&
|
||||
index <= othersTrustedContacts.length) {
|
||||
final listIndex = index - 1;
|
||||
final currentUser = othersTrustedContacts[listIndex];
|
||||
final isLastItem = index == othersTrustedContacts.length;
|
||||
return Column(
|
||||
children: [
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: currentUser.user.email,
|
||||
makeTextBold: currentUser.isPendingInvite(),
|
||||
subTitle:
|
||||
currentUser.isPendingInvite() ? "⚠" : null,
|
||||
),
|
||||
leadingIconSize: 24.0,
|
||||
leadingIconWidget: UserAvatarWidget(
|
||||
currentUser.user,
|
||||
type: AvatarType.mini,
|
||||
currentUserID: currentUserID,
|
||||
config: widget.config,
|
||||
),
|
||||
menuItemColor:
|
||||
getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
if (currentUser.isPendingInvite()) {
|
||||
await showAcceptOrDeclineDialog(
|
||||
context,
|
||||
currentUser,
|
||||
);
|
||||
} else {
|
||||
await Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return OtherContactPage(
|
||||
contact: currentUser,
|
||||
emergencyInfo: info!,
|
||||
config: widget.config,
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
if (mounted) {
|
||||
unawaited(_fetchData());
|
||||
}
|
||||
}
|
||||
},
|
||||
isTopBorderRadiusRemoved: listIndex > 0,
|
||||
isBottomBorderRadiusRemoved: !isLastItem,
|
||||
singleBorderRadius: 8,
|
||||
surfaceExecutionStates: false,
|
||||
),
|
||||
isLastItem
|
||||
? const SizedBox.shrink()
|
||||
: DividerWidget(
|
||||
dividerType: DividerType.menu,
|
||||
bgColor:
|
||||
getEnteColorScheme(context).fillFaint,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
childCount: 1 + othersTrustedContacts.length + 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> showRevokeOrRemoveDialog(
|
||||
BuildContext context,
|
||||
EmergencyContact contact,
|
||||
) async {
|
||||
if (contact.isPendingInvite()) {
|
||||
await showActionSheet(
|
||||
context: context,
|
||||
body:
|
||||
"You have invited ${contact.emergencyContact.email} to be a trusted contact",
|
||||
bodyHighlight: "They are yet to accept your invite",
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: "context.strings.removeInvite",
|
||||
buttonType: ButtonType.critical,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.first,
|
||||
shouldStickToDarkTheme: true,
|
||||
shouldSurfaceExecutionStates: true,
|
||||
shouldShowSuccessConfirmation: false,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance
|
||||
.updateContact(contact, ContactState.userRevokedContact);
|
||||
info?.contacts.remove(contact);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
unawaited(_fetchData());
|
||||
}
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.cancel,
|
||||
buttonType: ButtonType.tertiary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.second,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
);
|
||||
} else {
|
||||
await showActionSheet(
|
||||
context: context,
|
||||
body:
|
||||
"You have added ${contact.emergencyContact.email} as a trusted contact",
|
||||
bodyHighlight: "They have accepted your invite",
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: "context.strings.remove",
|
||||
buttonType: ButtonType.critical,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.second,
|
||||
shouldStickToDarkTheme: true,
|
||||
shouldSurfaceExecutionStates: true,
|
||||
shouldShowSuccessConfirmation: false,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance
|
||||
.updateContact(contact, ContactState.userRevokedContact);
|
||||
info?.contacts.remove(contact);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
unawaited(_fetchData());
|
||||
}
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.cancel,
|
||||
buttonType: ButtonType.tertiary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.third,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> showAcceptOrDeclineDialog(
|
||||
BuildContext context,
|
||||
EmergencyContact contact,
|
||||
) async {
|
||||
await showActionSheet(
|
||||
context: context,
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: "context.strings.acceptTrustInvite",
|
||||
buttonType: ButtonType.primary,
|
||||
buttonSize: ButtonSize.large,
|
||||
shouldStickToDarkTheme: true,
|
||||
buttonAction: ButtonAction.first,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance
|
||||
.updateContact(contact, ContactState.contactAccepted);
|
||||
final updatedContact =
|
||||
contact.copyWith(state: ContactState.contactAccepted);
|
||||
info?.othersEmergencyContact.remove(contact);
|
||||
info?.othersEmergencyContact.add(updatedContact);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.declineTrustInvite,
|
||||
buttonType: ButtonType.critical,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.second,
|
||||
shouldStickToDarkTheme: true,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance
|
||||
.updateContact(contact, ContactState.contactDenied);
|
||||
info?.othersEmergencyContact.remove(contact);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.cancel,
|
||||
buttonType: ButtonType.tertiary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.third,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
body: "context.strings.legacyInvite(email: contact.user.email)",
|
||||
actionSheetType: ActionSheetType.defaultActionSheet,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Future<void> showRejectRecoveryDialog(RecoverySessions session) async {
|
||||
final String emergencyContactEmail = session.emergencyContact.email;
|
||||
await showActionSheet(
|
||||
context: context,
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: context.strings.rejectRecovery,
|
||||
buttonSize: ButtonSize.large,
|
||||
shouldStickToDarkTheme: true,
|
||||
buttonType: ButtonType.critical,
|
||||
buttonAction: ButtonAction.first,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance.rejectRecovery(session);
|
||||
info?.recoverSessions
|
||||
.removeWhere((element) => element.id == session.id);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
unawaited(_fetchData());
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
if (kDebugMode)
|
||||
ButtonWidget(
|
||||
labelText: "Approve recovery (to be removed)",
|
||||
buttonType: ButtonType.primary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.second,
|
||||
shouldStickToDarkTheme: true,
|
||||
onTap: () async {
|
||||
await EmergencyContactService.instance.approveRecovery(session);
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
unawaited(_fetchData());
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.cancel,
|
||||
buttonType: ButtonType.tertiary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.third,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
body: context.strings.recoveryWarningBody(emergencyContactEmail),
|
||||
actionSheetType: ActionSheetType.defaultActionSheet,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
287
mobile/packages/legacy/lib/pages/other_contact_page.dart
Normal file
287
mobile/packages/legacy/lib/pages/other_contact_page.dart
Normal file
@@ -0,0 +1,287 @@
|
||||
import "dart:async";
|
||||
|
||||
import "package:collection/collection.dart";
|
||||
import "package:ente_base/models/key_attributes.dart";
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_legacy/models/emergency_models.dart";
|
||||
import "package:ente_legacy/pages/recover_others_account.dart";
|
||||
import "package:ente_legacy/services/emergency_service.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/action_sheet_widget.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
import "package:ente_ui/components/menu_section_title.dart";
|
||||
import "package:ente_ui/components/title_bar_title_widget.dart";
|
||||
import "package:ente_ui/theme/colors.dart";
|
||||
import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_ui/utils/dialog_util.dart";
|
||||
import "package:ente_utils/navigation_util.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:intl/intl.dart";
|
||||
import "package:logging/logging.dart";
|
||||
|
||||
// OtherContactPage is used to start recovery process for other user's account
|
||||
// Based on the state of the contact & recovery session, it will show
|
||||
// different UI
|
||||
class OtherContactPage extends StatefulWidget {
|
||||
final EmergencyContact contact;
|
||||
final EmergencyInfo emergencyInfo;
|
||||
final BaseConfiguration config;
|
||||
|
||||
const OtherContactPage({
|
||||
required this.contact,
|
||||
required this.emergencyInfo,
|
||||
required this.config,
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
State<OtherContactPage> createState() => _OtherContactPageState();
|
||||
}
|
||||
|
||||
class _OtherContactPageState extends State<OtherContactPage> {
|
||||
late String accountEmail = widget.contact.user.email;
|
||||
RecoverySessions? recoverySession;
|
||||
String? waitTill;
|
||||
final Logger _logger = Logger("_OtherContactPageState");
|
||||
late EmergencyInfo emergencyInfo = widget.emergencyInfo;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
recoverySession = widget.emergencyInfo.othersRecoverySession
|
||||
.firstWhereOrNull((session) => session.user.email == accountEmail);
|
||||
_fetchData();
|
||||
}
|
||||
|
||||
Future<void> _fetchData() async {
|
||||
try {
|
||||
final result = await EmergencyContactService.instance.getInfo();
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
recoverySession = result.othersRecoverySession.firstWhereOrNull(
|
||||
(session) => session.user.email == accountEmail,
|
||||
);
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.severe("Error fetching data", e);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_logger.info('session ${widget.emergencyInfo}');
|
||||
if (recoverySession != null) {
|
||||
final dateTime = DateTime.now().add(
|
||||
Duration(
|
||||
microseconds: recoverySession!.waitTill,
|
||||
),
|
||||
);
|
||||
waitTill = _getFormattedTime(context, dateTime);
|
||||
}
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final textTheme = getEnteTextTheme(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SafeArea(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const SizedBox(height: 12),
|
||||
TitleBarTitleWidget(
|
||||
title: context.strings.recoverAccount,
|
||||
),
|
||||
Text(
|
||||
accountEmail,
|
||||
textAlign: TextAlign.left,
|
||||
style:
|
||||
textTheme.small.copyWith(color: colorScheme.textMuted),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
recoverySession == null
|
||||
? Text(
|
||||
"You can recover $accountEmail's account in ${widget.contact.recoveryNoticeInDays} days"
|
||||
" after starting the recovery process.",
|
||||
style: textTheme.body,
|
||||
)
|
||||
: (recoverySession!.status == "READY"
|
||||
? Text(
|
||||
"Recovery ready for $accountEmail",
|
||||
style: textTheme.body,
|
||||
)
|
||||
: Text(
|
||||
"You can recover $accountEmail's"
|
||||
" account after $waitTill.",
|
||||
style: textTheme.bodyBold,
|
||||
)),
|
||||
const SizedBox(height: 24),
|
||||
if (recoverySession == null)
|
||||
ButtonWidget(
|
||||
// icon: Icons.start_outlined,
|
||||
buttonType: ButtonType.trailingIconPrimary,
|
||||
icon: Icons.start_outlined,
|
||||
labelText: context.strings.startAccountRecoveryTitle,
|
||||
onTap: widget.contact.isPendingInvite()
|
||||
? null
|
||||
: () async {
|
||||
final actionResult = await showChoiceActionSheet(
|
||||
context,
|
||||
title: context.strings.startAccountRecoveryTitle,
|
||||
firstButtonLabel: context.strings.yes,
|
||||
body: "Are you sure you want to initiate recovery?",
|
||||
isCritical: true,
|
||||
);
|
||||
if (actionResult?.action != null) {
|
||||
if (actionResult!.action == ButtonAction.first) {
|
||||
try {
|
||||
await EmergencyContactService.instance
|
||||
.startRecovery(widget.contact);
|
||||
if (mounted) {
|
||||
_fetchData().ignore();
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.strings.recoveryInitiated,
|
||||
context.strings.recoveryInitiatedDesc(
|
||||
widget.contact.recoveryNoticeInDays,
|
||||
widget.config.getEmail()!,
|
||||
),
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
showGenericErrorDialog(context: context, error: e)
|
||||
.ignore();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
if (recoverySession != null && recoverySession!.status == "READY")
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 12.0),
|
||||
child: ButtonWidget(
|
||||
buttonType: ButtonType.primary,
|
||||
labelText: context.strings.recoverAccount,
|
||||
onTap: () async {
|
||||
try {
|
||||
final (String key, KeyAttributes attributes) =
|
||||
await EmergencyContactService.instance
|
||||
.getRecoveryInfo(recoverySession!);
|
||||
routeToPage(
|
||||
context,
|
||||
RecoverOthersAccount(key, attributes, recoverySession!),
|
||||
).ignore();
|
||||
} catch (e) {
|
||||
showGenericErrorDialog(context: context, error: e)
|
||||
.ignore();
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
if (recoverySession != null &&
|
||||
(recoverySession!.status == "WAITING" ||
|
||||
recoverySession!.status == "READY"))
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.neutral,
|
||||
labelText: context.strings.cancelAccountRecovery,
|
||||
shouldSurfaceExecutionStates: false,
|
||||
onTap: () async {
|
||||
final actionResult = await showChoiceActionSheet(
|
||||
context,
|
||||
title: context.strings.cancelAccountRecovery,
|
||||
firstButtonLabel: context.strings.yes,
|
||||
body: context.strings.cancelAccountRecoveryBody,
|
||||
isCritical: true,
|
||||
firstButtonOnTap: () async {
|
||||
await EmergencyContactService.instance
|
||||
.stopRecovery(recoverySession!);
|
||||
},
|
||||
);
|
||||
if (actionResult?.action == ButtonAction.first) {
|
||||
_fetchData().ignore();
|
||||
}
|
||||
},
|
||||
),
|
||||
MenuSectionTitle(
|
||||
title: context.strings.removeYourselfAsTrustedContact,
|
||||
),
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: context.strings.remove,
|
||||
textColor: warning500,
|
||||
makeTextBold: true,
|
||||
),
|
||||
leadingIcon: Icons.not_interested_outlined,
|
||||
leadingIconColor: warning500,
|
||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||
surfaceExecutionStates: false,
|
||||
onTap: () async {
|
||||
await showRemoveSheet();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
String _getFormattedTime(BuildContext context, DateTime dateTime) {
|
||||
return DateFormat(
|
||||
'E, MMM d, y - HH:mm',
|
||||
Localizations.localeOf(context).languageCode,
|
||||
).format(
|
||||
dateTime,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> showRemoveSheet() async {
|
||||
await showActionSheet(
|
||||
context: context,
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
labelText: context.strings.remove,
|
||||
buttonSize: ButtonSize.large,
|
||||
shouldStickToDarkTheme: true,
|
||||
buttonType: ButtonType.critical,
|
||||
buttonAction: ButtonAction.first,
|
||||
onTap: () async {
|
||||
try {
|
||||
await EmergencyContactService.instance.updateContact(
|
||||
widget.contact,
|
||||
ContactState.contactLeft,
|
||||
);
|
||||
Navigator.of(context).pop();
|
||||
} catch (e) {
|
||||
showGenericErrorDialog(context: context, error: e).ignore();
|
||||
}
|
||||
},
|
||||
isInAlert: true,
|
||||
),
|
||||
ButtonWidget(
|
||||
labelText: context.strings.cancel,
|
||||
buttonType: ButtonType.tertiary,
|
||||
buttonSize: ButtonSize.large,
|
||||
buttonAction: ButtonAction.third,
|
||||
shouldStickToDarkTheme: true,
|
||||
isInAlert: true,
|
||||
),
|
||||
],
|
||||
body: "Are you sure your want to stop being a trusted "
|
||||
"contact for $accountEmail?",
|
||||
title: context.strings.remove,
|
||||
actionSheetType: ActionSheetType.defaultActionSheet,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
362
mobile/packages/legacy/lib/pages/recover_others_account.dart
Normal file
362
mobile/packages/legacy/lib/pages/recover_others_account.dart
Normal file
@@ -0,0 +1,362 @@
|
||||
import "dart:convert";
|
||||
import "dart:typed_data";
|
||||
|
||||
import "package:ente_accounts/models/set_keys_request.dart";
|
||||
import "package:ente_base/models/key_attributes.dart";
|
||||
import "package:ente_crypto_dart/ente_crypto_dart.dart";
|
||||
import "package:ente_legacy/models/emergency_models.dart";
|
||||
import "package:ente_legacy/services/emergency_service.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/buttons/dynamic_fab.dart";
|
||||
import "package:ente_ui/utils/dialog_util.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter/services.dart";
|
||||
import "package:logging/logging.dart";
|
||||
import "package:password_strength/password_strength.dart";
|
||||
|
||||
class RecoverOthersAccount extends StatefulWidget {
|
||||
final String recoveryKey;
|
||||
final KeyAttributes attributes;
|
||||
final RecoverySessions sessions;
|
||||
|
||||
const RecoverOthersAccount(
|
||||
this.recoveryKey,
|
||||
this.attributes,
|
||||
this.sessions, {
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
State<RecoverOthersAccount> createState() => _RecoverOthersAccountState();
|
||||
}
|
||||
|
||||
class _RecoverOthersAccountState extends State<RecoverOthersAccount> {
|
||||
static const kMildPasswordStrengthThreshold = 0.4;
|
||||
static const kStrongPasswordStrengthThreshold = 0.7;
|
||||
|
||||
final _logger = Logger((_RecoverOthersAccountState).toString());
|
||||
final _passwordController1 = TextEditingController(),
|
||||
_passwordController2 = TextEditingController();
|
||||
final Color _validFieldValueColor = const Color.fromRGBO(45, 194, 98, 0.2);
|
||||
String _passwordInInputBox = '';
|
||||
String _passwordInInputConfirmationBox = '';
|
||||
double _passwordStrength = 0.0;
|
||||
bool _password1Visible = false;
|
||||
bool _password2Visible = false;
|
||||
final _password1FocusNode = FocusNode();
|
||||
final _password2FocusNode = FocusNode();
|
||||
bool _password1InFocus = false;
|
||||
bool _password2InFocus = false;
|
||||
|
||||
bool _passwordsMatch = false;
|
||||
bool _isPasswordValid = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_password1FocusNode.addListener(() {
|
||||
setState(() {
|
||||
_password1InFocus = _password1FocusNode.hasFocus;
|
||||
});
|
||||
});
|
||||
_password2FocusNode.addListener(() {
|
||||
setState(() {
|
||||
_password2InFocus = _password2FocusNode.hasFocus;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 100;
|
||||
|
||||
FloatingActionButtonLocation? fabLocation() {
|
||||
if (isKeypadOpen) {
|
||||
return null;
|
||||
} else {
|
||||
return FloatingActionButtonLocation.centerFloat;
|
||||
}
|
||||
}
|
||||
|
||||
String title = context.strings.setPasswordTitle;
|
||||
title = context.strings.resetPasswordTitle;
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: isKeypadOpen,
|
||||
appBar: AppBar(
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
elevation: 0,
|
||||
),
|
||||
body: _getBody(title),
|
||||
floatingActionButton: DynamicFAB(
|
||||
isKeypadOpen: isKeypadOpen,
|
||||
isFormValid: _passwordsMatch && _isPasswordValid,
|
||||
buttonText: title,
|
||||
onPressedFunction: () {
|
||||
_updatePassword();
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
),
|
||||
floatingActionButtonLocation: fabLocation(),
|
||||
floatingActionButtonAnimator: NoScalingAnimation(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getBody(String buttonTextAndHeading) {
|
||||
final email = widget.sessions.user.email;
|
||||
var passwordStrengthText = context.strings.weakStrength;
|
||||
var passwordStrengthColor = Colors.redAccent;
|
||||
if (_passwordStrength > kStrongPasswordStrengthThreshold) {
|
||||
passwordStrengthText = context.strings.strongStrength;
|
||||
passwordStrengthColor = Colors.greenAccent;
|
||||
} else if (_passwordStrength > kMildPasswordStrengthThreshold) {
|
||||
passwordStrengthText = context.strings.moderateStrength;
|
||||
passwordStrengthColor = Colors.orangeAccent;
|
||||
}
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: AutofillGroup(
|
||||
child: ListView(
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(vertical: 30, horizontal: 20),
|
||||
child: Text(
|
||||
buttonTextAndHeading,
|
||||
style: Theme.of(context).textTheme.headlineMedium,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
child: Text(
|
||||
"Enter new password for $email account. You will be able "
|
||||
"to use this password to login into $email account.",
|
||||
textAlign: TextAlign.start,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.titleMedium!
|
||||
.copyWith(fontSize: 14),
|
||||
),
|
||||
),
|
||||
const Padding(padding: EdgeInsets.all(12)),
|
||||
Visibility(
|
||||
// hidden textForm for suggesting auto-fill service for saving
|
||||
// password
|
||||
visible: false,
|
||||
child: TextFormField(
|
||||
autofillHints: const [
|
||||
AutofillHints.email,
|
||||
],
|
||||
autocorrect: false,
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
initialValue: email,
|
||||
textInputAction: TextInputAction.next,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(20, 0, 20, 0),
|
||||
child: TextFormField(
|
||||
autofillHints: const [AutofillHints.newPassword],
|
||||
decoration: InputDecoration(
|
||||
fillColor:
|
||||
_isPasswordValid ? _validFieldValueColor : null,
|
||||
filled: true,
|
||||
hintText: context.strings.password,
|
||||
contentPadding: const EdgeInsets.all(20),
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
suffixIcon: _password1InFocus
|
||||
? IconButton(
|
||||
icon: Icon(
|
||||
_password1Visible
|
||||
? Icons.visibility
|
||||
: Icons.visibility_off,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
size: 20,
|
||||
),
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
_password1Visible = !_password1Visible;
|
||||
});
|
||||
},
|
||||
)
|
||||
: null,
|
||||
),
|
||||
obscureText: !_password1Visible,
|
||||
controller: _passwordController1,
|
||||
autofocus: false,
|
||||
autocorrect: false,
|
||||
keyboardType: TextInputType.visiblePassword,
|
||||
onChanged: (password) {
|
||||
setState(() {
|
||||
_passwordInInputBox = password;
|
||||
_passwordStrength = estimatePasswordStrength(password);
|
||||
_isPasswordValid =
|
||||
_passwordStrength >= kMildPasswordStrengthThreshold;
|
||||
_passwordsMatch = _passwordInInputBox ==
|
||||
_passwordInInputConfirmationBox;
|
||||
});
|
||||
},
|
||||
textInputAction: TextInputAction.next,
|
||||
focusNode: _password1FocusNode,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(20, 0, 20, 0),
|
||||
child: TextFormField(
|
||||
keyboardType: TextInputType.visiblePassword,
|
||||
controller: _passwordController2,
|
||||
obscureText: !_password2Visible,
|
||||
autofillHints: const [AutofillHints.newPassword],
|
||||
onEditingComplete: () => TextInput.finishAutofillContext(),
|
||||
decoration: InputDecoration(
|
||||
fillColor: _passwordsMatch ? _validFieldValueColor : null,
|
||||
filled: true,
|
||||
hintText: context.strings.confirmPassword,
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
vertical: 20,
|
||||
horizontal: 20,
|
||||
),
|
||||
suffixIcon: _password2InFocus
|
||||
? IconButton(
|
||||
icon: Icon(
|
||||
_password2Visible
|
||||
? Icons.visibility
|
||||
: Icons.visibility_off,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
size: 20,
|
||||
),
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
_password2Visible = !_password2Visible;
|
||||
});
|
||||
},
|
||||
)
|
||||
: null,
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
),
|
||||
focusNode: _password2FocusNode,
|
||||
onChanged: (cnfPassword) {
|
||||
setState(() {
|
||||
_passwordInInputConfirmationBox = cnfPassword;
|
||||
if (_passwordInInputBox != '') {
|
||||
_passwordsMatch = _passwordInInputBox ==
|
||||
_passwordInInputConfirmationBox;
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
Opacity(
|
||||
opacity:
|
||||
(_passwordInInputBox != '') && _password1InFocus ? 1 : 0,
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 20, vertical: 8),
|
||||
child: Text(
|
||||
"Password strength: $passwordStrengthText",
|
||||
style: TextStyle(
|
||||
color: passwordStrengthColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
const Padding(padding: EdgeInsets.all(20)),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
void _updatePassword() async {
|
||||
final dialog = createProgressDialog(
|
||||
context,
|
||||
context.strings.generatingEncryptionKeys,
|
||||
);
|
||||
await dialog.show();
|
||||
try {
|
||||
final String password = _passwordController1.text;
|
||||
final KeyAttributes attributes = widget.attributes;
|
||||
Uint8List? masterKey;
|
||||
try {
|
||||
// Decrypt the master key that was earlier encrypted with the recovery key
|
||||
masterKey = await CryptoUtil.decrypt(
|
||||
CryptoUtil.base642bin(attributes.masterKeyEncryptedWithRecoveryKey),
|
||||
CryptoUtil.hex2bin(widget.recoveryKey),
|
||||
CryptoUtil.base642bin(attributes.masterKeyDecryptionNonce),
|
||||
);
|
||||
} catch (e) {
|
||||
_logger.severe(e, "Failed to get master key using recoveryKey");
|
||||
rethrow;
|
||||
}
|
||||
|
||||
// Derive a key from the password that will be used to encrypt and
|
||||
// decrypt the master key
|
||||
final kekSalt = CryptoUtil.getSaltToDeriveKey();
|
||||
final derivedKeyResult = await CryptoUtil.deriveSensitiveKey(
|
||||
utf8.encode(password),
|
||||
kekSalt,
|
||||
);
|
||||
final loginKey = await CryptoUtil.deriveLoginKey(derivedKeyResult.key);
|
||||
// Encrypt the key with this derived key
|
||||
final encryptedKeyData =
|
||||
CryptoUtil.encryptSync(masterKey, derivedKeyResult.key);
|
||||
|
||||
final updatedAttributes = attributes.copyWith(
|
||||
kekSalt: CryptoUtil.bin2base64(kekSalt),
|
||||
encryptedKey: CryptoUtil.bin2base64(encryptedKeyData.encryptedData!),
|
||||
keyDecryptionNonce: CryptoUtil.bin2base64(encryptedKeyData.nonce!),
|
||||
memLimit: derivedKeyResult.memLimit,
|
||||
opsLimit: derivedKeyResult.opsLimit,
|
||||
);
|
||||
final setKeyRequest = SetKeysRequest(
|
||||
kekSalt: updatedAttributes.kekSalt,
|
||||
encryptedKey: updatedAttributes.encryptedKey,
|
||||
keyDecryptionNonce: updatedAttributes.keyDecryptionNonce,
|
||||
memLimit: updatedAttributes.memLimit,
|
||||
opsLimit: updatedAttributes.opsLimit,
|
||||
);
|
||||
await EmergencyContactService.instance.changePasswordForOther(
|
||||
Uint8List.fromList(loginKey),
|
||||
setKeyRequest,
|
||||
widget.sessions,
|
||||
);
|
||||
await dialog.hide();
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(context.strings.passwordChangedSuccessfully),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
);
|
||||
Navigator.of(context).pop();
|
||||
} catch (e, s) {
|
||||
_logger.severe(e, s);
|
||||
await dialog.hide();
|
||||
await showGenericErrorDialog(context: context, error: e);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_passwordController1.dispose();
|
||||
_passwordController2.dispose();
|
||||
_password1FocusNode.dispose();
|
||||
_password2FocusNode.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
334
mobile/packages/legacy/lib/pages/select_contact_page.dart
Normal file
334
mobile/packages/legacy/lib/pages/select_contact_page.dart
Normal file
@@ -0,0 +1,334 @@
|
||||
import "package:email_validator/email_validator.dart";
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_legacy/models/emergency_models.dart";
|
||||
import "package:ente_legacy/services/emergency_service.dart";
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_sharing/verify_identity_dialog.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/captioned_text_widget.dart";
|
||||
import "package:ente_ui/components/divider_widget.dart";
|
||||
import "package:ente_ui/components/menu_item_widget.dart";
|
||||
import "package:ente_ui/components/menu_section_description_widget.dart";
|
||||
import "package:ente_ui/components/menu_section_title.dart";
|
||||
import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_ui/utils/dialog_util.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:logging/logging.dart";
|
||||
|
||||
class AddContactPage extends StatefulWidget {
|
||||
final EmergencyInfo emergencyInfo;
|
||||
final BaseConfiguration config;
|
||||
|
||||
const AddContactPage(
|
||||
this.emergencyInfo, {
|
||||
super.key,
|
||||
required this.config,
|
||||
});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _AddContactPageState();
|
||||
}
|
||||
|
||||
class _AddContactPageState extends State<AddContactPage> {
|
||||
String selectedEmail = '';
|
||||
String _email = '';
|
||||
bool isEmailListEmpty = false;
|
||||
bool _emailIsValid = false;
|
||||
bool isKeypadOpen = false;
|
||||
late final Logger _logger = Logger('AddContactPage');
|
||||
|
||||
// Focus nodes are necessary
|
||||
final textFieldFocusNode = FocusNode();
|
||||
final _textController = TextEditingController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_textController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 100;
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final textTheme = getEnteTextTheme(context);
|
||||
final List<User> suggestedUsers = _getSuggestedUser();
|
||||
isEmailListEmpty = suggestedUsers.isEmpty;
|
||||
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: isKeypadOpen,
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
context.strings.addTrustedContact,
|
||||
),
|
||||
),
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const SizedBox(height: 12),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Text(
|
||||
context.strings.addANewEmail,
|
||||
style: textTheme.small.copyWith(color: colorScheme.textMuted),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: _getEmailField(),
|
||||
),
|
||||
if (isEmailListEmpty)
|
||||
const Expanded(child: SizedBox.shrink())
|
||||
else
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Column(
|
||||
children: [
|
||||
!isEmailListEmpty
|
||||
? MenuSectionTitle(
|
||||
title: context.strings.orPickAnExistingOne,
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
Expanded(
|
||||
child: ListView.builder(
|
||||
itemBuilder: (context, index) {
|
||||
if (index >= suggestedUsers.length) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 8.0,
|
||||
),
|
||||
child: MenuSectionDescriptionWidget(
|
||||
content: context.strings.whyAddTrustContact,
|
||||
),
|
||||
);
|
||||
}
|
||||
final currentUser = suggestedUsers[index];
|
||||
return Column(
|
||||
children: [
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: currentUser.email,
|
||||
),
|
||||
leadingIconSize: 24.0,
|
||||
leadingIconWidget: CircleAvatar(
|
||||
radius: 12,
|
||||
child: Text(
|
||||
currentUser.email
|
||||
.substring(0, 1)
|
||||
.toUpperCase(),
|
||||
style: const TextStyle(fontSize: 12),
|
||||
),
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
pressedColor: colorScheme.fillFaint,
|
||||
trailingIcon:
|
||||
(selectedEmail == currentUser.email)
|
||||
? Icons.check
|
||||
: null,
|
||||
onTap: () async {
|
||||
textFieldFocusNode.unfocus();
|
||||
if (selectedEmail == currentUser.email) {
|
||||
selectedEmail = '';
|
||||
} else {
|
||||
selectedEmail = currentUser.email;
|
||||
}
|
||||
setState(() {});
|
||||
},
|
||||
isTopBorderRadiusRemoved: index > 0,
|
||||
isBottomBorderRadiusRemoved:
|
||||
index < (suggestedUsers.length - 1),
|
||||
),
|
||||
(index == (suggestedUsers.length - 1))
|
||||
? const SizedBox.shrink()
|
||||
: DividerWidget(
|
||||
dividerType: DividerType.menu,
|
||||
bgColor: colorScheme.fillFaint,
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
itemCount: suggestedUsers.length + 1,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
top: 8,
|
||||
bottom: 8,
|
||||
left: 16,
|
||||
right: 16,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.primary,
|
||||
buttonSize: ButtonSize.large,
|
||||
labelText: "Add",
|
||||
isDisabled: (selectedEmail == '' && !_emailIsValid),
|
||||
onTap: (selectedEmail == '' && !_emailIsValid)
|
||||
? null
|
||||
: () async {
|
||||
final emailToAdd =
|
||||
selectedEmail == '' ? _email : selectedEmail;
|
||||
final choiceResult = await showChoiceActionSheet(
|
||||
context,
|
||||
title: context.strings.warning,
|
||||
body: context.strings.confirmAddingTrustedContact(
|
||||
emailToAdd,
|
||||
30,
|
||||
),
|
||||
firstButtonLabel: context.strings.proceed,
|
||||
isCritical: true,
|
||||
);
|
||||
if (choiceResult != null &&
|
||||
choiceResult.action == ButtonAction.first) {
|
||||
try {
|
||||
final r = await EmergencyContactService.instance
|
||||
.addContact(context, emailToAdd);
|
||||
if (r && mounted) {
|
||||
Navigator.of(context).pop(true);
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.severe('Failed to add contact', e);
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.strings.error,
|
||||
context.strings.somethingWentWrong,
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
if ((selectedEmail == '' && !_emailIsValid)) {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.strings.invalidEmailAddress,
|
||||
context.strings.enterValidEmail,
|
||||
);
|
||||
return;
|
||||
}
|
||||
final emailToAdd =
|
||||
selectedEmail == '' ? _email : selectedEmail;
|
||||
await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return VerifyIdentityDialog(
|
||||
self: false,
|
||||
email: emailToAdd,
|
||||
config: widget.config,
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
child: Text(
|
||||
context.strings.verifyIDLabel,
|
||||
textAlign: TextAlign.center,
|
||||
style: textTheme.smallMuted.copyWith(
|
||||
decoration: TextDecoration.underline,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void clearFocus() {
|
||||
_textController.clear();
|
||||
_email = _textController.text;
|
||||
_emailIsValid = false;
|
||||
textFieldFocusNode.unfocus();
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
Widget _getEmailField() {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
return TextFormField(
|
||||
controller: _textController,
|
||||
focusNode: textFieldFocusNode,
|
||||
autofillHints: const [AutofillHints.email],
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(4.0)),
|
||||
borderSide: BorderSide(color: colorScheme.strokeMuted),
|
||||
),
|
||||
fillColor: colorScheme.fillFaint,
|
||||
filled: true,
|
||||
hintText: context.strings.enterEmail,
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: 14,
|
||||
),
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
prefixIcon: Icon(
|
||||
Icons.email_outlined,
|
||||
color: colorScheme.strokeMuted,
|
||||
),
|
||||
suffixIcon: _email == ''
|
||||
? null
|
||||
: IconButton(
|
||||
onPressed: clearFocus,
|
||||
icon: Icon(
|
||||
Icons.cancel,
|
||||
color: colorScheme.strokeMuted,
|
||||
),
|
||||
),
|
||||
),
|
||||
onChanged: (value) {
|
||||
if (selectedEmail != '') {
|
||||
selectedEmail = '';
|
||||
}
|
||||
_email = value.trim();
|
||||
_emailIsValid = EmailValidator.validate(_email);
|
||||
setState(() {});
|
||||
},
|
||||
autocorrect: false,
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
textInputAction: TextInputAction.next,
|
||||
);
|
||||
}
|
||||
|
||||
List<User> _getSuggestedUser() {
|
||||
final List<User> suggestedUsers = [];
|
||||
// For now, return an empty list since we don't have access to CollectionsService
|
||||
// In a real implementation, this would fetch users from shared collections
|
||||
|
||||
if (_textController.text.trim().isNotEmpty) {
|
||||
suggestedUsers.removeWhere(
|
||||
(element) => !element.email
|
||||
.toLowerCase()
|
||||
.contains(_textController.text.trim().toLowerCase()),
|
||||
);
|
||||
}
|
||||
suggestedUsers.sort((a, b) => a.email.compareTo(b.email));
|
||||
|
||||
return suggestedUsers;
|
||||
}
|
||||
}
|
||||
298
mobile/packages/legacy/lib/services/emergency_service.dart
Normal file
298
mobile/packages/legacy/lib/services/emergency_service.dart
Normal file
@@ -0,0 +1,298 @@
|
||||
import "dart:convert";
|
||||
import "dart:math";
|
||||
import "dart:typed_data";
|
||||
|
||||
import "package:dio/dio.dart";
|
||||
import "package:ente_accounts/models/set_keys_request.dart";
|
||||
import "package:ente_accounts/models/srp.dart";
|
||||
import "package:ente_accounts/services/user_service.dart";
|
||||
import "package:ente_base/models/key_attributes.dart";
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_crypto_dart/ente_crypto_dart.dart";
|
||||
import "package:ente_legacy/models/emergency_models.dart";
|
||||
import "package:ente_network/network.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/user_dialogs.dart";
|
||||
import "package:ente_utils/email_util.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:logging/logging.dart";
|
||||
import "package:pointycastle/pointycastle.dart";
|
||||
import "package:pointycastle/random/fortuna_random.dart";
|
||||
import "package:pointycastle/srp/srp6_client.dart";
|
||||
import "package:pointycastle/srp/srp6_standard_groups.dart";
|
||||
import "package:pointycastle/srp/srp6_util.dart";
|
||||
import "package:pointycastle/srp/srp6_verifier_generator.dart";
|
||||
import "package:uuid/uuid.dart";
|
||||
|
||||
class EmergencyContactService {
|
||||
final Dio _enteDio = Network.instance.enteDio;
|
||||
late UserService _userService;
|
||||
late BaseConfiguration _config;
|
||||
late final Logger _logger = Logger("EmergencyContactService");
|
||||
|
||||
EmergencyContactService._privateConstructor();
|
||||
static final EmergencyContactService instance =
|
||||
EmergencyContactService._privateConstructor();
|
||||
|
||||
Future<void> init(
|
||||
UserService userService,
|
||||
BaseConfiguration config,
|
||||
) async {
|
||||
_userService = userService;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
Future<bool> addContact(BuildContext context, String email) async {
|
||||
if (!isValidEmail(email)) {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.strings.invalidEmailAddress,
|
||||
context.strings.enterValidEmail,
|
||||
);
|
||||
return false;
|
||||
} else if (email.trim() == _config.getEmail()) {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.strings.oops,
|
||||
context.strings.youCannotShareWithYourself,
|
||||
);
|
||||
return false;
|
||||
}
|
||||
final String? publicKey = await _userService.getPublicKey(email);
|
||||
if (publicKey == null) {
|
||||
await showInviteDialog(context, email);
|
||||
return false;
|
||||
}
|
||||
final Uint8List recoveryKey = _config.getRecoveryKey();
|
||||
final encryptedKey = CryptoUtil.sealSync(
|
||||
recoveryKey,
|
||||
CryptoUtil.base642bin(publicKey),
|
||||
);
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/add",
|
||||
data: {
|
||||
"email": email.trim(),
|
||||
"encryptedKey": CryptoUtil.bin2base64(encryptedKey),
|
||||
},
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<EmergencyInfo> getInfo() async {
|
||||
try {
|
||||
final response = await _enteDio.get("/emergency-contacts/info");
|
||||
return EmergencyInfo.fromJson(response.data);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to get info', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateContact(
|
||||
EmergencyContact contact,
|
||||
ContactState state,
|
||||
) async {
|
||||
try {
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/update",
|
||||
data: {
|
||||
"userID": contact.user.id,
|
||||
"emergencyContactID": contact.emergencyContact.id,
|
||||
"state": state.stringValue,
|
||||
},
|
||||
);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to update contact', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> startRecovery(EmergencyContact contact) async {
|
||||
try {
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/start-recovery",
|
||||
data: {
|
||||
"userID": contact.user.id,
|
||||
"emergencyContactID": contact.emergencyContact.id,
|
||||
},
|
||||
);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to start recovery', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> stopRecovery(RecoverySessions session) async {
|
||||
try {
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/stop-recovery",
|
||||
data: {
|
||||
"userID": session.user.id,
|
||||
"emergencyContactID": session.emergencyContact.id,
|
||||
"id": session.id,
|
||||
},
|
||||
);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to stop recovery', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> rejectRecovery(RecoverySessions session) async {
|
||||
try {
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/reject-recovery",
|
||||
data: {
|
||||
"userID": session.user.id,
|
||||
"emergencyContactID": session.emergencyContact.id,
|
||||
"id": session.id,
|
||||
},
|
||||
);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to stop recovery', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> approveRecovery(RecoverySessions session) async {
|
||||
try {
|
||||
await _enteDio.post(
|
||||
"/emergency-contacts/approve-recovery",
|
||||
data: {
|
||||
"userID": session.user.id,
|
||||
"emergencyContactID": session.emergencyContact.id,
|
||||
"id": session.id,
|
||||
},
|
||||
);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to approve recovery', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<(String, KeyAttributes)> getRecoveryInfo(
|
||||
RecoverySessions sessions,
|
||||
) async {
|
||||
try {
|
||||
final resp = await _enteDio.get(
|
||||
"/emergency-contacts/recovery-info/${sessions.id}",
|
||||
);
|
||||
final String encryptedKey = resp.data["encryptedKey"]!;
|
||||
final decryptedKey = CryptoUtil.openSealSync(
|
||||
CryptoUtil.base642bin(encryptedKey),
|
||||
CryptoUtil.base642bin(_config.getKeyAttributes()!.publicKey),
|
||||
_config.getSecretKey()!,
|
||||
);
|
||||
final String hexRecoveryKey = CryptoUtil.bin2hex(decryptedKey);
|
||||
final KeyAttributes keyAttributes =
|
||||
KeyAttributes.fromMap(resp.data['userKeyAttr']);
|
||||
return (hexRecoveryKey, keyAttributes);
|
||||
} catch (e, s) {
|
||||
Logger("EmergencyContact").severe('failed to stop recovery', e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> changePasswordForOther(
|
||||
Uint8List loginKey,
|
||||
SetKeysRequest setKeysRequest,
|
||||
RecoverySessions recoverySessions,
|
||||
) async {
|
||||
try {
|
||||
final SRP6GroupParameters kDefaultSrpGroup =
|
||||
SRP6StandardGroups.rfc5054_4096;
|
||||
final String username = const Uuid().v4().toString();
|
||||
final SecureRandom random = _getSecureRandom();
|
||||
final Uint8List identity = Uint8List.fromList(utf8.encode(username));
|
||||
final Uint8List password = loginKey;
|
||||
final Uint8List salt = random.nextBytes(16);
|
||||
final gen = SRP6VerifierGenerator(
|
||||
group: kDefaultSrpGroup,
|
||||
digest: Digest('SHA-256'),
|
||||
);
|
||||
final v = gen.generateVerifier(salt, identity, password);
|
||||
|
||||
final client = SRP6Client(
|
||||
group: kDefaultSrpGroup,
|
||||
digest: Digest('SHA-256'),
|
||||
random: random,
|
||||
);
|
||||
|
||||
final A = client.generateClientCredentials(salt, identity, password);
|
||||
final request = SetupSRPRequest(
|
||||
srpUserID: username,
|
||||
srpSalt: base64Encode(salt),
|
||||
srpVerifier: base64Encode(SRP6Util.encodeBigInt(v)),
|
||||
srpA: base64Encode(SRP6Util.encodeBigInt(A!)),
|
||||
isUpdate: false,
|
||||
);
|
||||
final response = await _enteDio.post(
|
||||
"/emergency-contacts/init-change-password",
|
||||
data: {
|
||||
"recoveryID": recoverySessions.id,
|
||||
"setupSRPRequest": request.toMap(),
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
final SetupSRPResponse setupSRPResponse =
|
||||
SetupSRPResponse.fromJson(response.data);
|
||||
final serverB =
|
||||
SRP6Util.decodeBigInt(base64Decode(setupSRPResponse.srpB));
|
||||
|
||||
// ignore: unused_local_variable
|
||||
final clientS = client.calculateSecret(serverB);
|
||||
final clientM = client.calculateClientEvidenceMessage();
|
||||
// ignore: unused_local_variable
|
||||
late Response srpCompleteResponse;
|
||||
srpCompleteResponse = await _enteDio.post(
|
||||
"/emergency-contacts/change-password",
|
||||
data: {
|
||||
"recoveryID": recoverySessions.id,
|
||||
'updateSrpAndKeysRequest': {
|
||||
'setupID': setupSRPResponse.setupID,
|
||||
'srpM1': base64Encode(SRP6Util.encodeBigInt(clientM!)),
|
||||
'updatedKeyAttr': setKeysRequest.toMap(),
|
||||
},
|
||||
},
|
||||
);
|
||||
} else {
|
||||
throw Exception("register-srp action failed");
|
||||
}
|
||||
} catch (e, s) {
|
||||
_logger.severe("failed to change password for other", e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
SecureRandom _getSecureRandom() {
|
||||
final List<int> seeds = [];
|
||||
final random = Random.secure();
|
||||
for (int i = 0; i < 32; i++) {
|
||||
seeds.add(random.nextInt(255));
|
||||
}
|
||||
final secureRandom = FortunaRandom();
|
||||
secureRandom.seed(KeyParameter(Uint8List.fromList(seeds)));
|
||||
return secureRandom;
|
||||
}
|
||||
|
||||
// Helper methods for dialogs
|
||||
Future<void> showErrorDialog(
|
||||
BuildContext context,
|
||||
String title,
|
||||
String message,
|
||||
) async {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
title: Text(title),
|
||||
content: Text(message),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: const Text('OK'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
1366
mobile/packages/legacy/pubspec.lock
Normal file
1366
mobile/packages/legacy/pubspec.lock
Normal file
File diff suppressed because it is too large
Load Diff
49
mobile/packages/legacy/pubspec.yaml
Normal file
49
mobile/packages/legacy/pubspec.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
name: ente_legacy
|
||||
description: A Flutter package containing legacy services for Ente apps
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=1.17.0"
|
||||
|
||||
dependencies:
|
||||
collection: ^1.18.0
|
||||
dio: ^5.4.0
|
||||
email_validator: ^3.0.0
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_base:
|
||||
path: ../base
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_crypto_dart:
|
||||
git:
|
||||
url: https://github.com/ente-io/ente_crypto_dart.git
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
path: ../ui
|
||||
ente_utils:
|
||||
path: ../utils
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_svg: ^2.0.10+1
|
||||
intl: ^0.20.2
|
||||
logging: ^1.2.0
|
||||
password_strength: ^0.2.0
|
||||
pointycastle: ^3.7.3
|
||||
uuid: ^4.2.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_lints: ^5.0.0
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
flutter:
|
||||
|
||||
# This package is not meant to be published
|
||||
publish_to: none
|
||||
24
mobile/packages/legacy/pubspec_overrides.yaml
Normal file
24
mobile/packages/legacy/pubspec_overrides.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_lock_screen,ente_logging,ente_network,ente_sharing,ente_strings,ente_ui,ente_utils
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_base:
|
||||
path: ../base
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_events:
|
||||
path: ../events
|
||||
ente_lock_screen:
|
||||
path: ../lock_screen
|
||||
ente_logging:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
path: ../ui
|
||||
ente_utils:
|
||||
path: ../utils
|
||||
@@ -244,6 +244,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_sharing:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../sharing"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -289,6 +296,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
fast_base58:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fast_base58
|
||||
sha256: "611f65633b734f27a850b51371b3eba993a5165650e12e8e7b02959f3768ba06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_logging,ente_network,ente_strings,ente_ui,ente_utils
|
||||
# melos_managed_dependency_overrides: ente_accounts,ente_base,ente_configuration,ente_events,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_sharing
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
@@ -12,6 +12,8 @@ dependency_overrides:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
|
||||
@@ -1,72 +1 @@
|
||||
# For more linters, we can check https://dart-lang.github.io/linter/lints/index.html
|
||||
# or https://pub.dev/packages/lint (Effective dart)
|
||||
# use "flutter analyze ." or "dart analyze ." for running lint checks
|
||||
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
linter:
|
||||
rules:
|
||||
# Ref https://github.com/flutter/packages/blob/master/packages/flutter_lints/lib/flutter.yaml
|
||||
# Ref https://dart-lang.github.io/linter/lints/
|
||||
- avoid_print
|
||||
- avoid_unnecessary_containers
|
||||
- avoid_web_libraries_in_flutter
|
||||
- no_logic_in_create_state
|
||||
- prefer_const_constructors
|
||||
- prefer_const_constructors_in_immutables
|
||||
- prefer_const_declarations
|
||||
- prefer_const_literals_to_create_immutables
|
||||
- prefer_final_locals
|
||||
- require_trailing_commas
|
||||
- sized_box_for_whitespace
|
||||
- use_full_hex_values_for_flutter_colors
|
||||
- use_key_in_widget_constructors
|
||||
- cancel_subscriptions
|
||||
|
||||
|
||||
- avoid_empty_else
|
||||
- exhaustive_cases
|
||||
|
||||
# just style suggestions
|
||||
- sort_pub_dependencies
|
||||
- use_rethrow_when_possible
|
||||
- prefer_double_quotes
|
||||
- directives_ordering
|
||||
- always_use_package_imports
|
||||
- sort_child_properties_last
|
||||
- unawaited_futures
|
||||
|
||||
analyzer:
|
||||
errors:
|
||||
avoid_empty_else: error
|
||||
exhaustive_cases: error
|
||||
curly_braces_in_flow_control_structures: error
|
||||
directives_ordering: error
|
||||
require_trailing_commas: error
|
||||
always_use_package_imports: warning
|
||||
prefer_final_fields: error
|
||||
unused_import: error
|
||||
camel_case_types: error
|
||||
prefer_is_empty: warning
|
||||
use_rethrow_when_possible: info
|
||||
unused_field: warning
|
||||
use_key_in_widget_constructors: warning
|
||||
sort_child_properties_last: warning
|
||||
sort_pub_dependencies: warning
|
||||
library_private_types_in_public_api: warning
|
||||
constant_identifier_names: ignore
|
||||
prefer_const_constructors: warning
|
||||
prefer_const_declarations: warning
|
||||
prefer_const_constructors_in_immutables: warning
|
||||
prefer_final_locals: warning
|
||||
unnecessary_const: error
|
||||
cancel_subscriptions: error
|
||||
unrelated_type_equality_checks: error
|
||||
unnecessary_cast: info
|
||||
|
||||
|
||||
unawaited_futures: warning # convert to warning after fixing existing issues
|
||||
invalid_dependency: info
|
||||
use_build_context_synchronously: ignore # experimental lint, requires many changes
|
||||
prefer_interpolation_to_compose_strings: ignore # later too many warnings
|
||||
prefer_double_quotes: ignore # too many warnings
|
||||
avoid_renaming_method_parameters: ignore # incorrect warnings for `equals` overrides
|
||||
include: ../../analysis_options.yaml
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
import "package:ente_ui/theme/colors.dart";
|
||||
import "package:ente_ui/theme/ente_theme.dart";
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:ente_utils/extensions/user_extension.dart";
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
||||
enum AvatarType { small, mini, tiny, extra }
|
||||
@@ -13,6 +13,7 @@ class UserAvatarWidget extends StatefulWidget {
|
||||
final AvatarType type;
|
||||
final int currentUserID;
|
||||
final bool thumbnailView;
|
||||
final BaseConfiguration config;
|
||||
|
||||
const UserAvatarWidget(
|
||||
this.user, {
|
||||
@@ -20,6 +21,7 @@ class UserAvatarWidget extends StatefulWidget {
|
||||
this.currentUserID = -1,
|
||||
this.type = AvatarType.mini,
|
||||
this.thumbnailView = false,
|
||||
required this.config,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -51,6 +53,7 @@ class _UserAvatarWidgetState extends State<UserAvatarWidget> {
|
||||
currentUserID: widget.currentUserID,
|
||||
thumbnailView: widget.thumbnailView,
|
||||
type: widget.type,
|
||||
config: widget.config,
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -62,11 +65,13 @@ class _FirstLetterCircularAvatar extends StatefulWidget {
|
||||
final int currentUserID;
|
||||
final bool thumbnailView;
|
||||
final AvatarType type;
|
||||
final BaseConfiguration config;
|
||||
const _FirstLetterCircularAvatar({
|
||||
required this.user,
|
||||
required this.currentUserID,
|
||||
required this.thumbnailView,
|
||||
required this.type,
|
||||
required this.config,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -80,14 +85,14 @@ class _FirstLetterCircularAvatarState
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final displayChar =
|
||||
(widget.user.name == null || widget.user.name!.isEmpty)
|
||||
(widget.user.displayName == null || widget.user.displayName!.isEmpty)
|
||||
? ((widget.user.email.isEmpty)
|
||||
? " "
|
||||
: widget.user.email.substring(0, 1))
|
||||
: widget.user.name!.substring(0, 1);
|
||||
: widget.user.displayName!.substring(0, 1);
|
||||
Color decorationColor;
|
||||
if ((widget.user.id != null && widget.user.id! < 0) ||
|
||||
widget.user.email == Configuration.instance.getEmail()) {
|
||||
widget.user.email == widget.config.getEmail()) {
|
||||
decorationColor = Colors.black;
|
||||
} else {
|
||||
decorationColor = colorScheme.avatarColors[(widget.user.email.length)
|
||||
@@ -159,20 +164,26 @@ double getAvatarSize(
|
||||
|
||||
class FirstLetterUserAvatar extends StatefulWidget {
|
||||
final User user;
|
||||
const FirstLetterUserAvatar(this.user, {super.key});
|
||||
final BaseConfiguration config;
|
||||
const FirstLetterUserAvatar(
|
||||
this.user, {
|
||||
super.key,
|
||||
required this.config,
|
||||
});
|
||||
|
||||
@override
|
||||
State<FirstLetterUserAvatar> createState() => _FirstLetterUserAvatarState();
|
||||
}
|
||||
|
||||
class _FirstLetterUserAvatarState extends State<FirstLetterUserAvatar> {
|
||||
final currentUserEmail = Configuration.instance.getEmail();
|
||||
late String? currentUserEmail;
|
||||
late User user;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
user = widget.user;
|
||||
currentUserEmail = widget.config.getEmail();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -188,9 +199,9 @@ class _FirstLetterUserAvatarState extends State<FirstLetterUserAvatar> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final displayChar = (user.name == null || user.name!.isEmpty)
|
||||
final displayChar = (user.displayName == null || user.displayName!.isEmpty)
|
||||
? ((user.email.isEmpty) ? " " : user.email.substring(0, 1))
|
||||
: user.name!.substring(0, 1);
|
||||
: user.displayName!.substring(0, 1);
|
||||
Color decorationColor;
|
||||
if ((widget.user.id != null && widget.user.id! < 0) ||
|
||||
user.email == currentUserEmail) {
|
||||
@@ -4,6 +4,8 @@ import 'package:bip39/bip39.dart' as bip39;
|
||||
import "package:crypto/crypto.dart";
|
||||
import "package:dotted_border/dotted_border.dart";
|
||||
import "package:ente_accounts/services/user_service.dart";
|
||||
import "package:ente_configuration/base_configuration.dart";
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/loading_widget.dart";
|
||||
@@ -11,22 +13,22 @@ import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_utils/share_utils.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter/services.dart";
|
||||
import "package:locker/l10n/l10n.dart";
|
||||
import "package:locker/services/configuration.dart";
|
||||
import "package:logging/logging.dart";
|
||||
|
||||
class VerifyIdentifyDialog extends StatefulWidget {
|
||||
class VerifyIdentityDialog extends StatefulWidget {
|
||||
// email id of the user who's verification ID is being displayed for
|
||||
// verification
|
||||
final String email;
|
||||
|
||||
// self is true when the user is viewing their own verification ID
|
||||
final bool self;
|
||||
final BaseConfiguration config;
|
||||
|
||||
VerifyIdentifyDialog({
|
||||
VerifyIdentityDialog({
|
||||
super.key,
|
||||
required this.self,
|
||||
this.email = '',
|
||||
required this.config,
|
||||
}) {
|
||||
if (!self && email.isEmpty) {
|
||||
throw ArgumentError("email cannot be empty when self is false");
|
||||
@@ -34,27 +36,27 @@ class VerifyIdentifyDialog extends StatefulWidget {
|
||||
}
|
||||
|
||||
@override
|
||||
State<VerifyIdentifyDialog> createState() => _VerifyIdentifyDialogState();
|
||||
State<VerifyIdentityDialog> createState() => _VerifyIdentityDialogState();
|
||||
}
|
||||
|
||||
class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
class _VerifyIdentityDialogState extends State<VerifyIdentityDialog> {
|
||||
final bool doesUserExist = true;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final textStyle = getEnteTextTheme(context);
|
||||
final String subTitle = widget.self
|
||||
? context.l10n.thisIsYourVerificationId
|
||||
: context.l10n.thisIsPersonVerificationId(widget.email);
|
||||
? context.strings.thisIsYourVerificationId
|
||||
: context.strings.thisIsPersonVerificationId(widget.email);
|
||||
final String bottomText = widget.self
|
||||
? context.l10n.someoneSharingAlbumsWithYouShouldSeeTheSameId
|
||||
: context.l10n.howToViewShareeVerificationID;
|
||||
? context.strings.someoneSharingAlbumsWithYouShouldSeeTheSameId
|
||||
: context.strings.howToViewShareeVerificationID;
|
||||
|
||||
final AlertDialog alert = AlertDialog(
|
||||
title: Text(
|
||||
widget.self
|
||||
? context.l10n.verificationId
|
||||
: context.l10n.verifyEmailID(widget.email),
|
||||
? context.strings.verificationId
|
||||
: context.strings.verifyEmailID(widget.email),
|
||||
),
|
||||
content: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@@ -70,18 +72,18 @@ class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(
|
||||
context.l10n.emailNoEnteAccount(widget.email),
|
||||
context.strings.emailNoEnteAccount(widget.email),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.neutral,
|
||||
icon: Icons.adaptive.share,
|
||||
labelText: context.l10n.sendInvite,
|
||||
labelText: context.strings.sendInvite,
|
||||
isInAlert: true,
|
||||
onTap: () async {
|
||||
// ignore: unawaited_futures
|
||||
shareText(
|
||||
context.l10n.shareTextRecommendUsingEnte,
|
||||
context.strings.shareTextRecommendUsingEnte,
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -106,8 +108,9 @@ class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.neutral,
|
||||
isInAlert: true,
|
||||
labelText:
|
||||
widget.self ? context.l10n.ok : context.l10n.done,
|
||||
labelText: widget.self
|
||||
? context.strings.ok
|
||||
: context.strings.done,
|
||||
),
|
||||
],
|
||||
);
|
||||
@@ -116,7 +119,7 @@ class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
Logger("VerificationID")
|
||||
.severe("failed to end userID", snapshot.error);
|
||||
return Text(
|
||||
context.l10n.somethingWentWrong,
|
||||
context.strings.somethingWentWrong,
|
||||
style: textStyle.bodyMuted,
|
||||
);
|
||||
} else {
|
||||
@@ -135,7 +138,7 @@ class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
|
||||
Future<String> _getPublicKey() async {
|
||||
if (widget.self) {
|
||||
return Configuration.instance.getKeyAttributes()!.publicKey;
|
||||
return widget.config.getKeyAttributes()!.publicKey;
|
||||
}
|
||||
final String? userPublicKey =
|
||||
await UserService.instance.getPublicKey(widget.email);
|
||||
@@ -170,8 +173,8 @@ class _VerifyIdentifyDialogState extends State<VerifyIdentifyDialog> {
|
||||
// ignore: unawaited_futures
|
||||
shareText(
|
||||
widget.self
|
||||
? context.l10n.shareMyVerificationID(verificationID)
|
||||
: context.l10n
|
||||
? context.strings.shareMyVerificationID(verificationID)
|
||||
: context.strings
|
||||
.shareTextConfirmOthersVerificationID(verificationID),
|
||||
);
|
||||
},
|
||||
@@ -1,6 +1,46 @@
|
||||
# Generated by pub
|
||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||
packages:
|
||||
app_links:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links
|
||||
sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
app_links_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_linux
|
||||
sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
app_links_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_platform_interface
|
||||
sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
app_links_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_web
|
||||
sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.7"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -18,7 +58,7 @@ packages:
|
||||
source: hosted
|
||||
version: "2.13.0"
|
||||
bip39:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: bip39
|
||||
sha256: de1ee27ebe7d96b84bb3a04a4132a0a3007dcdd5ad27dd14aa87a29d97c45edc
|
||||
@@ -73,8 +113,16 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
crypto:
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cross_file
|
||||
sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.4+2"
|
||||
crypto:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: crypto
|
||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
||||
@@ -129,6 +177,29 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
dotted_border:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dotted_border
|
||||
sha256: "99b091ec6891ba0c5331fdc2b502993c7c108f898995739a73c6845d71dad70c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
email_validator:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: email_validator
|
||||
sha256: b19aa5d92fdd76fbc65112060c94d45ba855105a28bb6e462de7ff03b12fa1fb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
ente_accounts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../accounts"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_base:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
@@ -137,7 +208,7 @@ packages:
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_configuration:
|
||||
dependency: "direct overridden"
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../configuration"
|
||||
relative: true
|
||||
@@ -159,6 +230,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_lock_screen:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../lock_screen"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_logging:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
@@ -173,6 +251,27 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../strings"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_ui:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../ui"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_utils:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../utils"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
event_bus:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -181,6 +280,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
expandable:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: expandable
|
||||
sha256: "9604d612d4d1146dafa96c6d8eec9c2ff0994658d6d09fed720ab788c7f5afc2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.1"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -213,6 +320,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
file_saver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_saver
|
||||
sha256: "9d93db09bd4da9e43238f9dd485360fc51a5c138eea5ef5f407ec56e58079ac0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.1"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -226,6 +341,86 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_animate:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_animate
|
||||
sha256: "7befe2d3252728afb77aecaaea1dec88a89d35b9b1d2eea6d04479e8af9117b5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.2"
|
||||
flutter_email_sender:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_email_sender
|
||||
sha256: d39eb5e91358fc19ec4050da69accec21f9d5b2b6bcf188aa246327b6ca2352c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
flutter_inappwebview:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview
|
||||
sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.5"
|
||||
flutter_inappwebview_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_android
|
||||
sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.3"
|
||||
flutter_inappwebview_internal_annotations:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_internal_annotations
|
||||
sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
flutter_inappwebview_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_ios
|
||||
sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_macos
|
||||
sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_platform_interface
|
||||
sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0+1"
|
||||
flutter_inappwebview_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_web
|
||||
sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
flutter_inappwebview_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_inappwebview_windows
|
||||
sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.0"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -234,6 +429,28 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
flutter_local_authentication:
|
||||
dependency: transitive
|
||||
description:
|
||||
path: "."
|
||||
ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
resolved-ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
url: "https://github.com/eaceto/flutter_local_authentication"
|
||||
source: git
|
||||
version: "1.2.0"
|
||||
flutter_localizations:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.30"
|
||||
flutter_secure_storage:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -282,6 +499,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_shaders:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_shaders
|
||||
sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -292,6 +517,14 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
fluttertoast:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fluttertoast
|
||||
sha256: "25e51620424d92d3db3832464774a6143b5053f15e382d8ffbfd40b6e795dcf1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.2.12"
|
||||
freezed_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -300,6 +533,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
gtk:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: gtk
|
||||
sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -404,6 +645,46 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
local_auth:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth
|
||||
sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
local_auth_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_android
|
||||
sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.52"
|
||||
local_auth_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_darwin
|
||||
sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.0"
|
||||
local_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_platform_interface
|
||||
sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.10"
|
||||
local_auth_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_windows
|
||||
sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.11"
|
||||
logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -444,6 +725,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
modal_bottom_sheet:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: modal_bottom_sheet
|
||||
sha256: eac66ef8cb0461bf069a38c5eb0fa728cee525a531a8304bd3f7b2185407c67e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
native_dio_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -484,6 +773,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.1"
|
||||
password_strength:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: password_strength
|
||||
sha256: "0e51e3d864e37873a1347e658147f88b66e141ee36c58e19828dc5637961e1ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -540,6 +837,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
pinput:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pinput
|
||||
sha256: c41f42ee301505ae2375ec32871c985d3717bf8aee845620465b286e0140aad2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -564,6 +869,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.9.1"
|
||||
posix:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: posix
|
||||
sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.3"
|
||||
privacy_screen:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: privacy_screen
|
||||
sha256: "2856e3a3ed082061a5cd2a1518f1ce6367c55916fb75e5db72e5983033a1ca54"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.8"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -572,6 +893,46 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
screen_retriever:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_retriever
|
||||
sha256: "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
screen_retriever_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_retriever_linux
|
||||
sha256: f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
screen_retriever_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_retriever_macos
|
||||
sha256: "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
screen_retriever_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_retriever_platform_interface
|
||||
sha256: ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
screen_retriever_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_retriever_windows
|
||||
sha256: "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
sentry:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -588,6 +949,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.14.2"
|
||||
share_plus:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus
|
||||
sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.1.0"
|
||||
share_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_platform_interface
|
||||
sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.0"
|
||||
shared_preferences:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -689,6 +1066,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.1"
|
||||
step_progress_indicator:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: step_progress_indicator
|
||||
sha256: b51bb1fcfc78454359f0658c5a2c21548c3825ebf76e826308e9ca10f383bbb8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -705,6 +1090,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
styled_text:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: styled_text
|
||||
sha256: fd624172cf629751b4f171dd0ecf9acf02a06df3f8a81bb56c0caa4f1df706c3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -730,7 +1123,7 @@ packages:
|
||||
source: hosted
|
||||
version: "0.7.4"
|
||||
tuple:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: tuple
|
||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
||||
@@ -753,6 +1146,78 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
universal_platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: universal_platform
|
||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
url_launcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.2"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.18"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.4"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.1"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.3"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_platform_interface
|
||||
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
url_launcher_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.4"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -809,6 +1274,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.5"
|
||||
window_manager:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: window_manager
|
||||
sha256: "7eb6d6c4164ec08e1bf978d6e733f3cebe792e2a23fb07cbca25c2872bfdbdcd"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.1"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -817,6 +1290,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
xmlstream:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xmlstream
|
||||
sha256: cfc14e3f256997897df9481ae630d94c2d85ada5187ebeb868bb1aabc2c977b4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
sdks:
|
||||
dart: ">=3.8.0 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
||||
@@ -8,17 +8,31 @@ environment:
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
bip39: ^1.0.6
|
||||
collection: ^1.17.0
|
||||
crypto: ^3.0.6
|
||||
dio: ^5.0.0
|
||||
dotted_border: ^3.1.0
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_crypto_dart:
|
||||
git:
|
||||
url: https://github.com/ente-io/ente_crypto_dart.git
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
path: ../ui
|
||||
ente_utils:
|
||||
path: ../utils
|
||||
fast_base58: ^0.2.1
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: ^1.0.0
|
||||
tuple: ^2.0.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_lints: ^2.0.0
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_network
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_network,ente_strings,ente_ui,ente_utils,ente_accounts,ente_lock_screen
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_base:
|
||||
path: ../base
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_events:
|
||||
path: ../events
|
||||
ente_lock_screen:
|
||||
path: ../lock_screen
|
||||
ente_logging:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
path: ../ui
|
||||
ente_utils:
|
||||
path: ../utils
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
"@notAvailable": {
|
||||
"description": "Not available text"
|
||||
},
|
||||
|
||||
"reportABug": "Report a bug",
|
||||
"@reportABug": {
|
||||
"description": "Label for reporting a bug"
|
||||
@@ -779,5 +778,92 @@
|
||||
"endpointUpdatedMessage": "Endpoint updated successfully",
|
||||
"@endpointUpdatedMessage": {
|
||||
"description": "Success message when endpoint is updated"
|
||||
}
|
||||
},
|
||||
"yes": "Yes",
|
||||
"remove": "Remove",
|
||||
"addMore": "Add more",
|
||||
"somethingWentWrong": "Something went wrong",
|
||||
"legacy": "Legacy",
|
||||
"recoveryWarning": "A trusted contact is trying to access your account",
|
||||
"recoveryWarningBody": "{email} is trying to recover your account.",
|
||||
"legacyPageDesc": "Legacy allows trusted contacts to access your account in your absence.",
|
||||
"legacyPageDesc2": "Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.",
|
||||
"legacyAccounts": "Legacy accounts",
|
||||
"trustedContacts": "Trusted contacts",
|
||||
"addTrustedContact": "Add Trusted Contact",
|
||||
"removeInvite": "Remove invite",
|
||||
"rejectRecovery": "Reject recovery",
|
||||
"recoveryInitiated": "Recovery initiated",
|
||||
"recoveryInitiatedDesc": "You can access the account after {days} days. A notification will be sent to {email}.",
|
||||
"@recoveryInitiatedDesc": {
|
||||
"placeholders": {
|
||||
"days": {
|
||||
"type": "int",
|
||||
"example": "30"
|
||||
},
|
||||
"email": {
|
||||
"type": "String",
|
||||
"example": "me@example.com"
|
||||
}
|
||||
}
|
||||
},
|
||||
"removeYourselfAsTrustedContact": "Remove yourself as trusted contact",
|
||||
"declineTrustInvite": "Decline Invite",
|
||||
"cancelAccountRecovery": "Cancel recovery",
|
||||
"recoveryAccount": "Recover account",
|
||||
"cancelAccountRecoveryBody": "Are you sure you want to cancel recovery?",
|
||||
"startAccountRecoveryTitle": "Start recovery",
|
||||
"whyAddTrustContact": "Trusted contact can help in recovering your data.",
|
||||
"recoveryReady": "You can now recover {email}'s account by setting a new password.",
|
||||
"@recoveryReady": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String",
|
||||
"example": "me@example.com"
|
||||
}
|
||||
}
|
||||
},
|
||||
"warning": "Warning",
|
||||
"proceed": "Proceed",
|
||||
"done": "Done",
|
||||
"enterEmail": "Enter email",
|
||||
"verifyIDLabel": "Verify",
|
||||
"invalidEmailAddress": "Invalid email address",
|
||||
"enterValidEmail": "Please enter a valid email address.",
|
||||
"addANewEmail": "Add a new email",
|
||||
"orPickAnExistingOne": "Or pick an existing one",
|
||||
"shareTextRecommendUsingEnte": "Download Ente so we can easily share original quality files\n\nhttps://ente.io",
|
||||
"sendInvite": "Send invite",
|
||||
"trustedInviteBody": "You have been invited to be a legacy contact by {email}.",
|
||||
"verifyEmailID": "Verify {email}",
|
||||
"thisIsYourVerificationId": "This is your Verification ID",
|
||||
"someoneSharingAlbumsWithYouShouldSeeTheSameId": "Someone sharing albums with you should see the same ID on their device.",
|
||||
"howToViewShareeVerificationID": "Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.",
|
||||
"thisIsPersonVerificationId": "This is {email}'s Verification ID",
|
||||
"@thisIsPersonVerificationId": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String",
|
||||
"example": "someone@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"confirmAddingTrustedContact": "You are about to add {email} as a trusted contact. They will be able to recover your account if you are absent for {numOfDays} days.",
|
||||
"@confirmAddingTrustedContact": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String",
|
||||
"example": "me@example.com"
|
||||
},
|
||||
"numOfDays": {
|
||||
"type": "int",
|
||||
"example": "30"
|
||||
}
|
||||
}
|
||||
},
|
||||
"youCannotShareWithYourself": "You cannot share with yourself",
|
||||
"emailNoEnteAccount": "{email} does not have an Ente account.\n\nSend them an invite to share files.",
|
||||
"shareMyVerificationID": "Here's my verification ID: {verificationID} for ente.io.",
|
||||
"shareTextConfirmOthersVerificationID": "Hey, can you confirm that this is your ente.io verification ID: {verificationID}",
|
||||
"inviteToEnte": "Invite to Ente"
|
||||
}
|
||||
|
||||
@@ -1294,6 +1294,288 @@ abstract class StringsLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'Endpoint updated successfully'**
|
||||
String get endpointUpdatedMessage;
|
||||
|
||||
/// No description provided for @yes.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Yes'**
|
||||
String get yes;
|
||||
|
||||
/// No description provided for @remove.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove'**
|
||||
String get remove;
|
||||
|
||||
/// No description provided for @addMore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add more'**
|
||||
String get addMore;
|
||||
|
||||
/// No description provided for @somethingWentWrong.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Something went wrong'**
|
||||
String get somethingWentWrong;
|
||||
|
||||
/// No description provided for @legacy.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Legacy'**
|
||||
String get legacy;
|
||||
|
||||
/// No description provided for @recoveryWarning.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A trusted contact is trying to access your account'**
|
||||
String get recoveryWarning;
|
||||
|
||||
/// No description provided for @recoveryWarningBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{email} is trying to recover your account.'**
|
||||
String recoveryWarningBody(Object email);
|
||||
|
||||
/// No description provided for @legacyPageDesc.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Legacy allows trusted contacts to access your account in your absence.'**
|
||||
String get legacyPageDesc;
|
||||
|
||||
/// No description provided for @legacyPageDesc2.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.'**
|
||||
String get legacyPageDesc2;
|
||||
|
||||
/// No description provided for @legacyAccounts.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Legacy accounts'**
|
||||
String get legacyAccounts;
|
||||
|
||||
/// No description provided for @trustedContacts.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Trusted contacts'**
|
||||
String get trustedContacts;
|
||||
|
||||
/// No description provided for @addTrustedContact.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add Trusted Contact'**
|
||||
String get addTrustedContact;
|
||||
|
||||
/// No description provided for @removeInvite.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove invite'**
|
||||
String get removeInvite;
|
||||
|
||||
/// No description provided for @rejectRecovery.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reject recovery'**
|
||||
String get rejectRecovery;
|
||||
|
||||
/// No description provided for @recoveryInitiated.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Recovery initiated'**
|
||||
String get recoveryInitiated;
|
||||
|
||||
/// No description provided for @recoveryInitiatedDesc.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You can access the account after {days} days. A notification will be sent to {email}.'**
|
||||
String recoveryInitiatedDesc(int days, String email);
|
||||
|
||||
/// No description provided for @removeYourselfAsTrustedContact.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Remove yourself as trusted contact'**
|
||||
String get removeYourselfAsTrustedContact;
|
||||
|
||||
/// No description provided for @declineTrustInvite.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Decline Invite'**
|
||||
String get declineTrustInvite;
|
||||
|
||||
/// No description provided for @cancelAccountRecovery.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cancel recovery'**
|
||||
String get cancelAccountRecovery;
|
||||
|
||||
/// No description provided for @recoveryAccount.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Recover account'**
|
||||
String get recoveryAccount;
|
||||
|
||||
/// No description provided for @cancelAccountRecoveryBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Are you sure you want to cancel recovery?'**
|
||||
String get cancelAccountRecoveryBody;
|
||||
|
||||
/// No description provided for @startAccountRecoveryTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Start recovery'**
|
||||
String get startAccountRecoveryTitle;
|
||||
|
||||
/// No description provided for @whyAddTrustContact.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Trusted contact can help in recovering your data.'**
|
||||
String get whyAddTrustContact;
|
||||
|
||||
/// No description provided for @recoveryReady.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You can now recover {email}\'s account by setting a new password.'**
|
||||
String recoveryReady(String email);
|
||||
|
||||
/// No description provided for @warning.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Warning'**
|
||||
String get warning;
|
||||
|
||||
/// No description provided for @proceed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Proceed'**
|
||||
String get proceed;
|
||||
|
||||
/// No description provided for @done.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Done'**
|
||||
String get done;
|
||||
|
||||
/// No description provided for @enterEmail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Enter email'**
|
||||
String get enterEmail;
|
||||
|
||||
/// No description provided for @verifyIDLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Verify'**
|
||||
String get verifyIDLabel;
|
||||
|
||||
/// No description provided for @invalidEmailAddress.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Invalid email address'**
|
||||
String get invalidEmailAddress;
|
||||
|
||||
/// No description provided for @enterValidEmail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Please enter a valid email address.'**
|
||||
String get enterValidEmail;
|
||||
|
||||
/// No description provided for @addANewEmail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add a new email'**
|
||||
String get addANewEmail;
|
||||
|
||||
/// No description provided for @orPickAnExistingOne.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Or pick an existing one'**
|
||||
String get orPickAnExistingOne;
|
||||
|
||||
/// No description provided for @shareTextRecommendUsingEnte.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Download Ente so we can easily share original quality files\n\nhttps://ente.io'**
|
||||
String get shareTextRecommendUsingEnte;
|
||||
|
||||
/// No description provided for @sendInvite.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send invite'**
|
||||
String get sendInvite;
|
||||
|
||||
/// No description provided for @trustedInviteBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You have been invited to be a legacy contact by {email}.'**
|
||||
String trustedInviteBody(Object email);
|
||||
|
||||
/// No description provided for @verifyEmailID.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Verify {email}'**
|
||||
String verifyEmailID(Object email);
|
||||
|
||||
/// No description provided for @thisIsYourVerificationId.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This is your Verification ID'**
|
||||
String get thisIsYourVerificationId;
|
||||
|
||||
/// No description provided for @someoneSharingAlbumsWithYouShouldSeeTheSameId.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Someone sharing albums with you should see the same ID on their device.'**
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId;
|
||||
|
||||
/// No description provided for @howToViewShareeVerificationID.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.'**
|
||||
String get howToViewShareeVerificationID;
|
||||
|
||||
/// No description provided for @thisIsPersonVerificationId.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This is {email}\'s Verification ID'**
|
||||
String thisIsPersonVerificationId(String email);
|
||||
|
||||
/// No description provided for @confirmAddingTrustedContact.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You are about to add {email} as a trusted contact. They will be able to recover your account if you are absent for {numOfDays} days.'**
|
||||
String confirmAddingTrustedContact(String email, int numOfDays);
|
||||
|
||||
/// No description provided for @youCannotShareWithYourself.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You cannot share with yourself'**
|
||||
String get youCannotShareWithYourself;
|
||||
|
||||
/// No description provided for @emailNoEnteAccount.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{email} does not have an Ente account.\n\nSend them an invite to share files.'**
|
||||
String emailNoEnteAccount(Object email);
|
||||
|
||||
/// No description provided for @shareMyVerificationID.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Here\'s my verification ID: {verificationID} for ente.io.'**
|
||||
String shareMyVerificationID(Object verificationID);
|
||||
|
||||
/// No description provided for @shareTextConfirmOthersVerificationID.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hey, can you confirm that this is your ente.io verification ID: {verificationID}'**
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID);
|
||||
|
||||
/// No description provided for @inviteToEnte.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Invite to Ente'**
|
||||
String get inviteToEnte;
|
||||
}
|
||||
|
||||
class _StringsLocalizationsDelegate
|
||||
|
||||
@@ -622,4 +622,174 @@ class StringsLocalizationsAr extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'حُدِّثَت نقطة الطرف بنجاح';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsBe extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -630,4 +630,174 @@ class StringsLocalizationsBg extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Крайната точка е актуализирана успешно';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -632,4 +632,174 @@ class StringsLocalizationsCa extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Extrem actualitzat correctament';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -624,4 +624,174 @@ class StringsLocalizationsCs extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Koncový bod byl úspěšně aktualizován';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsDa extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint opdateret';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -633,4 +633,174 @@ class StringsLocalizationsDe extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpunkt erfolgreich aktualisiert';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -634,4 +634,174 @@ class StringsLocalizationsEl extends StringsLocalizations {
|
||||
@override
|
||||
String get endpointUpdatedMessage =>
|
||||
'Το τερματκό σημείο ενημερώθηκε επιτυχώς';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsEn extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -632,4 +632,174 @@ class StringsLocalizationsEs extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint actualizado con éxito';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsEt extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsFa extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -624,4 +624,174 @@ class StringsLocalizationsFi extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -635,4 +635,174 @@ class StringsLocalizationsFr extends StringsLocalizations {
|
||||
@override
|
||||
String get endpointUpdatedMessage =>
|
||||
'Point de terminaison mis à jour avec succès';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -624,4 +624,174 @@ class StringsLocalizationsGu extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -618,4 +618,174 @@ class StringsLocalizationsHe extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -624,4 +624,174 @@ class StringsLocalizationsHi extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -627,4 +627,174 @@ class StringsLocalizationsHu extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'A végpont sikeresen frissítve';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -627,4 +627,174 @@ class StringsLocalizationsId extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint berhasil diubah';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -631,4 +631,174 @@ class StringsLocalizationsIt extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint aggiornato con successo';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -600,4 +600,174 @@ class StringsLocalizationsJa extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'エンドポイントの更新に成功しました';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsKa extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsKm extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -601,4 +601,174 @@ class StringsLocalizationsKo extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => '엔드포인트가 성공적으로 업데이트됨';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -627,4 +627,174 @@ class StringsLocalizationsLt extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Galutinis taškas sėkmingai atnaujintas';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsLv extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -624,4 +624,174 @@ class StringsLocalizationsMl extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -629,4 +629,174 @@ class StringsLocalizationsNl extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Eindpunt met succes bijgewerkt';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -627,4 +627,174 @@ class StringsLocalizationsPl extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Punkt końcowy zaktualizowany pomyślnie';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsPt extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'O endpoint foi atualizado';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -628,4 +628,174 @@ class StringsLocalizationsRo extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -629,4 +629,174 @@ class StringsLocalizationsRu extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Конечная точка успешно обновлена';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsSk extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint úspešne aktualizovaný';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -626,4 +626,174 @@ class StringsLocalizationsSl extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint posodobljen uspešno';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -627,4 +627,174 @@ class StringsLocalizationsSr extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Крајна тачка успешно ажурирана';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -625,4 +625,174 @@ class StringsLocalizationsSv extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Slutpunkten har uppdaterats';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -623,4 +623,174 @@ class StringsLocalizationsTi extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Endpoint updated successfully';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -629,4 +629,174 @@ class StringsLocalizationsTr extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Uç nokta başarıyla güncellendi';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -631,4 +631,174 @@ class StringsLocalizationsUk extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Точка входу успішно оновлена';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -625,4 +625,174 @@ class StringsLocalizationsVi extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => 'Cập nhật điểm cuối thành công';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
@@ -590,6 +590,176 @@ class StringsLocalizationsZh extends StringsLocalizations {
|
||||
|
||||
@override
|
||||
String get endpointUpdatedMessage => '端点更新成功';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get remove => 'Remove';
|
||||
|
||||
@override
|
||||
String get addMore => 'Add more';
|
||||
|
||||
@override
|
||||
String get somethingWentWrong => 'Something went wrong';
|
||||
|
||||
@override
|
||||
String get legacy => 'Legacy';
|
||||
|
||||
@override
|
||||
String get recoveryWarning =>
|
||||
'A trusted contact is trying to access your account';
|
||||
|
||||
@override
|
||||
String recoveryWarningBody(Object email) {
|
||||
return '$email is trying to recover your account.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get legacyPageDesc =>
|
||||
'Legacy allows trusted contacts to access your account in your absence.';
|
||||
|
||||
@override
|
||||
String get legacyPageDesc2 =>
|
||||
'Trusted contacts can initiate account recovery, and if not blocked within 30 days, reset your password and access your account.';
|
||||
|
||||
@override
|
||||
String get legacyAccounts => 'Legacy accounts';
|
||||
|
||||
@override
|
||||
String get trustedContacts => 'Trusted contacts';
|
||||
|
||||
@override
|
||||
String get addTrustedContact => 'Add Trusted Contact';
|
||||
|
||||
@override
|
||||
String get removeInvite => 'Remove invite';
|
||||
|
||||
@override
|
||||
String get rejectRecovery => 'Reject recovery';
|
||||
|
||||
@override
|
||||
String get recoveryInitiated => 'Recovery initiated';
|
||||
|
||||
@override
|
||||
String recoveryInitiatedDesc(int days, String email) {
|
||||
return 'You can access the account after $days days. A notification will be sent to $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get removeYourselfAsTrustedContact =>
|
||||
'Remove yourself as trusted contact';
|
||||
|
||||
@override
|
||||
String get declineTrustInvite => 'Decline Invite';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecovery => 'Cancel recovery';
|
||||
|
||||
@override
|
||||
String get recoveryAccount => 'Recover account';
|
||||
|
||||
@override
|
||||
String get cancelAccountRecoveryBody =>
|
||||
'Are you sure you want to cancel recovery?';
|
||||
|
||||
@override
|
||||
String get startAccountRecoveryTitle => 'Start recovery';
|
||||
|
||||
@override
|
||||
String get whyAddTrustContact =>
|
||||
'Trusted contact can help in recovering your data.';
|
||||
|
||||
@override
|
||||
String recoveryReady(String email) {
|
||||
return 'You can now recover $email\'s account by setting a new password.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get warning => 'Warning';
|
||||
|
||||
@override
|
||||
String get proceed => 'Proceed';
|
||||
|
||||
@override
|
||||
String get done => 'Done';
|
||||
|
||||
@override
|
||||
String get enterEmail => 'Enter email';
|
||||
|
||||
@override
|
||||
String get verifyIDLabel => 'Verify';
|
||||
|
||||
@override
|
||||
String get invalidEmailAddress => 'Invalid email address';
|
||||
|
||||
@override
|
||||
String get enterValidEmail => 'Please enter a valid email address.';
|
||||
|
||||
@override
|
||||
String get addANewEmail => 'Add a new email';
|
||||
|
||||
@override
|
||||
String get orPickAnExistingOne => 'Or pick an existing one';
|
||||
|
||||
@override
|
||||
String get shareTextRecommendUsingEnte =>
|
||||
'Download Ente so we can easily share original quality files\n\nhttps://ente.io';
|
||||
|
||||
@override
|
||||
String get sendInvite => 'Send invite';
|
||||
|
||||
@override
|
||||
String trustedInviteBody(Object email) {
|
||||
return 'You have been invited to be a legacy contact by $email.';
|
||||
}
|
||||
|
||||
@override
|
||||
String verifyEmailID(Object email) {
|
||||
return 'Verify $email';
|
||||
}
|
||||
|
||||
@override
|
||||
String get thisIsYourVerificationId => 'This is your Verification ID';
|
||||
|
||||
@override
|
||||
String get someoneSharingAlbumsWithYouShouldSeeTheSameId =>
|
||||
'Someone sharing albums with you should see the same ID on their device.';
|
||||
|
||||
@override
|
||||
String get howToViewShareeVerificationID =>
|
||||
'Please ask them to long-press their email address on the settings screen, and verify that the IDs on both devices match.';
|
||||
|
||||
@override
|
||||
String thisIsPersonVerificationId(String email) {
|
||||
return 'This is $email\'s Verification ID';
|
||||
}
|
||||
|
||||
@override
|
||||
String confirmAddingTrustedContact(String email, int numOfDays) {
|
||||
return 'You are about to add $email as a trusted contact. They will be able to recover your account if you are absent for $numOfDays days.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get youCannotShareWithYourself => 'You cannot share with yourself';
|
||||
|
||||
@override
|
||||
String emailNoEnteAccount(Object email) {
|
||||
return '$email does not have an Ente account.\n\nSend them an invite to share files.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareMyVerificationID(Object verificationID) {
|
||||
return 'Here\'s my verification ID: $verificationID for ente.io.';
|
||||
}
|
||||
|
||||
@override
|
||||
String shareTextConfirmOthersVerificationID(Object verificationID) {
|
||||
return 'Hey, can you confirm that this is your ente.io verification ID: $verificationID';
|
||||
}
|
||||
|
||||
@override
|
||||
String get inviteToEnte => 'Invite to Ente';
|
||||
}
|
||||
|
||||
/// The translations for Chinese, as used in China (`zh_CN`).
|
||||
|
||||
265
mobile/packages/ui/lib/components/notification_widget.dart
Normal file
265
mobile/packages/ui/lib/components/notification_widget.dart
Normal file
@@ -0,0 +1,265 @@
|
||||
import "package:ente_ui/components/buttons/icon_button_widget.dart";
|
||||
import "package:ente_ui/theme/colors.dart";
|
||||
import "package:ente_ui/theme/ente_theme.dart";
|
||||
import "package:ente_ui/theme/ente_theme_data.dart";
|
||||
import "package:ente_ui/theme/text_style.dart";
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_animate/flutter_animate.dart";
|
||||
|
||||
// CreateNotificationType enum
|
||||
enum NotificationType {
|
||||
warning,
|
||||
banner,
|
||||
greenBanner,
|
||||
goldenBanner,
|
||||
notice,
|
||||
}
|
||||
|
||||
class NotificationWidget extends StatelessWidget {
|
||||
final IconData startIcon;
|
||||
final IconData? actionIcon;
|
||||
final Widget? actionWidget;
|
||||
final String text;
|
||||
final String? subText;
|
||||
final GestureTapCallback onTap;
|
||||
final NotificationType type;
|
||||
final bool isBlackFriday;
|
||||
final TextStyle? mainTextStyle;
|
||||
|
||||
const NotificationWidget({
|
||||
super.key,
|
||||
required this.startIcon,
|
||||
required this.actionIcon,
|
||||
required this.text,
|
||||
required this.onTap,
|
||||
this.mainTextStyle,
|
||||
this.isBlackFriday = false,
|
||||
this.subText,
|
||||
this.actionWidget,
|
||||
this.type = NotificationType.warning,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
EnteTextTheme textTheme = getEnteTextTheme(context);
|
||||
TextStyle mainTextStyle = this.mainTextStyle ?? darkTextTheme.bodyBold;
|
||||
TextStyle subTextStyle = darkTextTheme.miniMuted;
|
||||
LinearGradient? backgroundGradient;
|
||||
Color? backgroundColor;
|
||||
EnteColorScheme strokeColorScheme = darkScheme;
|
||||
List<BoxShadow>? boxShadow;
|
||||
switch (type) {
|
||||
case NotificationType.warning:
|
||||
backgroundColor = warning500;
|
||||
break;
|
||||
case NotificationType.banner:
|
||||
textTheme = getEnteTextTheme(context);
|
||||
backgroundColor = colorScheme.backgroundElevated2;
|
||||
mainTextStyle = textTheme.bodyBold;
|
||||
subTextStyle = textTheme.miniMuted;
|
||||
strokeColorScheme = colorScheme;
|
||||
boxShadow = [
|
||||
BoxShadow(color: Colors.black.withValues(alpha: 0.25), blurRadius: 1),
|
||||
];
|
||||
break;
|
||||
case NotificationType.goldenBanner:
|
||||
backgroundGradient = LinearGradient(
|
||||
colors: [colorScheme.golden700, colorScheme.golden500],
|
||||
stops: const [0.25, 1],
|
||||
begin: Alignment.bottomCenter,
|
||||
end: Alignment.topCenter,
|
||||
);
|
||||
boxShadow = Theme.of(context).colorScheme.enteTheme.shadowMenu;
|
||||
break;
|
||||
case NotificationType.greenBanner:
|
||||
backgroundGradient = LinearGradient(
|
||||
colors: [
|
||||
getEnteColorScheme(context).primary700,
|
||||
getEnteColorScheme(context).primary500,
|
||||
],
|
||||
stops: const [0.25, 1],
|
||||
begin: Alignment.bottomCenter,
|
||||
end: Alignment.topCenter,
|
||||
);
|
||||
boxShadow = Theme.of(context).colorScheme.enteTheme.shadowMenu;
|
||||
break;
|
||||
case NotificationType.notice:
|
||||
backgroundColor = colorScheme.backgroundElevated2;
|
||||
mainTextStyle = textTheme.bodyBold;
|
||||
subTextStyle = textTheme.miniMuted;
|
||||
strokeColorScheme = colorScheme;
|
||||
boxShadow = Theme.of(context).colorScheme.enteTheme.shadowMenu;
|
||||
break;
|
||||
}
|
||||
return Center(
|
||||
child: GestureDetector(
|
||||
onTap: onTap,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(8),
|
||||
),
|
||||
boxShadow: boxShadow,
|
||||
color: backgroundColor,
|
||||
gradient: backgroundGradient,
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 12,
|
||||
vertical: actionWidget != null ? 12 : 8,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
isBlackFriday
|
||||
? Icon(
|
||||
startIcon,
|
||||
size: 36,
|
||||
color: strokeColorScheme.strokeBase,
|
||||
)
|
||||
.animate(
|
||||
onPlay: (controller) =>
|
||||
controller.repeat(reverse: true),
|
||||
delay: 2000.ms,
|
||||
)
|
||||
.shake(
|
||||
duration: 500.ms,
|
||||
hz: 6,
|
||||
delay: 1600.ms,
|
||||
)
|
||||
.scale(
|
||||
duration: 500.ms,
|
||||
begin: const Offset(0.9, 0.9),
|
||||
end: const Offset(1.1, 1.1),
|
||||
delay: 1600.ms,
|
||||
// curve: Curves.easeInOut,
|
||||
)
|
||||
: Icon(
|
||||
startIcon,
|
||||
size: 36,
|
||||
color: strokeColorScheme.strokeBase,
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
text,
|
||||
style: mainTextStyle,
|
||||
textAlign: TextAlign.left,
|
||||
),
|
||||
subText != null
|
||||
? Text(
|
||||
subText!,
|
||||
style: subTextStyle,
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
if (actionWidget != null)
|
||||
actionWidget!
|
||||
else if (actionIcon != null)
|
||||
IconButtonWidget(
|
||||
icon: actionIcon!,
|
||||
iconButtonType: IconButtonType.rounded,
|
||||
iconColor: strokeColorScheme.strokeBase,
|
||||
defaultColor: strokeColorScheme.fillFaint,
|
||||
pressedColor: strokeColorScheme.fillMuted,
|
||||
onTap: onTap,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class NotificationTipWidget extends StatelessWidget {
|
||||
final String name;
|
||||
const NotificationTipWidget(this.name, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final textTheme = getEnteTextTheme(context);
|
||||
return Container(
|
||||
padding: const EdgeInsets.fromLTRB(16, 12, 12, 12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: colorScheme.strokeFaint),
|
||||
borderRadius: const BorderRadius.all(Radius.circular(4)),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 12,
|
||||
child: Text(
|
||||
name,
|
||||
style: textTheme.miniFaint,
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
flex: 2,
|
||||
child: Icon(
|
||||
Icons.tips_and_updates_outlined,
|
||||
color: colorScheme.strokeFaint,
|
||||
size: 36,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class NotificationNoteWidget extends StatelessWidget {
|
||||
final String note;
|
||||
const NotificationNoteWidget(this.note, {super.key});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
final textTheme = getEnteTextTheme(context);
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: colorScheme.strokeMuted),
|
||||
color: colorScheme.backgroundBase,
|
||||
borderRadius: const BorderRadius.all(Radius.circular(8)),
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.info,
|
||||
color: colorScheme.strokeMuted,
|
||||
size: 36,
|
||||
),
|
||||
const SizedBox(
|
||||
width: 12,
|
||||
),
|
||||
Flexible(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Note",
|
||||
style: textTheme.miniFaint,
|
||||
),
|
||||
const SizedBox(height: 2),
|
||||
Text(
|
||||
note,
|
||||
style: textTheme.smallMuted,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,29 @@
|
||||
import "dart:async";
|
||||
|
||||
import "package:ente_strings/ente_strings.dart";
|
||||
import "package:ente_ui/components/buttons/button_widget.dart";
|
||||
import "package:ente_ui/components/buttons/models/button_type.dart";
|
||||
import "package:ente_ui/components/dialog_widget.dart";
|
||||
import "package:ente_utils/share_utils.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:locker/l10n/l10n.dart";
|
||||
|
||||
Future<void> showInviteDialog(BuildContext context, String email) async {
|
||||
await showDialogWidget(
|
||||
context: context,
|
||||
title: context.l10n.inviteToEnte,
|
||||
title: context.strings.inviteToEnte,
|
||||
icon: Icons.info_outline,
|
||||
body: context.l10n.emailNoEnteAccount(email),
|
||||
body: context.strings.emailNoEnteAccount(email),
|
||||
isDismissible: true,
|
||||
buttons: [
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.neutral,
|
||||
icon: Icons.adaptive.share,
|
||||
labelText: context.l10n.sendInvite,
|
||||
labelText: context.strings.sendInvite,
|
||||
isInAlert: true,
|
||||
onTap: () async {
|
||||
unawaited(
|
||||
shareText(
|
||||
context.l10n.shareTextRecommendUsingEnte,
|
||||
context.strings.shareTextRecommendUsingEnte,
|
||||
),
|
||||
);
|
||||
},
|
||||
@@ -161,6 +161,10 @@ class EnteColorScheme extends ThemeExtension<EnteColorScheme> {
|
||||
//other colors
|
||||
final List<Color> avatarColors;
|
||||
|
||||
//golden colors
|
||||
final Color golden700;
|
||||
final Color golden500;
|
||||
|
||||
bool get isLightTheme => backgroundBase == backgroundBaseLight;
|
||||
|
||||
const EnteColorScheme(
|
||||
@@ -231,6 +235,8 @@ class EnteColorScheme extends ThemeExtension<EnteColorScheme> {
|
||||
this.codeCardBackgroundColor = _defaultCodeCardBackgroundColor,
|
||||
this.primaryColor = _defaultPrimaryColor,
|
||||
this.surface = _defaultPrimaryColor,
|
||||
this.golden700 = _golden700,
|
||||
this.golden500 = _golden500,
|
||||
});
|
||||
|
||||
/// Factory constructor for light theme with customizable primary colors
|
||||
@@ -776,6 +782,9 @@ const Color _defaultSearchResultsBackgroundColor =
|
||||
// Default Code Card Background Color
|
||||
const Color _defaultCodeCardBackgroundColor = Color.fromRGBO(246, 246, 246, 1);
|
||||
|
||||
|
||||
const Color _golden700 = Color(0xFFFDB816);
|
||||
const Color _golden500 = Color(0xFFFFC336);
|
||||
/// Utility class to help apps create custom color schemes with their brand colors.
|
||||
///
|
||||
/// This class provides convenient methods to generate complete color schemes
|
||||
@@ -899,7 +908,7 @@ const List<Color> avatarLight = [
|
||||
Color.fromRGBO(50, 82, 136, 1),
|
||||
Color.fromRGBO(133, 180, 224, 1),
|
||||
Color.fromRGBO(193, 163, 163, 1),
|
||||
Color.fromRGBO(225, 160, 89, 1), // Fixed duplicate
|
||||
Color.fromRGBO(225, 160, 89, 1), // Fixed duplicate
|
||||
Color.fromRGBO(66, 97, 101, 1),
|
||||
Color.fromRGBO(107, 119, 178, 1), // Fixed duplicate
|
||||
Color.fromRGBO(149, 127, 239, 1), // Fixed duplicate
|
||||
|
||||
@@ -1,6 +1,38 @@
|
||||
# Generated by pub
|
||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||
packages:
|
||||
app_links:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links
|
||||
sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
app_links_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_linux
|
||||
sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
app_links_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_platform_interface
|
||||
sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
app_links_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_web
|
||||
sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -73,6 +105,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
cronet_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cronet_http
|
||||
sha256: "1b99ad5ae81aa9d2f12900e5f17d3681f3828629bb7f7fe7ad88076a34209840"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -97,6 +137,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
cupertino_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cupertino_http
|
||||
sha256: "72187f715837290a63479a5b0ae709f4fedad0ed6bd0441c275eceaa02d5abae"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
device_info_plus:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -129,6 +177,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
dotted_border:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dotted_border
|
||||
sha256: "99b091ec6891ba0c5331fdc2b502993c7c108f898995739a73c6845d71dad70c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
email_validator:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -137,6 +193,13 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
ente_accounts:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../accounts"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_base:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -167,6 +230,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_lock_screen:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../lock_screen"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -174,6 +244,20 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_network:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../network"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_sharing:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../sharing"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -212,6 +296,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
fast_base58:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fast_base58
|
||||
sha256: "611f65633b734f27a850b51371b3eba993a5165650e12e8e7b02959f3768ba06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -249,6 +341,14 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_animate:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_animate
|
||||
sha256: "7befe2d3252728afb77aecaaea1dec88a89d35b9b1d2eea6d04479e8af9117b5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.2"
|
||||
flutter_email_sender:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -329,11 +429,28 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
flutter_local_authentication:
|
||||
dependency: transitive
|
||||
description:
|
||||
path: "."
|
||||
ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
resolved-ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
url: "https://github.com/eaceto/flutter_local_authentication"
|
||||
source: git
|
||||
version: "1.2.0"
|
||||
flutter_localizations:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.30"
|
||||
flutter_secure_storage:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -382,6 +499,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_shaders:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_shaders
|
||||
sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -408,6 +533,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
gtk:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: gtk
|
||||
sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -440,6 +573,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
http_profile:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_profile
|
||||
sha256: "7e679e355b09aaee2ab5010915c932cce3f2d1c11c3b2dc177891687014ffa78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0"
|
||||
intl:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -448,6 +589,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.20.2"
|
||||
jni:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: jni
|
||||
sha256: d2c361082d554d4593c3012e26f6b188f902acd291330f13d6427641a92b3da1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.14.2"
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -496,6 +645,46 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
local_auth:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth
|
||||
sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
local_auth_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_android
|
||||
sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.52"
|
||||
local_auth_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_darwin
|
||||
sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.0"
|
||||
local_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_platform_interface
|
||||
sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.10"
|
||||
local_auth_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_windows
|
||||
sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.11"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -544,6 +733,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
native_dio_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: native_dio_adapter
|
||||
sha256: "1c51bd42027861d27ccad462ba0903f5e3197461cc6d59a0bb8658cb5ad7bd01"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
objective_c:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: objective_c
|
||||
sha256: "9f034ba1eeca53ddb339bc8f4813cb07336a849cd735559b60cdc068ecce2dc7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.1.0"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_config
|
||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
package_info_plus:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -560,6 +773,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.1"
|
||||
password_strength:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: password_strength
|
||||
sha256: "0e51e3d864e37873a1347e658147f88b66e141ee36c58e19828dc5637961e1ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -616,6 +837,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
pinput:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pinput
|
||||
sha256: c41f42ee301505ae2375ec32871c985d3717bf8aee845620465b286e0140aad2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -648,6 +877,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.3"
|
||||
privacy_screen:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: privacy_screen
|
||||
sha256: "2856e3a3ed082061a5cd2a1518f1ce6367c55916fb75e5db72e5983033a1ca54"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.8"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
screen_retriever:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -821,6 +1066,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.1"
|
||||
step_progress_indicator:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: step_progress_indicator
|
||||
sha256: b51bb1fcfc78454359f0658c5a2c21548c3825ebf76e826308e9ca10f383bbb8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -837,6 +1090,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
styled_text:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: styled_text
|
||||
sha256: fd624172cf629751b4f171dd0ecf9acf02a06df3f8a81bb56c0caa4f1df706c3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -877,6 +1138,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
ua_client_hints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ua_client_hints
|
||||
sha256: "1b8759a46bfeab355252881df27f2604c01bded86aa2b578869fb1b638b23118"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
universal_platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: universal_platform
|
||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
url_launcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -973,6 +1250,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1005,6 +1290,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
xmlstream:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xmlstream
|
||||
sha256: cfc14e3f256997897df9481ae630d94c2d85ada5187ebeb868bb1aabc2c977b4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
sdks:
|
||||
dart: ">=3.8.0 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
||||
@@ -22,10 +22,11 @@ dependencies:
|
||||
expandable: ^5.0.1
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_animate: ^4.5.2
|
||||
flutter_inappwebview: ^6.1.4
|
||||
fluttertoast: ^8.1.1
|
||||
modal_bottom_sheet: ^3.0.0
|
||||
shared_preferences: ^2.5.3
|
||||
shared_preferences: ^2.5.3
|
||||
window_manager: ^0.5.0
|
||||
|
||||
dev_dependencies:
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_strings,ente_utils
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_strings,ente_utils,ente_network,ente_sharing,ente_accounts,ente_lock_screen
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_base:
|
||||
path: ../base
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_events:
|
||||
path: ../events
|
||||
ente_lock_screen:
|
||||
path: ../lock_screen
|
||||
ente_logging:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_utils:
|
||||
|
||||
13
mobile/packages/utils/lib/extensions/user_extension.dart
Normal file
13
mobile/packages/utils/lib/extensions/user_extension.dart
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
import "package:ente_sharing/models/user.dart";
|
||||
|
||||
extension UserExtension on User {
|
||||
//Some initial users have name in name field.
|
||||
String? get displayName =>
|
||||
// ignore: deprecated_member_use_from_same_package, deprecated_member_use
|
||||
((name?.isEmpty ?? true) ? null : name);
|
||||
|
||||
String get nameOrEmail {
|
||||
return email.substring(0, email.indexOf("@"));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,38 @@
|
||||
# Generated by pub
|
||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||
packages:
|
||||
app_links:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links
|
||||
sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.4.1"
|
||||
app_links_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_linux
|
||||
sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
app_links_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_platform_interface
|
||||
sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
app_links_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: app_links_web
|
||||
sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
archive:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -73,6 +105,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
cronet_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cronet_http
|
||||
sha256: df26af0de7c4eff46c53c190b5590e22457bfce6ea679aedb1e6326197f27d6f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -97,6 +137,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
cupertino_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cupertino_http
|
||||
sha256: "8fb9e2c36d0732d9d96abd76683406b57e78a2514e27c962e0c603dbe6f2e3f8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
device_info_plus:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -129,6 +177,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
dotted_border:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dotted_border
|
||||
sha256: "99b091ec6891ba0c5331fdc2b502993c7c108f898995739a73c6845d71dad70c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
email_validator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -137,6 +193,13 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
ente_accounts:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../accounts"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_base:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
@@ -167,6 +230,13 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_lock_screen:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../lock_screen"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -174,6 +244,20 @@ packages:
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_network:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: "../network"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_sharing:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "../sharing"
|
||||
relative: true
|
||||
source: path
|
||||
version: "1.0.0"
|
||||
ente_strings:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -212,6 +296,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
fast_base58:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fast_base58
|
||||
sha256: "611f65633b734f27a850b51371b3eba993a5165650e12e8e7b02959f3768ba06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -249,6 +341,14 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_animate:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_animate
|
||||
sha256: "7befe2d3252728afb77aecaaea1dec88a89d35b9b1d2eea6d04479e8af9117b5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.2"
|
||||
flutter_email_sender:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -329,11 +429,28 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
flutter_local_authentication:
|
||||
dependency: transitive
|
||||
description:
|
||||
path: "."
|
||||
ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
resolved-ref: "1ac346a04592a05fd75acccf2e01fa3c7e955d96"
|
||||
url: "https://github.com/eaceto/flutter_local_authentication"
|
||||
source: git
|
||||
version: "1.2.0"
|
||||
flutter_localizations:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.30"
|
||||
flutter_secure_storage:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -382,6 +499,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_shaders:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_shaders
|
||||
sha256: "34794acadd8275d971e02df03afee3dee0f98dbfb8c4837082ad0034f612a3e2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -408,6 +533,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
gtk:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: gtk
|
||||
sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -440,6 +573,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
http_profile:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_profile
|
||||
sha256: "7e679e355b09aaee2ab5010915c932cce3f2d1c11c3b2dc177891687014ffa78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -448,6 +589,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.20.2"
|
||||
jni:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: jni
|
||||
sha256: d2c361082d554d4593c3012e26f6b188f902acd291330f13d6427641a92b3da1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.14.2"
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -496,6 +645,46 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
local_auth:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth
|
||||
sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
local_auth_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_android
|
||||
sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.52"
|
||||
local_auth_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_darwin
|
||||
sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.0"
|
||||
local_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_platform_interface
|
||||
sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.10"
|
||||
local_auth_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: local_auth_windows
|
||||
sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.11"
|
||||
logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -544,6 +733,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
native_dio_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: native_dio_adapter
|
||||
sha256: "1c51bd42027861d27ccad462ba0903f5e3197461cc6d59a0bb8658cb5ad7bd01"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
objective_c:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: objective_c
|
||||
sha256: "9f034ba1eeca53ddb339bc8f4813cb07336a849cd735559b60cdc068ecce2dc7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.1.0"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_config
|
||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
package_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -560,6 +773,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
password_strength:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: password_strength
|
||||
sha256: "0e51e3d864e37873a1347e658147f88b66e141ee36c58e19828dc5637961e1ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
path:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -616,6 +837,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
pinput:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pinput
|
||||
sha256: c41f42ee301505ae2375ec32871c985d3717bf8aee845620465b286e0140aad2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -648,6 +877,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.3"
|
||||
privacy_screen:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: privacy_screen
|
||||
sha256: "2856e3a3ed082061a5cd2a1518f1ce6367c55916fb75e5db72e5983033a1ca54"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.8"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
screen_retriever:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -821,6 +1066,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.1"
|
||||
step_progress_indicator:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: step_progress_indicator
|
||||
sha256: b51bb1fcfc78454359f0658c5a2c21548c3825ebf76e826308e9ca10f383bbb8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -837,6 +1090,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
styled_text:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: styled_text
|
||||
sha256: fd624172cf629751b4f171dd0ecf9acf02a06df3f8a81bb56c0caa4f1df706c3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -877,6 +1138,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
ua_client_hints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ua_client_hints
|
||||
sha256: "1b8759a46bfeab355252881df27f2604c01bded86aa2b578869fb1b638b23118"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
universal_platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: universal_platform
|
||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
url_launcher:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -973,6 +1250,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1005,6 +1290,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
xmlstream:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xmlstream
|
||||
sha256: cfc14e3f256997897df9481ae630d94c2d85ada5187ebeb868bb1aabc2c977b4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
sdks:
|
||||
dart: ">=3.7.0-0 <4.0.0"
|
||||
flutter: ">=3.24.0"
|
||||
dart: ">=3.7.2 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
||||
@@ -14,6 +14,8 @@ dependencies:
|
||||
path: ../../packages/configuration
|
||||
ente_logging:
|
||||
path: ../../packages/logging
|
||||
ente_sharing:
|
||||
path: ../../packages/sharing
|
||||
ente_strings:
|
||||
path: ../../packages/strings
|
||||
ente_ui:
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_strings,ente_ui
|
||||
# melos_managed_dependency_overrides: ente_base,ente_configuration,ente_events,ente_logging,ente_strings,ente_ui,ente_network,ente_sharing,ente_accounts,ente_lock_screen
|
||||
dependency_overrides:
|
||||
ente_accounts:
|
||||
path: ../accounts
|
||||
ente_base:
|
||||
path: ../base
|
||||
ente_configuration:
|
||||
path: ../configuration
|
||||
ente_events:
|
||||
path: ../events
|
||||
ente_lock_screen:
|
||||
path: ../lock_screen
|
||||
ente_logging:
|
||||
path: ../logging
|
||||
ente_network:
|
||||
path: ../network
|
||||
ente_sharing:
|
||||
path: ../sharing
|
||||
ente_strings:
|
||||
path: ../strings
|
||||
ente_ui:
|
||||
|
||||
Reference in New Issue
Block a user