diff --git a/fastlane/metadata/android/he/full_description.txt b/fastlane/metadata/android/he/full_description.txt new file mode 100644 index 000000000..094285850 --- /dev/null +++ b/fastlane/metadata/android/he/full_description.txt @@ -0,0 +1,36 @@ +האפליקציה Ente היא אפליקציה פשוטה לגיבוי ושיתוף של התמונות והסרטונים שלך. + +אם חיפשת אלטרנטיבה ידידותית לפרטיות לGoogle Photos, הגעת למקום הנכון. עם Ente, התמונות והסרטונים מאוחסנים בצורה מאובטחת באמצעות הצפנה קצה-אל-קצה (e2ee). זה אומר שרק אתה יכול לצפות בהם. + +יש לנו אפלקציות קוד פתוח זמינות לAndroid, iOS, רשת ולמחשב, וכל התמונות שלך ייסתנכרנו באופן חלק בין כולם באופן מאובטח על ידי הצפנה קצה-אל-קצה (e2ee). + +ente גם מקל על שיתוף האלבומים שלך עם קרובך, גם אם הם אינם ב-ente. תוכל לשתף קישורים שניתן לצפות בהם בצורה פומבית, שבאמצעותם יתאפשר להם לצפות באלבום שלך ולשתף פעולה על ידי הוספת תמונות אליו, גם בלי חשבון או האפליקציה. + +הנתונים המוצפנים שלך מאוחסנים ב3 מקומות שונים, כולל מקלט גרעיני בפריז. אנחנו מתייחסים ברצינות לעתידות ומקלים עליך לוודא שזכרונותיך ישרדו אחרייך. + +הגענו לכאן כדי ליצור את היישומון לתמונות המאובטח ביותר אי פעם, הצטרפו אלינו למסע! + +מאפיינים +- גיבויים באיכות המקורית, כי כל פיקסל חשוב +- תוכניות משפחתיות, כך שתוכלו לשתף אחסון עם המשפחה שלכם +- אלבומים משותפים, כך שתוכל לאגד יחד תמונות אחרי טיול +- תיקיות משותפות, במקרה ותרצה שהבן זוג שלך יהנה מהקליקים של ה"מצלמה" שלך +- קישורי אלבום, המאובטחים בעזרת סיסמא +- יכולת לשחרר מקום, על ידי הסרת קבצים שכבר גובו באופן מאובטח +- תמיכה אנושית, כי אתה שווה את זה +- תיאורים, כך שתוכל לתאר את הזכרונות שלך ולמצוא אותם בקלות +- עורך תמונות, להוסיף למראה הסופי +- סמן כמועדפים, הסתר ולחזור על זכרונות שלך, כי הם יקרים ללבך +- ייבוא בלחיצה אחת מ-Google, Apple, הכונן הקשיח שלך ועוד +- ערכת נושא כהה, כי התמונות שלך נראות יפות בה +- 2FA, 3FA, אימות ביומטרי +- ועוד הרבה יותר! + +הרשאות +ente מבקש הרשאות מסוימות כדי לספק שירותי אחסון תמונות, וניתן לסקור אותן כאן: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md + +מחיר +אנחנו לא מציעים תוכניות בחינם לתמיד, משום שזה חשוב לנו להיות עמידים ולעמוד במבחן הזמן. במקום זאת אנחנו מציעים תוכניות במחיר סביר כדי שתוכל לשתף באופן חופשי עם המשפחה שלך. ניתן למצוא עוד מידע ב-ente.io. + +תמיכה +אנחנו גאים להציע תמיכה אנושית. אם אתה לקום משלם, אתה יכול לפנות אלינו בכתובת team@ente.io ולצפות לתשובה תוך 24 שעות. diff --git a/fastlane/metadata/android/he/short_description.txt b/fastlane/metadata/android/he/short_description.txt new file mode 100644 index 000000000..ed7d1d09e --- /dev/null +++ b/fastlane/metadata/android/he/short_description.txt @@ -0,0 +1 @@ +ente הוא אפליקציה לאחסון תמונות המשתמשת בהצפנה קצה-אל-קצה \ No newline at end of file diff --git a/fastlane/metadata/android/he/title.txt b/fastlane/metadata/android/he/title.txt new file mode 100644 index 000000000..f0f3c6173 --- /dev/null +++ b/fastlane/metadata/android/he/title.txt @@ -0,0 +1 @@ +ente - אחסון תמונות באופן מוצפן \ No newline at end of file diff --git a/fastlane/metadata/ios/he/description.txt b/fastlane/metadata/ios/he/description.txt index d59f74a5a..e4cd9983d 100644 --- a/fastlane/metadata/ios/he/description.txt +++ b/fastlane/metadata/ios/he/description.txt @@ -1,6 +1,6 @@ האפליקציה Ente היא אפליקציה פשוטה לגיבוי וארגון אוטומטי של התמונות והסרטונים שלך. -אם היית מחפש אלטרנטיבה ידידותית לפרטיות לשמירה על הזכרונות שלך, הגעת למקום הנכון. עם Ente, התמונות והסרטונים מאוחסנים בצורה מאובטחת באמצעות הצפנה קצה-אל-קצה (e2ee). זה אומר שרק אתה יכול לצפות בהם. +אם חיפשת אלטרנטיבה ידידותית לפרטיות לשמירה על הזכרונות שלך, הגעת למקום הנכון. עם Ente, התמונות והסרטונים מאוחסנים בצורה מאובטחת באמצעות הצפנה קצה-אל-קצה (e2ee). זה אומר שרק אתה יכול לצפות בהם. יש לנו אפליקציות זמינות לכל הפלטפורמות, והתמונות שלך ייסתנכרנו באופן חלק בין כל המכשירים שלך באופן מאובטח על-ידי הצפנה קצה-אל-קצה (e2ee). diff --git a/fastlane/metadata/ios/he/subtitle.txt b/fastlane/metadata/ios/he/subtitle.txt index 73f043c5f..e117cc803 100644 --- a/fastlane/metadata/ios/he/subtitle.txt +++ b/fastlane/metadata/ios/he/subtitle.txt @@ -1 +1 @@ -אחסון נתונים מוצפנים +אחסון תמונות באופן מוצפן diff --git a/fastlane/metadata/playstore/he/full_description.txt b/fastlane/metadata/playstore/he/full_description.txt new file mode 100644 index 000000000..1c6a77f65 --- /dev/null +++ b/fastlane/metadata/playstore/he/full_description.txt @@ -0,0 +1,30 @@ +האפליקציה Ente היא אפליקציה פשוטה לגיבוי וארגון אוטומטי של התמונות והסרטונים שלך. + +אם חיפשת אלטרנטיבה ידידותית לפרטיות לשמירה על הזכרונות שלך, הגעת למקום הנכון. עם Ente, התמונות והסרטונים מאוחסנים בצורה מאובטחת באמצעות הצפנה קצה-אל-קצה (e2ee). זה אומר שרק אתה יכול לצפות בהם. + +יש לנו אפלקציות זמינות לAndroid, iOS, רשת ולמחשב, וכל התמונות שלך ייסתנכרנו באופן חלק בין כולם באופן מאובטח על ידי הצפנה קצה-אל-קצה (e2ee). + +Ente גם מאפשר לך לשתף אלבומים בקלות עם קרובך. אפשר לשתף את התמונות והסרטונים ישירות עם משתמשים אחרים ב-Ente, באמצעות הצפנה קצה-אל-קצה; או באמצעות קישורים הניתנים לצפייה פומבית. + +הנתונים המוצפנים שלך מאוחסנים במקומות רבים, כולל מקלט גרעיני בפריז. אנחנו מתייחסים ברצינות לעתידות ומקלים עליך לוודא שזכרונותיך ישרדו אחרייך. + +הגענו לכאן כדי ליצור את היישומון לתמונות המאובטח ביותר אי פעם, הצטרפו אלינו למסע! + +✨ מאפיינים +- גיבויים באיכות המקורית, כי כל פיקסל חשוב +- תוכניות משפחתיות, כך שתוכלו לשתף אחסון עם המשפחה שלכם +- תיקיות משותפות, במקרה ותרצה שהבן זוג שלך יהנה מהקליקים של ה"מצלמה" שלך +- קישורי אלבום, המאובטחים בעזרת סיסמא שניתן להגדיר אותה עם תאריך תפוגה +- יכולת לשחרר מקום, על ידי הסרת קבצים שכבר גובו באופן מאובטח +- עורך תמונות, להוסיף למראה הסופי +- סמן כמועדפים, הסתר ולחזור על זכרונות שלך, כי הם יקרים ללבך +- ייבוא בלחיצה אחת מ-Google, Apple, הכונן הקשיח שלך ועוד +- ערכת נושא כהה, כי התמונות שלך נראות יפות בה +- 2FA, 3FA, אימות ביומטרי +- ועוד הרבה יותר! + +💲 מחיר +אנחנו לא מציעים תוכניות בחינם לתמיד, משום שזה חשוב לנו להיות עמידים ולעמוד במבחן הזמן. במקום זאת אנחנו מציעים תוכניות במחיר סביר כדי שתוכל לשתף באופן חופשי עם המשפחה שלך. ניתן למצוא עוד מידע ב-ente.io. + +🙋 תמיכה +אנחנו גאים להציע תמיכה אנושית. אם אתה לקום משלם, אתה יכול לפנות אלינו בכתובת team@ente.io ולצפות לתשובה תוך 24 שעות. \ No newline at end of file diff --git a/fastlane/metadata/playstore/he/short_description.txt b/fastlane/metadata/playstore/he/short_description.txt new file mode 100644 index 000000000..f386c0b3a --- /dev/null +++ b/fastlane/metadata/playstore/he/short_description.txt @@ -0,0 +1 @@ +אחסון תמונות באופן מוצפן - גיבוי, ארגון ושיתוך של התמונות והסרטונים שלך \ No newline at end of file diff --git a/fastlane/metadata/playstore/he/title.txt b/fastlane/metadata/playstore/he/title.txt new file mode 100644 index 000000000..e2a7bd5a2 --- /dev/null +++ b/fastlane/metadata/playstore/he/title.txt @@ -0,0 +1 @@ +ente Photos \ No newline at end of file diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 810836048..6acd670e1 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -915,7 +915,7 @@ class MessageLookup extends MessageLookupByLibrary { "recoveryKeyVerified": MessageLookupByLibrary.simpleMessage("Recovery key verified"), "recoveryKeyVerifyReason": MessageLookupByLibrary.simpleMessage( - "Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Account.\n\nPlease enter your recovery key here to verify that you have saved it correctly."), + "Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Security.\n\nPlease enter your recovery key here to verify that you have saved it correctly."), "recoverySuccessful": MessageLookupByLibrary.simpleMessage("Recovery successful!"), "recreatePasswordBody": MessageLookupByLibrary.simpleMessage( diff --git a/lib/generated/intl/messages_it.dart b/lib/generated/intl/messages_it.dart index 0c0873a93..7ff40e562 100644 --- a/lib/generated/intl/messages_it.dart +++ b/lib/generated/intl/messages_it.dart @@ -249,8 +249,27 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Consenti download"), "allowPeopleToAddPhotos": MessageLookupByLibrary.simpleMessage( "Permetti alle persone di aggiungere foto"), + "androidBiometricHint": + MessageLookupByLibrary.simpleMessage("Verifica l\'identità"), + "androidBiometricNotRecognized": + MessageLookupByLibrary.simpleMessage("Non riconosciuto. Riprova."), + "androidBiometricRequiredTitle": + MessageLookupByLibrary.simpleMessage("Autenticazione biometrica"), + "androidBiometricSuccess": + MessageLookupByLibrary.simpleMessage("Operazione riuscita"), + "androidCancelButton": MessageLookupByLibrary.simpleMessage("Annulla"), + "androidDeviceCredentialsRequiredTitle": + MessageLookupByLibrary.simpleMessage( + "Inserisci le credenziali del dispositivo"), + "androidDeviceCredentialsSetupDescription": + MessageLookupByLibrary.simpleMessage( + "Inserisci le credenziali del dispositivo"), + "androidGoToSettingsDescription": MessageLookupByLibrary.simpleMessage( + "L\'autenticazione biometrica non è impostata sul tuo dispositivo. Vai a \'Impostazioni > Sicurezza\' per impostarla."), "androidIosWebDesktop": MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"), + "androidSignInTitle": + MessageLookupByLibrary.simpleMessage("Autenticazione necessaria"), "appVersion": m46, "appleId": MessageLookupByLibrary.simpleMessage("Apple ID"), "apply": MessageLookupByLibrary.simpleMessage("Applica"), @@ -643,6 +662,8 @@ class MessageLookup extends MessageLookupByLibrary { "general": MessageLookupByLibrary.simpleMessage("Generali"), "generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage( "Generazione delle chiavi di crittografia..."), + "goToSettings": + MessageLookupByLibrary.simpleMessage("Vai alle impostazioni"), "googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"), "grantPermission": MessageLookupByLibrary.simpleMessage("Concedi il permesso"), @@ -653,6 +674,11 @@ class MessageLookup extends MessageLookupByLibrary { "howItWorks": MessageLookupByLibrary.simpleMessage("Come funziona"), "howToViewShareeVerificationID": MessageLookupByLibrary.simpleMessage( "Chiedi di premere a lungo il loro indirizzo email nella schermata delle impostazioni e verificare che gli ID su entrambi i dispositivi corrispondano."), + "iOSGoToSettingsDescription": MessageLookupByLibrary.simpleMessage( + "L\'autenticazione biometrica non è impostata sul tuo dispositivo. Abilita Touch ID o Face ID sul tuo telefono."), + "iOSLockOut": MessageLookupByLibrary.simpleMessage( + "L\'autenticazione biometrica è disabilitata. Blocca e sblocca lo schermo per abilitarla."), + "iOSOkButton": MessageLookupByLibrary.simpleMessage("OK"), "ignoredFolderUploadReason": MessageLookupByLibrary.simpleMessage( "Alcuni file in questo album vengono ignorati dal caricamento perché erano stati precedentemente cancellati da ente."), "importing": diff --git a/lib/generated/intl/messages_nl.dart b/lib/generated/intl/messages_nl.dart index 16d059ac3..6f8cea7e9 100644 --- a/lib/generated/intl/messages_nl.dart +++ b/lib/generated/intl/messages_nl.dart @@ -251,8 +251,26 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Downloads toestaan"), "allowPeopleToAddPhotos": MessageLookupByLibrary.simpleMessage( "Mensen toestaan foto\'s toe te voegen"), + "androidBiometricHint": + MessageLookupByLibrary.simpleMessage("Identiteit verifiëren"), + "androidBiometricNotRecognized": MessageLookupByLibrary.simpleMessage( + "Niet herkend. Probeer het opnieuw."), + "androidBiometricRequiredTitle": MessageLookupByLibrary.simpleMessage( + "Biometrische verificatie vereist"), + "androidBiometricSuccess": + MessageLookupByLibrary.simpleMessage("Succes"), + "androidCancelButton": + MessageLookupByLibrary.simpleMessage("Annuleren"), + "androidDeviceCredentialsRequiredTitle": + MessageLookupByLibrary.simpleMessage("Apparaatgegevens vereist"), + "androidDeviceCredentialsSetupDescription": + MessageLookupByLibrary.simpleMessage("Apparaatgegevens vereist"), + "androidGoToSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Biometrische verificatie is niet ingesteld op uw apparaat. Ga naar \'Instellingen > Beveiliging\' om biometrische verificatie toe te voegen."), "androidIosWebDesktop": MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"), + "androidSignInTitle": + MessageLookupByLibrary.simpleMessage("Verificatie vereist"), "appVersion": m46, "appleId": MessageLookupByLibrary.simpleMessage("Apple ID"), "apply": MessageLookupByLibrary.simpleMessage("Toepassen"), @@ -653,6 +671,8 @@ class MessageLookup extends MessageLookupByLibrary { "general": MessageLookupByLibrary.simpleMessage("Algemeen"), "generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage( "Encryptiesleutels genereren..."), + "goToSettings": + MessageLookupByLibrary.simpleMessage("Ga naar instellingen"), "googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"), "grantPermission": MessageLookupByLibrary.simpleMessage("Toestemming verlenen"), @@ -663,6 +683,11 @@ class MessageLookup extends MessageLookupByLibrary { "howItWorks": MessageLookupByLibrary.simpleMessage("Hoe het werkt"), "howToViewShareeVerificationID": MessageLookupByLibrary.simpleMessage( "Vraag hen om hun e-mailadres lang in te drukken op het instellingenscherm en te controleren dat de ID\'s op beide apparaten overeenkomen."), + "iOSGoToSettingsDescription": MessageLookupByLibrary.simpleMessage( + "Biometrische authenticatie is niet ingesteld op uw apparaat. Schakel Touch ID of Face ID in op uw telefoon."), + "iOSLockOut": MessageLookupByLibrary.simpleMessage( + "Biometrische verificatie is uitgeschakeld. Vergrendel en ontgrendel uw scherm om het in te schakelen."), + "iOSOkButton": MessageLookupByLibrary.simpleMessage("Oké"), "ignoredFolderUploadReason": MessageLookupByLibrary.simpleMessage( "Sommige bestanden in dit album worden genegeerd voor de upload omdat ze eerder van ente zijn verwijderd."), "importing": MessageLookupByLibrary.simpleMessage("Importeren...."), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 4a63d19ad..6c350eee8 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -1240,10 +1240,10 @@ class S { ); } - /// `Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Account.\n\nPlease enter your recovery key here to verify that you have saved it correctly.` + /// `Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Security.\n\nPlease enter your recovery key here to verify that you have saved it correctly.` String get recoveryKeyVerifyReason { return Intl.message( - 'Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Account.\n\nPlease enter your recovery key here to verify that you have saved it correctly.', + 'Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Security.\n\nPlease enter your recovery key here to verify that you have saved it correctly.', name: 'recoveryKeyVerifyReason', desc: '', args: [], diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 8b51e2def..e51b119ce 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -148,7 +148,7 @@ "tryAgain": "Try again", "viewRecoveryKey": "View recovery key", "confirmRecoveryKey": "Confirm recovery key", - "recoveryKeyVerifyReason": "Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Account.\n\nPlease enter your recovery key here to verify that you have saved it correctly.", + "recoveryKeyVerifyReason": "Your recovery key is the only way to recover your photos if you forget your password. You can find your recovery key in Settings > Security.\n\nPlease enter your recovery key here to verify that you have saved it correctly.", "confirmYourRecoveryKey": "Confirm your recovery key", "addViewer": "Add viewer", "addCollaborator": "Add collaborator", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 0b96f26f4..70d716ef3 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -982,5 +982,57 @@ }, "setRadius": "设定半径", "familyPlanPortalTitle": "家庭", - "familyPlanOverview": "在您现有的计划中添加 5 名家庭成员,无需支付额外费用。\n\n每个成员都有自己的私人空间,除非共享,否则无法看到彼此的文件。\n\n家庭计划适用于付费订阅的客户。\n\n立即订阅以开始使用!" + "familyPlanOverview": "在您现有的计划中添加 5 名家庭成员,无需支付额外费用。\n\n每个成员都有自己的私人空间,除非共享,否则无法看到彼此的文件。\n\n家庭计划适用于付费订阅的客户。\n\n立即订阅以开始使用!", + "androidBiometricHint": "验证身份", + "@androidBiometricHint": { + "description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters." + }, + "androidBiometricNotRecognized": "无法识别。请重试。", + "@androidBiometricNotRecognized": { + "description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters." + }, + "androidBiometricSuccess": "成功", + "@androidBiometricSuccess": { + "description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters." + }, + "androidCancelButton": "取消", + "@androidCancelButton": { + "description": "Message showed on a button that the user can click to leave the current dialog. It is used on Android side. Maximum 30 characters." + }, + "androidSignInTitle": "需要身份验证", + "@androidSignInTitle": { + "description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters." + }, + "androidBiometricRequiredTitle": "需要生物量", + "@androidBiometricRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "androidDeviceCredentialsRequiredTitle": "需要设备凭据", + "@androidDeviceCredentialsRequiredTitle": { + "description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters." + }, + "androidDeviceCredentialsSetupDescription": "需要设备凭据", + "@androidDeviceCredentialsSetupDescription": { + "description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side." + }, + "goToSettings": "前往设置", + "@goToSettings": { + "description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters." + }, + "androidGoToSettingsDescription": "未在您的设备上设置生物鉴别身份验证。前往“设置>安全”添加生物鉴别身份验证。", + "@androidGoToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side." + }, + "iOSLockOut": "生物鉴别认证已禁用。请锁定并解锁您的屏幕以启用它。", + "@iOSLockOut": { + "description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side." + }, + "iOSGoToSettingsDescription": "未在您的设备上设置生物鉴别身份验证。请在您的手机上启用 Touch ID或Face ID。", + "@iOSGoToSettingsDescription": { + "description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side." + }, + "iOSOkButton": "好的", + "@iOSOkButton": { + "description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters." + } } \ No newline at end of file diff --git a/lib/ui/actions/file/file_actions.dart b/lib/ui/actions/file/file_actions.dart index 9be0e5814..167558890 100644 --- a/lib/ui/actions/file/file_actions.dart +++ b/lib/ui/actions/file/file_actions.dart @@ -26,7 +26,7 @@ Future showSingleFileDeleteSheet( file.uploadedFileID != null && file.localID != null; final bool isLocalOnly = file.uploadedFileID == null && file.localID != null; final bool isRemoteOnly = file.uploadedFileID != null && file.localID == null; - String bodyHighlight = S.of(context).singleFileDeleteHighlight; + final String bodyHighlight = S.of(context).singleFileDeleteHighlight; String body = ""; if (isBothLocalAndRemote) { body = S.of(context).singleFileInBothLocalAndRemote(fileType); diff --git a/lib/ui/backup_folder_selection_page.dart b/lib/ui/backup_folder_selection_page.dart index a895a857a..3ed738316 100644 --- a/lib/ui/backup_folder_selection_page.dart +++ b/lib/ui/backup_folder_selection_page.dart @@ -170,11 +170,12 @@ class _BackupFolderSelectionPageState extends State { bottom: Platform.isIOS ? 60 : 32, ), child: OutlinedButton( - onPressed: _selectedDevicePathIDs.isEmpty - ? null - : () async { - await updateFolderSettings(); - }, + onPressed: + widget.isOnboarding && _selectedDevicePathIDs.isEmpty + ? null + : () async { + await updateFolderSettings(); + }, child: Text(widget.buttonText), ), ), diff --git a/lib/ui/home/header_error_widget.dart b/lib/ui/home/header_error_widget.dart index 0ab7b9e3d..868866e32 100644 --- a/lib/ui/home/header_error_widget.dart +++ b/lib/ui/home/header_error_widget.dart @@ -107,7 +107,7 @@ class HeaderErrorWidget extends StatelessWidget { const Padding(padding: EdgeInsets.all(4)), Text( S.of(context).couldNotBackUpTryLater, - style: TextStyle(height: 1.4), + style: const TextStyle(height: 1.4), textAlign: TextAlign.center, ), const Padding(padding: EdgeInsets.all(8)), diff --git a/lib/ui/sharing/pickers/link_expiry_picker_page.dart b/lib/ui/sharing/pickers/link_expiry_picker_page.dart index 3aa6f54a9..e575f94d3 100644 --- a/lib/ui/sharing/pickers/link_expiry_picker_page.dart +++ b/lib/ui/sharing/pickers/link_expiry_picker_page.dart @@ -61,7 +61,7 @@ class LinkExpiryPickerPage extends StatelessWidget { class ItemsWidget extends StatefulWidget { final Collection collection; - ItemsWidget(this.collection, {super.key}); + const ItemsWidget(this.collection, {super.key}); @override State createState() => _ItemsWidgetState(); diff --git a/lib/ui/viewer/gallery/component/non_recyclable_view_widget.dart b/lib/ui/viewer/gallery/component/non_recyclable_view_widget.dart index 7b97fa71a..e5d27a270 100644 --- a/lib/ui/viewer/gallery/component/non_recyclable_view_widget.dart +++ b/lib/ui/viewer/gallery/component/non_recyclable_view_widget.dart @@ -42,7 +42,7 @@ class _NonRecyclableViewWidgetState extends State { @override Widget build(BuildContext context) { - if (!_shouldRender!) { + if (!_shouldRender) { return VisibilityDetector( key: Key("gallery" + widget.filesInDay.first.tag), onVisibilityChanged: (visibility) { diff --git a/lib/ui/viewer/gallery/device_folder_page.dart b/lib/ui/viewer/gallery/device_folder_page.dart index 7d47020af..d066f91d9 100644 --- a/lib/ui/viewer/gallery/device_folder_page.dart +++ b/lib/ui/viewer/gallery/device_folder_page.dart @@ -92,6 +92,7 @@ class BackupHeaderWidget extends StatefulWidget { class _BackupHeaderWidgetState extends State { late Future> filesInDeviceCollection; late ValueNotifier shouldBackup; + final Logger _logger = Logger("_BackupHeaderWidgetState"); @override void initState() { shouldBackup = ValueNotifier(widget.deviceCollection.shouldBackup); @@ -121,21 +122,26 @@ class _BackupHeaderWidgetState extends State { trailingWidget: ToggleSwitchWidget( value: () => shouldBackup.value, onChanged: () async { - await RemoteSyncService.instance - .updateDeviceFolderSyncStatus( - {widget.deviceCollection.id: !shouldBackup.value}, - ).then( - (val) { + _logger.fine( + "Toggling device folder sync status to " + "${!shouldBackup.value}", + ); + try { + await RemoteSyncService.instance + .updateDeviceFolderSyncStatus( + {widget.deviceCollection.id: !shouldBackup.value}, + ); + if (mounted) { setState(() { shouldBackup.value = !shouldBackup.value; }); - }, - onError: (e) { - Logger("BackupHeaderWidget").severe( - "Could not update device folder sync status", - ); - }, - ); + } + } catch (e) { + _logger.severe( + "Could not update device folder sync status", + e, + ); + } }, ), ), diff --git a/lib/utils/device_info.dart b/lib/utils/device_info.dart index 1bb2a5ac4..459eb00ea 100644 --- a/lib/utils/device_info.dart +++ b/lib/utils/device_info.dart @@ -4,10 +4,10 @@ import "package:device_info/device_info.dart"; import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; -late DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); +DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); // https://gist.github.com/adamawolf/3048717 -late Set iOSLowEndMachineCodes = { +final Set iOSLowEndMachineCodes = { "iPhone5,1", //iPhone 5 (GSM) "iPhone5,2", //iPhone 5 (GSM+CDMA) "iPhone5,3", //iPhone 5C (GSM)