iOS: Suggest that profile modules are editable (#1140)

Fixes #1080
This commit is contained in:
Davide 2025-02-05 13:39:28 +01:00 committed by GitHub
parent d6c2a7f58c
commit 965c39ab51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 33 additions and 29 deletions

View File

@ -107,22 +107,24 @@ private extension ProfileEditView {
func moduleRow(for module: any ModuleBuilder) -> some View {
EditorModuleToggle(profileEditor: profileEditor, module: module) {
Button {
push(.moduleDetail(moduleId: module.id))
} label: {
HStack {
Text(module.description(inEditor: profileEditor))
if errorModuleIds.contains(module.id) {
ThemeImage(.warning)
} else if profileEditor.isActiveModule(withId: module.id) {
PurchaseRequiredView(for: module as? AppFeatureRequiring)
}
Spacer()
HStack {
Text(module.description(inEditor: profileEditor))
if errorModuleIds.contains(module.id) {
ThemeImage(.warning)
} else if profileEditor.isActiveModule(withId: module.id) {
PurchaseRequiredView(for: module as? AppFeatureRequiring)
}
.contentShape(.rect)
Button {
push(.moduleDetail(moduleId: module.id))
} label: {
Spacer()
ThemeImage(.navigate)
.contentShape(.rect)
.imageScale(.large)
}
.buttonStyle(.borderless)
.uiAccessibility(.Profile.moduleLink)
}
.buttonStyle(.plain)
.uiAccessibility(.Profile.moduleLink)
}
}

View File

@ -838,8 +838,8 @@ public enum Strings {
}
public enum ModuleList {
public enum Section {
/// Drag modules to rearrange them, as their order determines priority.
public static let footer = Strings.tr("Localizable", "views.profile.module_list.section.footer", fallback: "Drag modules to rearrange them, as their order determines priority.")
/// Tap modules to edit their settings. Modules may be dragged to determine priority.
public static let footer = Strings.tr("Localizable", "views.profile.module_list.section.footer", fallback: "Tap modules to edit their settings. Modules may be dragged to determine priority.")
}
}
public enum Rows {

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Im Hintergrund sperren";
"views.preferences.locks_in_background.footer" = "Sperre die App mit FaceID, wenn sie in den Hintergrund geschickt wird.";
"views.profile.alerts.purchase.buttons.ok" = "Trotzdem speichern";
"views.profile.module_list.section.footer" = "Ziehe die Module, um sie neu anzuordnen, da ihre Reihenfolge die Priorität bestimmt.";
"views.profile.module_list.section.footer" = "Tippen Sie auf Module, um ihre Einstellungen zu bearbeiten. Module können gezogen werden, um die Priorität festzulegen.";
"views.profile.rows.add_module" = "Modul hinzufügen";
"views.profile.sections.name.footer" = "Verwenden Sie diesen Namen, um Ihre VPN-Automationen in der Kurzbefehle-App zu erstellen.";
"views.providers.clear_filters" = "Filter löschen";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Κλείδωμα στο παρασκήνιο";
"views.preferences.locks_in_background.footer" = "Κλειδώστε την εφαρμογή με το FaceID όταν αποστέλλεται στο παρασκήνιο.";
"views.profile.alerts.purchase.buttons.ok" = "Αποθήκευση ούτως ή άλλως";
"views.profile.module_list.section.footer" = "Σύρετε τις μονάδες για να τις αναδιατάξετε, καθώς η σειρά τους καθορίζει την προτεραιότητα.";
"views.profile.module_list.section.footer" = "Πατήστε σε ένα module για να επεξεργαστείτε τις ρυθμίσεις του. Τα modules μπορούν να μετακινηθούν για να καθορίσετε την προτεραιότητά τους.";
"views.profile.rows.add_module" = "Προσθήκη μονάδας";
"views.profile.sections.name.footer" = "Χρησιμοποιήστε αυτό το όνομα για να δημιουργήσετε αυτοματισμούς VPN στην εφαρμογή Συντομεύσεις.";
"views.providers.clear_filters" = "Καθαρισμός φίλτρων";

View File

@ -106,7 +106,7 @@
"views.profile.sections.name.footer" = "Use this name to create your VPN automations from the Shortcuts app.";
"views.profile.rows.add_module" = "Add module";
"views.profile.module_list.section.footer" = "Drag modules to rearrange them, as their order determines priority.";
"views.profile.module_list.section.footer" = "Tap modules to edit their settings. Modules may be dragged to determine priority.";
"views.profile.alerts.purchase.buttons.ok" = "Save anyway";
"views.providers.no_provider" = "None";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Bloquear en segundo plano";
"views.preferences.locks_in_background.footer" = "Bloquea la app con FaceID cuando se envíe al fondo.";
"views.profile.alerts.purchase.buttons.ok" = "Guardar de todos modos";
"views.profile.module_list.section.footer" = "Arrastra los módulos para reorganizarlos, ya que su orden determina la prioridad.";
"views.profile.module_list.section.footer" = "Toca los módulos para editar su configuración. Se pueden arrastrar para establecer la prioridad.";
"views.profile.rows.add_module" = "Añadir módulo";
"views.profile.sections.name.footer" = "Usa este nombre para crear automatizaciones VPN en la app Atajos.";
"views.providers.clear_filters" = "Borrar filtros";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Verrouiller en arrière-plan";
"views.preferences.locks_in_background.footer" = "Verrouillez l'application avec FaceID lorsqu'elle est envoyée en arrière-plan.";
"views.profile.alerts.purchase.buttons.ok" = "Enregistrer quand même";
"views.profile.module_list.section.footer" = "Faites glisser les modules pour les réorganiser, car leur ordre détermine la priorité.";
"views.profile.module_list.section.footer" = "Touchez les modules pour modifier leurs paramètres. Ils peuvent être glissés pour définir leur priorité.";
"views.profile.rows.add_module" = "Ajouter un module";
"views.profile.sections.name.footer" = "Utilisez ce nom pour créer vos automatisations VPN dans l'app Raccourcis.";
"views.providers.clear_filters" = "Effacer les filtres";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Blocca in background";
"views.preferences.locks_in_background.footer" = "Blocca l'app con FaceID quando viene inviata in background.";
"views.profile.alerts.purchase.buttons.ok" = "Salva comunque";
"views.profile.module_list.section.footer" = "Trascina i moduli per riordinarli, poiché il loro ordine determina la priorità.";
"views.profile.module_list.section.footer" = "Tocca i moduli per modificarne le impostazioni. Possono essere trascinati per determinare la priorità.";
"views.profile.rows.add_module" = "Aggiungi modulo";
"views.profile.sections.name.footer" = "Usa questo nome per creare le automazioni VPN nell'app Comandi Rapidi.";
"views.providers.clear_filters" = "Cancella filtri";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Vergrendelen in achtergrond";
"views.preferences.locks_in_background.footer" = "Vergrendel de app met FaceID wanneer deze naar de achtergrond wordt gestuurd.";
"views.profile.alerts.purchase.buttons.ok" = "Toch opslaan";
"views.profile.module_list.section.footer" = "Sleep modules om ze opnieuw te rangschikken, omdat hun volgorde de prioriteit bepaalt.";
"views.profile.module_list.section.footer" = "Tik op modules om hun instellingen te bewerken. Modules kunnen worden versleept om de prioriteit te bepalen.";
"views.profile.rows.add_module" = "Module toevoegen";
"views.profile.sections.name.footer" = "Gebruik deze naam om uw VPN-automatiseringen in de app Opdrachten te maken.";
"views.providers.clear_filters" = "Filters wissen";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Blokuj w tle";
"views.preferences.locks_in_background.footer" = "Zablokuj aplikację za pomocą FaceID, gdy zostanie przeniesiona w tle.";
"views.profile.alerts.purchase.buttons.ok" = "Zapisz mimo to";
"views.profile.module_list.section.footer" = "Przeciągnij moduły, aby je uporządkować, ponieważ ich kolejność określa priorytet.";
"views.profile.module_list.section.footer" = "Stuknij moduły, aby edytować ich ustawienia. Można je przeciągnąć, aby ustalić priorytet.";
"views.profile.rows.add_module" = "Dodaj moduł";
"views.profile.sections.name.footer" = "Użyj tej nazwy, aby tworzyć automatyzacje VPN w aplikacji Skróty.";
"views.providers.clear_filters" = "Wyczyść filtry";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Bloquear em segundo plano";
"views.preferences.locks_in_background.footer" = "Bloqueie o app com o FaceID ao enviá-lo para segundo plano.";
"views.profile.alerts.purchase.buttons.ok" = "Salvar assim mesmo";
"views.profile.module_list.section.footer" = "Arraste os módulos para reorganizá-los, pois sua ordem determina a prioridade.";
"views.profile.module_list.section.footer" = "Toque nos módulos para editar suas configurações. Eles podem ser arrastados para definir a prioridade.";
"views.profile.rows.add_module" = "Adicionar módulo";
"views.profile.sections.name.footer" = "Use este nome para criar automações VPN no app Atalhos.";
"views.providers.clear_filters" = "Limpar filtros";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Блокировка в фоновом режиме";
"views.preferences.locks_in_background.footer" = "Блокируйте приложение с помощью FaceID, когда оно переводится в фоновый режим.";
"views.profile.alerts.purchase.buttons.ok" = "Сохранить в любом случае";
"views.profile.module_list.section.footer" = "Перетащите модули для их переупорядочивания, так как их порядок определяет приоритет.";
"views.profile.module_list.section.footer" = "Нажмите на модули, чтобы изменить их настройки. Их можно перетаскивать для установки приоритета.";
"views.profile.rows.add_module" = "Добавить модуль";
"views.profile.sections.name.footer" = "Используйте это имя для создания автоматизаций VPN в приложении Команды.";
"views.providers.clear_filters" = "Очистить фильтры";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Lås i bakgrunden";
"views.preferences.locks_in_background.footer" = "Lås appen med FaceID när den skickas till bakgrunden.";
"views.profile.alerts.purchase.buttons.ok" = "Spara ändå";
"views.profile.module_list.section.footer" = "Dra moduler för att ordna om dem, eftersom deras ordning avgör prioritet.";
"views.profile.module_list.section.footer" = "Tryck på moduler för att redigera inställningarna. Moduler kan dras för att bestämma prioritet.";
"views.profile.rows.add_module" = "Lägg till modul";
"views.profile.sections.name.footer" = "Använd detta namn för att skapa VPN-automatiseringar i appen Genvägar.";
"views.providers.clear_filters" = "Rensa filter";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "Блокування у фоновому режимі";
"views.preferences.locks_in_background.footer" = "Блокуйте додаток за допомогою FaceID, коли він переходе у фоновий режим.";
"views.profile.alerts.purchase.buttons.ok" = "Зберегти все одно";
"views.profile.module_list.section.footer" = "Перетягніть модулі, щоб змінити їх порядок, оскільки їх порядок визначає пріоритет.";
"views.profile.module_list.section.footer" = "Торкніться модулів, щоб змінити їхні налаштування. Їх можна перетягувати для визначення пріоритету.";
"views.profile.rows.add_module" = "Додати модуль";
"views.profile.sections.name.footer" = "Використовуйте цю назву для створення автоматизацій VPN у додатку Команди.";
"views.providers.clear_filters" = "Очистити фільтри";

View File

@ -270,7 +270,7 @@
"views.preferences.locks_in_background" = "后台锁定";
"views.preferences.locks_in_background.footer" = "当应用切换到后台时,使用 FaceID 锁定它。";
"views.profile.alerts.purchase.buttons.ok" = "仍然保存";
"views.profile.module_list.section.footer" = "拖动模块重新排列,因为它们的顺序决定了优先级。";
"views.profile.module_list.section.footer" = "点击模块以编辑其设置。可以拖动模块来确定优先级。";
"views.profile.rows.add_module" = "添加模块";
"views.profile.sections.name.footer" = "使用此名称在快捷指令应用中创建您的 VPN 自动化。";
"views.providers.clear_filters" = "清除筛选";

View File

@ -46,6 +46,7 @@ extension Theme {
case info
case marked
case moreDetails
case navigate
case pending
case profileEdit
case profileImport
@ -98,6 +99,7 @@ extension Theme.ImageName {
case .info: return "info.circle"
case .marked: return "checkmark"
case .moreDetails: return "ellipsis.circle"
case .navigate: return "chevron.forward.circle.fill"
case .pending: return "clock"
case .profileEdit: return "square.and.pencil"
case .profileImport: return "square.and.arrow.down"