[mob] Ask for ml consent while enabling ML

This commit is contained in:
Neeraj Gupta
2024-08-20 10:56:53 +05:30
parent 730a0d4fae
commit 6caf6c48a6
14 changed files with 340 additions and 104 deletions

View File

@@ -3,8 +3,6 @@ PODS:
- Flutter
- battery_info (0.0.1):
- Flutter
- blurhash_ffi (0.0.1):
- Flutter
- connectivity_plus (0.0.1):
- Flutter
- FlutterMacOS
@@ -246,7 +244,6 @@ PODS:
DEPENDENCIES:
- background_fetch (from `.symlinks/plugins/background_fetch/ios`)
- battery_info (from `.symlinks/plugins/battery_info/ios`)
- blurhash_ffi (from `.symlinks/plugins/blurhash_ffi/ios`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
- dart_ui_isolate (from `.symlinks/plugins/dart_ui_isolate/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
@@ -330,8 +327,6 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/background_fetch/ios"
battery_info:
:path: ".symlinks/plugins/battery_info/ios"
blurhash_ffi:
:path: ".symlinks/plugins/blurhash_ffi/ios"
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/darwin"
dart_ui_isolate:
@@ -442,7 +437,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
background_fetch: 2319bf7e18237b4b269430b7f14d177c0df09c5a
battery_info: 09f5c9ee65394f2291c8c6227bedff345b8a730c
blurhash_ffi: 4831b96320d4273876c9a2fd3f7d50b8a3a53509
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
dart_ui_isolate: d5bcda83ca4b04f129d70eb90110b7a567aece14
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6

View File

@@ -292,7 +292,6 @@
"${BUILT_PRODUCTS_DIR}/Toast/Toast.framework",
"${BUILT_PRODUCTS_DIR}/background_fetch/background_fetch.framework",
"${BUILT_PRODUCTS_DIR}/battery_info/battery_info.framework",
"${BUILT_PRODUCTS_DIR}/blurhash_ffi/blurhash_ffi.framework",
"${BUILT_PRODUCTS_DIR}/connectivity_plus/connectivity_plus.framework",
"${BUILT_PRODUCTS_DIR}/dart_ui_isolate/dart_ui_isolate.framework",
"${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework",
@@ -388,7 +387,6 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/background_fetch.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/battery_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/blurhash_ffi.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity_plus.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/dart_ui_isolate.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework",

View File

@@ -683,6 +683,8 @@ class MessageLookup extends MessageLookupByLibrary {
"enableMaps": MessageLookupByLibrary.simpleMessage("Karten aktivieren"),
"enableMapsDesc": MessageLookupByLibrary.simpleMessage(
"Dies zeigt Ihre Fotos auf einer Weltkarte.\n\nDiese Karte wird von OpenStreetMap gehostet und die genauen Standorte Ihrer Fotos werden niemals geteilt.\n\nSie können diese Funktion jederzeit in den Einstellungen deaktivieren."),
"enableMultiPartUpload": MessageLookupByLibrary.simpleMessage(
"Mehrteiliges Hochladen aktivieren"),
"encryptingBackup":
MessageLookupByLibrary.simpleMessage("Verschlüssele Sicherung …"),
"encryption": MessageLookupByLibrary.simpleMessage("Verschlüsselung"),

View File

@@ -963,6 +963,16 @@ class MessageLookup extends MessageLookupByLibrary {
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m34,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mlConsent":
MessageLookupByLibrary.simpleMessage("Enable machine learning"),
"mlConsentConfirmation": MessageLookupByLibrary.simpleMessage(
"I understand, and wish to enable machine learning"),
"mlConsentDescription": MessageLookupByLibrary.simpleMessage(
"If you enable machine learning, Ente will extract information like face geometry from files. This will happen on your device, and any generated biometric information will be end-to-end encrypted."),
"mlConsentPrivacy": MessageLookupByLibrary.simpleMessage(
"Please click here for more details about this feature in our privacy policy"),
"mlConsentTitle":
MessageLookupByLibrary.simpleMessage("Enable machine learning?"),
"mlFunctions": MessageLookupByLibrary.simpleMessage("ML functions"),
"mlIndexingDescription": MessageLookupByLibrary.simpleMessage(
"Please note that machine learning will result in a higher bandwidth and battery usage until all items are indexed."),

View File

@@ -21,7 +21,7 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'pl';
static String m0(count) =>
"${Intl.plural(count, one: 'Dodaj współpracownika', few: 'Dodaj współpracowników', many: 'Dodaj współpracowników', other: 'Dodaj współpracowników')}";
"${Intl.plural(count, one: 'Dodaj współuczestnika', few: 'Dodaj współuczestników', many: 'Dodaj współuczestników', other: 'Dodaj współuczestników')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Dodaj element', few: 'Dodaj elementy', other: 'Dodaj elementów')}";
@@ -48,7 +48,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Prosimy najpierw anulować istniejącą subskrypcję z ${paymentProvider}";
static String m10(user) =>
"${user} nie będzie mógł dodać więcej zdjęć do tego albumu\n\nJednak nadal będzie mógł usunąć istniejące zdjęcia, które dodał";
"${user} nie będzie mógł dodać więcej zdjęć do tego albumu\n\nJednak nadal będą mogli usunąć istniejące zdjęcia, które dodali";
static String m11(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
@@ -135,7 +135,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Porozmawiaj ze wsparciem ${providerName} jeśli zostałeś obciążony";
static String m40(endDate) =>
"Bezpłatny okres próbny do ${endDate}.\nNastępnie możesz wybrać płatny plan.";
"Bezpłatny okres próbny ważny do ${endDate}.\nNastępnie możesz wybrać płatny plan.";
static String m41(toEmail) =>
"Prosimy o kontakt mailowy pod adresem ${toEmail}";
@@ -175,7 +175,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m54(emailIDs) => "Udostępnione z ${emailIDs}";
static String m55(fileType) =>
"Ten ${fileType} zostanie usunięty z twojego urządzenia.";
"Ten ${fileType} zostanie usunięty z Twojego urządzenia.";
static String m56(fileType) =>
"Ten ${fileType} jest zarówno w Ente, jak i na twoim urządzeniu.";
@@ -205,7 +205,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m65(count) =>
"${Intl.plural(count, zero: '', one: '${count} dzień', few: '${count} dni', other: '${count} dni')}";
static String m66(endDate) => "Ważna do ${endDate}";
static String m66(endDate) => "Ważne do ${endDate}";
static String m67(email) => "Zweryfikuj ${email}";
@@ -215,7 +215,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m69(count) =>
"${Intl.plural(count, one: '${count} rok temu', few: '${count} lata temu', many: '${count} lat temu', other: '${count} lata temu')}";
static String m70(storageSaved) => "Pomyślnie zwolniłeś ${storageSaved}!";
static String m70(storageSaved) => "Pomyślnie zwolniłeś/aś ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@@ -232,7 +232,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addANewEmail":
MessageLookupByLibrary.simpleMessage("Dodaj nowy adres e-mail"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Dodaj kolaboratora"),
MessageLookupByLibrary.simpleMessage("Dodaj współuczestnika"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Dodaj z urządzenia"),
@@ -252,7 +252,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addToEnte": MessageLookupByLibrary.simpleMessage("Dodaj do Ente"),
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Dodaj do ukrytego albumu"),
"addViewer": MessageLookupByLibrary.simpleMessage("Dodaj obserwatora"),
"addViewer": MessageLookupByLibrary.simpleMessage("Dodaj widza"),
"addViewers": m1,
"addYourPhotosNow":
MessageLookupByLibrary.simpleMessage("Dodaj swoje zdjęcia teraz"),
@@ -261,10 +261,9 @@ class MessageLookup extends MessageLookupByLibrary {
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Dodawanie do ulubionych..."),
"advanced":
MessageLookupByLibrary.simpleMessage("Ustawienia zaawansowane"),
"advanced": MessageLookupByLibrary.simpleMessage("Zaawansowane"),
"advancedSettings":
MessageLookupByLibrary.simpleMessage("Ustawienia zaawansowane"),
MessageLookupByLibrary.simpleMessage("Zaawansowane"),
"after1Day": MessageLookupByLibrary.simpleMessage("Po 1 dniu"),
"after1Hour": MessageLookupByLibrary.simpleMessage("Po 1 godzinie"),
"after1Month": MessageLookupByLibrary.simpleMessage("Po 1 miesiącu"),
@@ -315,7 +314,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Wybierz między domyślnym ekranem blokady urządzenia a niestandardowym ekranem blokady z kodem PIN lub hasłem."),
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Użyj"),
"apply": MessageLookupByLibrary.simpleMessage("Zastosuj"),
"applyCodeTitle": MessageLookupByLibrary.simpleMessage("Użyj kodu"),
"appstoreSubscription":
MessageLookupByLibrary.simpleMessage("Subskrypcja AppStore"),
@@ -346,37 +345,37 @@ class MessageLookup extends MessageLookupByLibrary {
"atAFalloutShelter": MessageLookupByLibrary.simpleMessage("w schronie"),
"authToChangeEmailVerificationSetting":
MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby zmienić weryfikację e-mail"),
"Prosimy uwierzytelnić się, aby zmienić weryfikację e-mail"),
"authToChangeLockscreenSetting": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby zmienić ustawienia ekranu blokady"),
"Prosimy uwierzytelnić się, aby zmienić ustawienia ekranu blokady"),
"authToChangeYourEmail": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby zmienić swój adres e-mail"),
"Prosimy uwierzytelnić się, aby zmienić swój adres e-mail"),
"authToChangeYourPassword": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby zmienić hasło"),
"Prosimy uwierzytelnić się, aby zmienić hasło"),
"authToConfigureTwofactorAuthentication":
MessageLookupByLibrary.simpleMessage(
"Uwierzytelnij się, aby skonfigurować uwierzytelnianie dwustopniowe"),
"authToInitiateAccountDeletion": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby zainicjować usuwanie konta"),
"Prosimy uwierzytelnić się, aby zainicjować usuwanie konta"),
"authToViewYourActiveSessions": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić, aby wyświetlić swoje aktywne sesje"),
"Prosimy uwierzytelnić się, aby wyświetlić swoje aktywne sesje"),
"authToViewYourHiddenFiles": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby wyświetlić ukryte pliki"),
"Prosimy uwierzytelnić się, aby wyświetlić ukryte pliki"),
"authToViewYourMemories": MessageLookupByLibrary.simpleMessage(
"Proszę uwierzytelnić się, aby wyświetlić swoje wspomnienia"),
"authToViewYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Pros uwierzytelnić się, aby wyświetlić swój klucz odzyskiwania"),
"Prosimy uwierzytelnić się, aby wyświetlić swój klucz odzyskiwania"),
"authenticating":
MessageLookupByLibrary.simpleMessage("Uwierzytelnianie..."),
"authenticationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Uwierzytelnianie nie powiodło się, pros spróbować ponownie"),
"Uwierzytelnianie nie powiodło się, prosimy spróbować ponownie"),
"authenticationSuccessful": MessageLookupByLibrary.simpleMessage(
"Uwierzytelnianie powiodło się!"),
"autoCastDialogBody": MessageLookupByLibrary.simpleMessage(
"Tutaj zobaczysz dostępne urządzenia Cast."),
"autoCastiOSPermission": MessageLookupByLibrary.simpleMessage(
"Upewnij się, że uprawnienia sieci lokalnej są włączone dla aplikacji Ente Zdjęcia w Ustawieniach."),
"Upewnij się, że uprawnienia sieci lokalnej są włączone dla aplikacji Zdjęcia Ente w Ustawieniach."),
"autoLock":
MessageLookupByLibrary.simpleMessage("Automatyczna blokada"),
"autoLockFeatureDescription": MessageLookupByLibrary.simpleMessage(
@@ -449,9 +448,9 @@ class MessageLookup extends MessageLookupByLibrary {
"claimed": MessageLookupByLibrary.simpleMessage("Odebrano"),
"claimedStorageSoFar": m11,
"cleanUncategorized":
MessageLookupByLibrary.simpleMessage("Wyczyść niekategoryzowane"),
MessageLookupByLibrary.simpleMessage("Wyczyść Nieskategoryzowane"),
"cleanUncategorizedDescription": MessageLookupByLibrary.simpleMessage(
"Usuń wszystkie pliki z niekategoryzowanych, które są obecne w innych albumach"),
"Usuń wszystkie pliki z Nieskategoryzowanych, które są obecne w innych albumach"),
"clearCaches":
MessageLookupByLibrary.simpleMessage("Wyczyść pamięć podręczną"),
"clearIndexes": MessageLookupByLibrary.simpleMessage("Wyczyść indeksy"),
@@ -464,7 +463,7 @@ class MessageLookup extends MessageLookupByLibrary {
"clubByFileName":
MessageLookupByLibrary.simpleMessage("Club według nazwy pliku"),
"clusteringProgress":
MessageLookupByLibrary.simpleMessage("Postęp grupowania"),
MessageLookupByLibrary.simpleMessage("Postęp tworzenia klastrów"),
"codeAppliedPageTitle":
MessageLookupByLibrary.simpleMessage("Kod został zastosowany"),
"codeCopiedToClipboard": MessageLookupByLibrary.simpleMessage(
@@ -472,14 +471,14 @@ class MessageLookup extends MessageLookupByLibrary {
"codeUsedByYou":
MessageLookupByLibrary.simpleMessage("Kod użyty przez Ciebie"),
"collabLinkSectionDescription": MessageLookupByLibrary.simpleMessage(
"Utwórz link, aby umożliwić innym dodawanie i przeglądanie zdjęć w udostępnionym albumie bez konieczności korzystania z aplikacji lub konta ente. Świetne rozwiązanie do gromadzenia zdjęć ze wspólnych wydarzeń."),
"Utwórz link, aby umożliwić innym dodawanie i przeglądanie zdjęć w udostępnionym albumie bez konieczności korzystania z aplikacji lub konta Ente. Świetne rozwiązanie do gromadzenia zdjęć ze wspólnych wydarzeń."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Link do kolaboracji"),
MessageLookupByLibrary.simpleMessage("Link do współpracy"),
"collaborativeLinkCreatedFor": m12,
"collaborator": MessageLookupByLibrary.simpleMessage("Kolaborator"),
"collaborator": MessageLookupByLibrary.simpleMessage("Współuczestnik"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
"Kolaboranci mogą dodawać zdjęcia i wideo do udostępnionego albumu."),
"Współuczestnicy mogą dodawać zdjęcia i wideo do udostępnionego albumu."),
"collageLayout": MessageLookupByLibrary.simpleMessage("Układ"),
"collageSaved":
MessageLookupByLibrary.simpleMessage("Kolaż zapisano w galerii"),
@@ -541,8 +540,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Stwórz nowe konto"),
"createOrSelectAlbum":
MessageLookupByLibrary.simpleMessage("Utwórz lub wybierz album"),
"createPublicLink": MessageLookupByLibrary.simpleMessage(
"Utwórz link dostępny publicznie"),
"createPublicLink":
MessageLookupByLibrary.simpleMessage("Utwórz publiczny link"),
"creatingLink":
MessageLookupByLibrary.simpleMessage("Tworzenie linku..."),
"criticalUpdateAvailable": MessageLookupByLibrary.simpleMessage(
@@ -571,7 +570,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Usunąć również zdjęcia (i wideo) znajdujące się w tym albumie ze <bold>wszystkich</bold> innych albumów, których są częścią?"),
"deleteAlbumsDialogBody": MessageLookupByLibrary.simpleMessage(
"Spowoduje to usunięcie wszystkich pustych albumów. Jest to przydatne, gdy chcesz zmniejszyć ilość śmieci na liście albumów."),
"deleteAll": MessageLookupByLibrary.simpleMessage("Usuń wszystkie"),
"deleteAll": MessageLookupByLibrary.simpleMessage("Usuń Wszystko"),
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"To konto jest połączone z innymi aplikacjami Ente, jeśli ich używasz. Twoje przesłane dane, we wszystkich aplikacjach Ente, zostaną zaplanowane do usunięcia, a Twoje konto zostanie trwale usunięte."),
"deleteEmailRequest": MessageLookupByLibrary.simpleMessage(
@@ -594,9 +593,9 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteReason2": MessageLookupByLibrary.simpleMessage(
"Aplikacja lub określona funkcja nie zachowuje się tak, jak sądzę, że powinna"),
"deleteReason3": MessageLookupByLibrary.simpleMessage(
"Znalazłem inną, lepszą usługę"),
"Znalazłem/am inną, lepszą usługę"),
"deleteReason4": MessageLookupByLibrary.simpleMessage(
"Inna, niewymieniona wyżej przyczyna"),
"Moja przyczyna nie jest wymieniona"),
"deleteRequestSLAText": MessageLookupByLibrary.simpleMessage(
"Twoje żądanie zostanie przetworzone w ciągu 72 godzin."),
"deleteSharedAlbum":
@@ -606,10 +605,10 @@ class MessageLookup extends MessageLookupByLibrary {
"descriptions": MessageLookupByLibrary.simpleMessage("Opisy"),
"deselectAll": MessageLookupByLibrary.simpleMessage("Odznacz wszystko"),
"designedToOutlive": MessageLookupByLibrary.simpleMessage(
"Zaprojektowane do przetrwania na zawsze"),
"Zaprojektowane do przetrwania"),
"details": MessageLookupByLibrary.simpleMessage("Szczegóły"),
"developerSettings":
MessageLookupByLibrary.simpleMessage("Ustawienia deweloperskie"),
MessageLookupByLibrary.simpleMessage("Ustawienia dla programistów"),
"developerSettingsWarning": MessageLookupByLibrary.simpleMessage(
"Czy na pewno chcesz zmodyfikować ustawienia programisty?"),
"deviceCodeHint": MessageLookupByLibrary.simpleMessage("Wprowadź kod"),
@@ -676,6 +675,8 @@ class MessageLookup extends MessageLookupByLibrary {
"enableMaps": MessageLookupByLibrary.simpleMessage("Włącz mapy"),
"enableMapsDesc": MessageLookupByLibrary.simpleMessage(
"To pokaże Twoje zdjęcia na mapie świata.\n\nTa mapa jest hostowana przez Open Street Map, a dokładne lokalizacje Twoich zdjęć nigdy nie są udostępniane.\n\nMożesz wyłączyć tę funkcję w każdej chwili w ustawieniach."),
"enableMultiPartUpload": MessageLookupByLibrary.simpleMessage(
"Włącz przesyłanie wieloczęściowe"),
"encryptingBackup": MessageLookupByLibrary.simpleMessage(
"Szyfrowanie kopii zapasowej..."),
"encryption": MessageLookupByLibrary.simpleMessage("Szyfrowanie"),
@@ -691,7 +692,7 @@ class MessageLookup extends MessageLookupByLibrary {
"entePhotosPerm": MessageLookupByLibrary.simpleMessage(
"Ente <i>potrzebuje uprawnień</i> aby przechowywać twoje zdjęcia"),
"enteSubscriptionPitch": MessageLookupByLibrary.simpleMessage(
"Ente zachowuje twoje wspomnienia, więc są zawsze dostępne dla Ciebie, nawet jeśli zgubisz urządzenie."),
"Ente zachowuje Twoje wspomnienia, więc są zawsze dostępne dla Ciebie, nawet jeśli zgubisz urządzenie."),
"enteSubscriptionShareWithFamily": MessageLookupByLibrary.simpleMessage(
"Twoja rodzina może być również dodana do Twojego planu."),
"enterAlbumName":
@@ -715,9 +716,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Wprowadź kod polecenia"),
"enterThe6digitCodeFromnyourAuthenticatorApp":
MessageLookupByLibrary.simpleMessage(
"Wprowadź 6-cyfrowy kod z\ntwojej aplikacji uwierzytelniającej"),
"Wprowadź 6-cyfrowy kod z\nTwojej aplikacji uwierzytelniającej"),
"enterValidEmail": MessageLookupByLibrary.simpleMessage(
"Podaj poprawny adres e-mail."),
"Prosimy podać prawidłowy adres e-mail."),
"enterYourEmailAddress":
MessageLookupByLibrary.simpleMessage("Podaj swój adres e-mail"),
"enterYourPassword":
@@ -763,7 +764,7 @@ class MessageLookup extends MessageLookupByLibrary {
"faqs": MessageLookupByLibrary.simpleMessage(
"FAQ Często zadawane pytania"),
"favorite": MessageLookupByLibrary.simpleMessage("Dodaj do ulubionych"),
"feedback": MessageLookupByLibrary.simpleMessage("Informacja zwrotna"),
"feedback": MessageLookupByLibrary.simpleMessage("Opinia"),
"fileFailedToSaveToGallery": MessageLookupByLibrary.simpleMessage(
"Nie udało się zapisać pliku do galerii"),
"fileInfoAddDescHint":
@@ -785,7 +786,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("dla twoich wspomnień"),
"forgotPassword":
MessageLookupByLibrary.simpleMessage("Nie pamiętam hasła"),
"foundFaces": MessageLookupByLibrary.simpleMessage("Znalezione twarze"),
"foundFaces": MessageLookupByLibrary.simpleMessage("Znaleziono twarze"),
"freeStorageClaimed": MessageLookupByLibrary.simpleMessage(
"Bezpłatna pamięć, którą odebrano"),
"freeStorageOnReferralSuccess": m26,
@@ -809,7 +810,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Generowanie kluczy szyfrujących..."),
"genericProgress": m31,
"goToSettings":
MessageLookupByLibrary.simpleMessage("Przejdź do Ustawień"),
MessageLookupByLibrary.simpleMessage("Przejdź do ustawień"),
"googlePlayId":
MessageLookupByLibrary.simpleMessage("Identyfikator Google Play"),
"grantFullAccessPrompt": MessageLookupByLibrary.simpleMessage(
@@ -860,7 +861,7 @@ class MessageLookup extends MessageLookupByLibrary {
"incorrectRecoveryKeyTitle": MessageLookupByLibrary.simpleMessage(
"Nieprawidłowy klucz odzyskiwania"),
"indexedItems":
MessageLookupByLibrary.simpleMessage("Indeksowane elementy"),
MessageLookupByLibrary.simpleMessage("Zindeksowane elementy"),
"indexingIsPaused": MessageLookupByLibrary.simpleMessage(
"Wstrzymano indeksowanie. Zostanie ono automatycznie wznowione, gdy urządzenie będzie gotowe."),
"insecureDevice":
@@ -894,7 +895,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Wybrane elementy zostaną usunięte z tego albumu"),
"joinDiscord":
MessageLookupByLibrary.simpleMessage("Dołącz do serwera Discord"),
"keepPhotos": MessageLookupByLibrary.simpleMessage("Zachowaj zdjęcia"),
"keepPhotos": MessageLookupByLibrary.simpleMessage("Zachowaj Zdjęcia"),
"kiloMeterUnit": MessageLookupByLibrary.simpleMessage("km"),
"kindlyHelpUsWithThisInformation":
MessageLookupByLibrary.simpleMessage("Pomóż nam z tą informacją"),
@@ -928,7 +929,7 @@ class MessageLookup extends MessageLookupByLibrary {
"loadMessage3": MessageLookupByLibrary.simpleMessage(
"Przechowujemy 3 kopie Twoich danych, jedną w podziemnym schronie"),
"loadMessage4": MessageLookupByLibrary.simpleMessage(
"Wszystkie nasze aplikacje mają otwarte źródło"),
"Wszystkie nasze aplikacje są otwarto źródłowe"),
"loadMessage5": MessageLookupByLibrary.simpleMessage(
"Nasz kod źródłowy i kryptografia zostały poddane zewnętrznemu audytowi"),
"loadMessage6": MessageLookupByLibrary.simpleMessage(
@@ -999,8 +1000,8 @@ class MessageLookup extends MessageLookupByLibrary {
"mlIndexingDescription": MessageLookupByLibrary.simpleMessage(
"Pamiętaj, że uczenie maszynowe spowoduje większe zużycie przepustowości i baterii, dopóki wszystkie elementy zostaną zindeksowane."),
"mobileWebDesktop": MessageLookupByLibrary.simpleMessage(
"Aplikacja Mobilna, Strona Internetowa, Komputer"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Umiarkowana"),
"Aplikacja Mobilna, Strona Internetowa, Aplikacja Komputerowa"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Umiarkowane"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Zmodyfikuj zapytanie lub spróbuj wyszukać"),
@@ -1023,14 +1024,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Nie można połączyć się z Ente, sprawdź ustawienia sieci i skontaktuj się z pomocą techniczną, jeśli błąd będzie się powtarzał."),
"never": MessageLookupByLibrary.simpleMessage("Nigdy"),
"newAlbum": MessageLookupByLibrary.simpleMessage("Nowy album"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nowy do Ente"),
"newToEnte": MessageLookupByLibrary.simpleMessage("Nowy/a do Ente"),
"newest": MessageLookupByLibrary.simpleMessage("Najnowsze"),
"next": MessageLookupByLibrary.simpleMessage("Dalej"),
"no": MessageLookupByLibrary.simpleMessage("Nie"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Brak jeszcze albumów udostępnianych przez Ciebie"),
"noDeviceFound":
MessageLookupByLibrary.simpleMessage("Nie wykryto urządzenia"),
"noDeviceFound": MessageLookupByLibrary.simpleMessage(
"Nie znaleziono żadnego urządzenia"),
"noDeviceLimit": MessageLookupByLibrary.simpleMessage("Brak"),
"noDeviceThatCanBeDeleted": MessageLookupByLibrary.simpleMessage(
"Nie masz żadnych plików na tym urządzeniu, które można usunąć"),
@@ -1084,8 +1085,7 @@ class MessageLookup extends MessageLookupByLibrary {
"orPickAnExistingOne":
MessageLookupByLibrary.simpleMessage("Lub wybierz istniejący"),
"pair": MessageLookupByLibrary.simpleMessage("Sparuj"),
"pairWithPin":
MessageLookupByLibrary.simpleMessage("Sparuj z kodem PIN"),
"pairWithPin": MessageLookupByLibrary.simpleMessage("Sparuj kodem PIN"),
"pairingComplete":
MessageLookupByLibrary.simpleMessage("Parowanie zakończone"),
"panorama": MessageLookupByLibrary.simpleMessage("Panorama"),
@@ -1136,8 +1136,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Wybierz punkt środkowy"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Przypnij album"),
"pinLock": MessageLookupByLibrary.simpleMessage("Blokada PIN"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Odtwarzaj album w telewizji"),
"playOnTv": MessageLookupByLibrary.simpleMessage(
"Odtwórz album na telewizorze"),
"playStoreFreeTrialValidTill": m40,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Subskrypcja PlayStore"),
@@ -1151,8 +1151,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzał"),
"pleaseEmailUsAt": m41,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Pros przyznać uprawnienia"),
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Prosimy przyznać uprawnienia"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Zaloguj się ponownie"),
"pleaseSelectQuickLinksToRemove": MessageLookupByLibrary.simpleMessage(
@@ -1163,12 +1163,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseVerifyTheCodeYouHaveEntered":
MessageLookupByLibrary.simpleMessage(
"Prosimy zweryfikować wprowadzony kod"),
"pleaseWait": MessageLookupByLibrary.simpleMessage("Pros czekać..."),
"pleaseWait": MessageLookupByLibrary.simpleMessage("Prosimy czekać..."),
"pleaseWaitDeletingAlbum": MessageLookupByLibrary.simpleMessage(
"Prosimy czekać, usuwanie albumu"),
"pleaseWaitForSometimeBeforeRetrying":
MessageLookupByLibrary.simpleMessage(
"Pros poczekać chwilę przed ponowną próbą"),
"Prosimy poczekać chwilę przed ponowną próbą"),
"preparingLogs":
MessageLookupByLibrary.simpleMessage("Przygotowywanie logów..."),
"preserveMore": MessageLookupByLibrary.simpleMessage("Zachowaj więcej"),
@@ -1178,7 +1178,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Naciśnij i przytrzymaj obraz, aby odtworzyć wideo"),
"privacy": MessageLookupByLibrary.simpleMessage("Prywatność"),
"privacyPolicyTitle":
MessageLookupByLibrary.simpleMessage("Polityka prywatności"),
MessageLookupByLibrary.simpleMessage("Polityka Prywatności"),
"privateBackups":
MessageLookupByLibrary.simpleMessage("Prywatne kopie zapasowe"),
"privateSharing":
@@ -1233,7 +1233,7 @@ class MessageLookup extends MessageLookupByLibrary {
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Wysyłanie poleceń jest obecnie wstrzymane"),
"remindToEmptyDeviceTrash": MessageLookupByLibrary.simpleMessage(
"Również puste \"Ostatnio usunięte\" z \"Ustawienia\" -> \"Pamięć\", aby odebrać wolną przestrzeń"),
"Również opróżnij \"Ostatnio usunięte\" z \"Ustawienia\" -> \"Pamięć\", aby odebrać wolną przestrzeń"),
"remindToEmptyEnteTrash": MessageLookupByLibrary.simpleMessage(
"Opróżnij również swój \"Kosz\", aby zwolnić miejsce"),
"remoteImages": MessageLookupByLibrary.simpleMessage("Zdjęcia zdalne"),
@@ -1354,7 +1354,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Wybierz foldery do stworzenia kopii zapasowej"),
"selectItemsToAdd":
MessageLookupByLibrary.simpleMessage("Wybierz elementy do dodania"),
"selectLanguage": MessageLookupByLibrary.simpleMessage("Wybierz język"),
"selectLanguage": MessageLookupByLibrary.simpleMessage("Wybierz Język"),
"selectMorePhotos":
MessageLookupByLibrary.simpleMessage("Wybierz więcej zdjęć"),
"selectReason": MessageLookupByLibrary.simpleMessage("Wybierz powód"),
@@ -1584,7 +1584,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Włącz kopię zapasową, aby automatycznie przesyłać pliki dodane do folderu urządzenia do Ente."),
"twitter": MessageLookupByLibrary.simpleMessage("Twitter"),
"twoMonthsFreeOnYearlyPlans": MessageLookupByLibrary.simpleMessage(
"2 miesiące za darmo w planach rocznych"),
"2 miesiące za darmo na planach rocznych"),
"twofactor": MessageLookupByLibrary.simpleMessage(
"Uwierzytelnianie dwustopniowe"),
"twofactorAuthenticationHasBeenDisabled":
@@ -1603,7 +1603,7 @@ class MessageLookup extends MessageLookupByLibrary {
"unarchiveAlbum":
MessageLookupByLibrary.simpleMessage("Przywróć album z archiwum"),
"unarchiving":
MessageLookupByLibrary.simpleMessage("Odarchiwizowanie..."),
MessageLookupByLibrary.simpleMessage("Usuwanie z archiwum..."),
"uncategorized": MessageLookupByLibrary.simpleMessage("Bez kategorii"),
"unhide": MessageLookupByLibrary.simpleMessage("Odkryj"),
"unhideToAlbum":
@@ -1633,7 +1633,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useRecoveryKey":
MessageLookupByLibrary.simpleMessage("Użyj kodu odzyskiwania"),
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Użyj zaznaczonego zdjęcia"),
MessageLookupByLibrary.simpleMessage("Użyj zaznaczone zdjęcie"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Zajęta przestrzeń"),
"validTill": m66,
"verificationFailedPleaseTryAgain":
@@ -1669,13 +1669,13 @@ class MessageLookup extends MessageLookupByLibrary {
"viewLogs": MessageLookupByLibrary.simpleMessage("Wyświetl logi"),
"viewRecoveryKey":
MessageLookupByLibrary.simpleMessage("Zobacz klucz odzyskiwania"),
"viewer": MessageLookupByLibrary.simpleMessage("Obserwator"),
"viewer": MessageLookupByLibrary.simpleMessage("Widz"),
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Odwiedź stronę web.ente.io, aby zarządzać subskrypcją"),
"waitingForVerification": MessageLookupByLibrary.simpleMessage(
"Oczekiwanie na weryfikację..."),
"waitingForWifi":
MessageLookupByLibrary.simpleMessage("Czekam na WiFi..."),
MessageLookupByLibrary.simpleMessage("Czekanie na WiFi..."),
"weAreOpenSource":
MessageLookupByLibrary.simpleMessage("Posiadamy otwarte źródło!"),
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
@@ -1689,8 +1689,8 @@ class MessageLookup extends MessageLookupByLibrary {
"yearsAgo": m69,
"yes": MessageLookupByLibrary.simpleMessage("Tak"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Tak, anuluj"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
"Tak, konwertuj do oglądającego"),
"yesConvertToViewer":
MessageLookupByLibrary.simpleMessage("Tak, konwertuj na widza"),
"yesDelete": MessageLookupByLibrary.simpleMessage("Tak, usuń"),
"yesDiscardChanges":
MessageLookupByLibrary.simpleMessage("Tak, odrzuć zmiany"),
@@ -1725,8 +1725,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Twój plan został pomyślnie obniżony"),
"yourPlanWasSuccessfullyUpgraded": MessageLookupByLibrary.simpleMessage(
"Twój plan został pomyślnie ulepszony"),
"yourPurchaseWasSuccessful":
MessageLookupByLibrary.simpleMessage("Twój zakup był udany"),
"yourPurchaseWasSuccessful": MessageLookupByLibrary.simpleMessage(
"Twój zakup zakończył się pomyślnie"),
"yourStorageDetailsCouldNotBeFetched":
MessageLookupByLibrary.simpleMessage(
"Nie można pobrać szczegółów pamięci"),

View File

@@ -676,6 +676,8 @@ class MessageLookup extends MessageLookupByLibrary {
"enableMaps": MessageLookupByLibrary.simpleMessage("Habilitar Mapa"),
"enableMapsDesc": MessageLookupByLibrary.simpleMessage(
"Isto mostrará suas fotos em um mapa do mundo.\n\nEste mapa é hospedado pelo OpenStreetMap, e os exatos locais de suas fotos nunca são compartilhados.\n\nVocê pode desativar esse recurso a qualquer momento nas Configurações."),
"enableMultiPartUpload": MessageLookupByLibrary.simpleMessage(
"Ativar envio de várias partes"),
"encryptingBackup":
MessageLookupByLibrary.simpleMessage("Criptografando backup..."),
"encryption": MessageLookupByLibrary.simpleMessage("Criptografia"),

View File

@@ -281,7 +281,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("AppStore 订阅"),
"archive": MessageLookupByLibrary.simpleMessage("存档"),
"archiveAlbum": MessageLookupByLibrary.simpleMessage("存档相册"),
"archiving": MessageLookupByLibrary.simpleMessage("正在归档中..."),
"archiving": MessageLookupByLibrary.simpleMessage("正在存档..."),
"areYouSureThatYouWantToLeaveTheFamily":
MessageLookupByLibrary.simpleMessage("您确定要离开家庭计划吗?"),
"areYouSureYouWantToCancel":
@@ -562,6 +562,7 @@ class MessageLookup extends MessageLookupByLibrary {
"enableMaps": MessageLookupByLibrary.simpleMessage("启用地图"),
"enableMapsDesc": MessageLookupByLibrary.simpleMessage(
"这将在世界地图上显示您的照片。\n\n该地图由 Open Street Map 托管,并且您的照片的确切位置永远不会共享。\n\n您可以随时从“设置”中禁用此功能。"),
"enableMultiPartUpload": MessageLookupByLibrary.simpleMessage("启用分片上传"),
"encryptingBackup": MessageLookupByLibrary.simpleMessage("正在加密备份..."),
"encryption": MessageLookupByLibrary.simpleMessage("加密"),
"encryptionKeys": MessageLookupByLibrary.simpleMessage("加密密钥"),
@@ -669,9 +670,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("请在手机“设置”中授权软件访问所有照片"),
"grantPermission": MessageLookupByLibrary.simpleMessage("授予权限"),
"groupNearbyPhotos": MessageLookupByLibrary.simpleMessage("将附近的照片分组"),
"guestView": MessageLookupByLibrary.simpleMessage("Guest view"),
"guestViewEnablePreSteps": MessageLookupByLibrary.simpleMessage(
"To enable guest view, please setup device passcode or screen lock in your system settings."),
"guestView": MessageLookupByLibrary.simpleMessage("访客视图"),
"guestViewEnablePreSteps":
MessageLookupByLibrary.simpleMessage("要启用访客视图,请在系统设置中设置设备密码或屏幕锁。"),
"hearUsExplanation": MessageLookupByLibrary.simpleMessage(
"我们不跟踪应用程序安装情况。如果您告诉我们您是在哪里找到我们的,将会有所帮助!"),
"hearUsWhereTitle":
@@ -1208,10 +1209,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("您的订阅似乎已过期。请订阅以启用分享。"),
"subscription": MessageLookupByLibrary.simpleMessage("订阅"),
"success": MessageLookupByLibrary.simpleMessage("成功"),
"successfullyArchived": MessageLookupByLibrary.simpleMessage("档成功"),
"successfullyArchived": MessageLookupByLibrary.simpleMessage("档成功"),
"successfullyHid": MessageLookupByLibrary.simpleMessage("已成功隐藏"),
"successfullyUnarchived":
MessageLookupByLibrary.simpleMessage("取消档成功"),
MessageLookupByLibrary.simpleMessage("取消档成功"),
"successfullyUnhid": MessageLookupByLibrary.simpleMessage("已成功取消隐藏"),
"suggestFeatures": MessageLookupByLibrary.simpleMessage("建议新功能"),
"support": MessageLookupByLibrary.simpleMessage("支持"),
@@ -1291,7 +1292,7 @@ class MessageLookup extends MessageLookupByLibrary {
"twofactorSetup": MessageLookupByLibrary.simpleMessage("双重认证设置"),
"unarchive": MessageLookupByLibrary.simpleMessage("取消存档"),
"unarchiveAlbum": MessageLookupByLibrary.simpleMessage("取消存档相册"),
"unarchiving": MessageLookupByLibrary.simpleMessage("正在取消档..."),
"unarchiving": MessageLookupByLibrary.simpleMessage("正在取消档..."),
"uncategorized": MessageLookupByLibrary.simpleMessage("未分类的"),
"unhide": MessageLookupByLibrary.simpleMessage("取消隐藏"),
"unhideToAlbum": MessageLookupByLibrary.simpleMessage("取消隐藏到相册"),

View File

@@ -2866,6 +2866,56 @@ class S {
);
}
/// `Enable machine learning`
String get mlConsent {
return Intl.message(
'Enable machine learning',
name: 'mlConsent',
desc: '',
args: [],
);
}
/// `Enable machine learning?`
String get mlConsentTitle {
return Intl.message(
'Enable machine learning?',
name: 'mlConsentTitle',
desc: '',
args: [],
);
}
/// `If you enable machine learning, Ente will extract information like face geometry from files. This will happen on your device, and any generated biometric information will be end-to-end encrypted.`
String get mlConsentDescription {
return Intl.message(
'If you enable machine learning, Ente will extract information like face geometry from files. This will happen on your device, and any generated biometric information will be end-to-end encrypted.',
name: 'mlConsentDescription',
desc: '',
args: [],
);
}
/// `Please click here for more details about this feature in our privacy policy`
String get mlConsentPrivacy {
return Intl.message(
'Please click here for more details about this feature in our privacy policy',
name: 'mlConsentPrivacy',
desc: '',
args: [],
);
}
/// `I understand, and wish to enable machine learning`
String get mlConsentConfirmation {
return Intl.message(
'I understand, and wish to enable machine learning',
name: 'mlConsentConfirmation',
desc: '',
args: [],
);
}
/// `Magic search`
String get magicSearch {
return Intl.message(

View File

@@ -409,6 +409,11 @@
"photoGridSize": "Photo grid size",
"manageDeviceStorage": "Manage device storage",
"machineLearning": "Machine learning",
"mlConsent": "Enable machine learning",
"mlConsentTitle": "Enable machine learning?",
"mlConsentDescription": "If you enable machine learning, Ente will extract information like face geometry from files. This will happen on your device, and any generated biometric information will be end-to-end encrypted.",
"mlConsentPrivacy": "Please click here for more details about this feature in our privacy policy",
"mlConsentConfirmation": "I understand, and wish to enable machine learning",
"magicSearch": "Magic search",
"mlIndexingDescription": "Please note that machine learning will result in a higher bandwidth and battery usage until all items are indexed.",
"loadingModel": "Downloading models...",

View File

@@ -22,6 +22,7 @@ class UserRemoteFlagService {
static const String recoveryVerificationFlag = "recoveryKeyVerified";
static const String mapEnabled = "mapEnabled";
static const String mlEnabled = "faceSearchEnabled";
static const String needRecoveryKeyVerification =
"needRecoveryKeyVerification";
@@ -48,6 +49,8 @@ class UserRemoteFlagService {
bool defaultValue = false;
if (key == mapEnabled) {
defaultValue = flagService.mapEnabled;
} else if (key == mlEnabled) {
defaultValue = flagService.hasGrantedMLConsent;
}
return _prefs.getBool(key) ?? defaultValue;
}

View File

@@ -20,6 +20,7 @@ import "package:photos/ui/components/menu_section_title.dart";
import "package:photos/ui/components/title_bar_title_widget.dart";
import "package:photos/ui/components/title_bar_widget.dart";
import "package:photos/ui/components/toggle_switch_widget.dart";
import "package:photos/ui/settings/ml/enable_ml_consent.dart";
import "package:photos/utils/ml_util.dart";
import "package:photos/utils/wakelock_util.dart";
@@ -127,10 +128,22 @@ class _MachineLearningSettingsPageState
trailingWidget: ToggleSwitchWidget(
value: () => localSettings.isFaceIndexingEnabled,
onChanged: () async {
if (!localSettings.isFaceIndexingEnabled) {
final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return const EnableMachineLearningConsent();
},
),
);
if (result == null || result == false) {
return;
}
}
final isEnabled = await localSettings.toggleFaceIndexing();
if (isEnabled) {
await MLService.instance.init(firstTime: true);
await SemanticSearchService.instance.init();
unawaited(MLService.instance.runAllML(force: true));
} else {}

View File

@@ -0,0 +1,156 @@
import "package:flutter/material.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/services/user_remote_flag_service.dart";
import "package:photos/theme/ente_theme.dart";
import "package:photos/ui/common/web_page.dart";
import "package:photos/ui/components/buttons/button_widget.dart";
import "package:photos/ui/components/models/button_type.dart";
import "package:photos/ui/components/title_bar_title_widget.dart";
import "package:photos/ui/components/title_bar_widget.dart";
import "package:photos/utils/dialog_util.dart";
class EnableMachineLearningConsent extends StatefulWidget {
const EnableMachineLearningConsent({super.key});
@override
State<EnableMachineLearningConsent> createState() =>
_EnableMachineLearningConsentState();
}
class _EnableMachineLearningConsentState
extends State<EnableMachineLearningConsent> {
final ValueNotifier<bool> _hasAckedPrivacyPolicy = ValueNotifier(false);
@override
void initState() {
super.initState();
}
@override
void dispose() {
_hasAckedPrivacyPolicy.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
primary: false,
slivers: <Widget>[
TitleBarWidget(
flexibleSpaceTitle: TitleBarTitleWidget(
title: S.of(context).mlConsentTitle,
),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(delegateBuildContext, index) => Padding(
padding: const EdgeInsets.only(left: 16, right: 16),
child: Column(
children: [
Text(
S.of(context).mlConsentDescription,
textAlign: TextAlign.left,
style: getEnteTextTheme(context).body.copyWith(
color: getEnteColorScheme(context).textMuted,
),
),
const SizedBox(height: 12),
GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return WebPage(
S.of(context).privacyPolicyTitle,
"https://ente.io/privacy",
);
},
),
);
},
child: Text(
S.of(context).mlConsentPrivacy,
textAlign: TextAlign.left,
style: getEnteTextTheme(context).body.copyWith(
color: getEnteColorScheme(context).textMuted,
decoration: TextDecoration.underline,
),
),
),
const SizedBox(height: 36),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Checkbox(
value: _hasAckedPrivacyPolicy.value,
side: CheckboxTheme.of(context).side,
onChanged: (value) {
setState(() {
_hasAckedPrivacyPolicy.value = value!;
});
},
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 1),
child: Text(
S.of(context).mlConsentConfirmation,
style: getEnteTextTheme(context).bodyMuted,
textAlign: TextAlign.left,
),
),
),
],
),
const SizedBox(height: 48),
ButtonWidget(
buttonType: ButtonType.primary,
labelText: S.of(context).mlConsent,
isDisabled: _hasAckedPrivacyPolicy.value == false,
onTap: () async {
await enableMlConsent(context);
},
shouldSurfaceExecutionStates: true,
),
const SizedBox(height: 8),
ButtonWidget(
buttonType: ButtonType.secondary,
labelText: S.of(context).cancel,
onTap: () async {
Navigator.of(context).pop();
},
),
const SafeArea(
child: SizedBox(
height: 12,
),
),
],
),
),
childCount: 1,
),
),
],
),
);
}
Future<void> enableMlConsent(BuildContext context) async {
try {
await UserRemoteFlagService.instance.setBoolValue(
UserRemoteFlagService.mlEnabled,
true,
);
Navigator.of(context).pop(true);
} catch (e) {
// ignore: unawaited_futures
showGenericErrorDialog(
context: context,
error: e,
);
}
}
}

View File

@@ -71,5 +71,7 @@ class FlagService {
bool get recoveryKeyVerified => flags.recoveryKeyVerified;
bool get hasGrantedMLConsent => flags.faceSearchEnabled;
bool get enableMobMultiPart => flags.enableMobMultiPart || internalUser;
}

View File

@@ -1289,18 +1289,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
@@ -1433,10 +1433,10 @@ packages:
dependency: transitive
description:
name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.11.1"
version: "0.8.0"
media_extension:
dependency: "direct main"
description:
@@ -1521,10 +1521,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.12.0"
mgrs_dart:
dependency: transitive
description:
@@ -1893,10 +1893,10 @@ packages:
dependency: transitive
description:
name: platform
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
url: "https://pub.dev"
source: hosted
version: "3.1.5"
version: "3.1.4"
plugin_platform_interface:
dependency: transitive
description:
@@ -2402,26 +2402,26 @@ packages:
dependency: "direct dev"
description:
name: test
sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e"
sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073"
url: "https://pub.dev"
source: hosted
version: "1.25.7"
version: "1.25.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.0"
test_core:
dependency: transitive
description:
name: test_core
sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696"
sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4"
url: "https://pub.dev"
source: hosted
version: "0.6.4"
version: "0.6.0"
timezone:
dependency: transitive
description:
@@ -2700,10 +2700,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "14.2.4"
version: "14.2.1"
volume_controller:
dependency: transitive
description: