diff --git a/assets/changelog.json b/assets/changelog.json index 056b12f..7a1fbc2 100644 --- a/assets/changelog.json +++ b/assets/changelog.json @@ -1,6 +1,6 @@ { "1.3.2": { - "content": "• INFRA: Complete release workflow redesign - now triggered by GitHub release creation\n• INFRA: Added automatic Google Play Store uploads (Internal Testing track)\n• INFRA: GitHub pre-release checkbox controls whether builds go to app stores\n• INFRA: Brutalist approach - always rebuilds from scratch for maximum reliability" + "content": "• HOTFIX: Temporarily disabled node editing to prevent OSM database issues while a bug is resolved\n• TECH: Added kEnableNodeEdits feature flag for controlling edit functionality" }, "1.3.1": { "content": "• UX: Network status indicator always enabled\n• UX: Direction slider wider on small screens\n• UX: Fixed iOS keyboard missing 'Done' in settings\n• UX: Fixed multi-direction nodes in upload queue\n• UX: Improved suspected locations loading indicator; removed popup, fixed stuck spinner" diff --git a/lib/dev_config.dart b/lib/dev_config.dart index a3e1a53..4456f7d 100644 --- a/lib/dev_config.dart +++ b/lib/dev_config.dart @@ -49,6 +49,9 @@ const bool kEnableDevelopmentModes = false; // Set to false to hide sandbox/simu // Navigation features - set to false to hide navigation UI elements while in development const bool kEnableNavigationFeatures = kEnableDevelopmentModes; // Hide navigation until fully implemented +// Node editing features - set to false to temporarily disable editing +const bool kEnableNodeEdits = false; // Set to false to temporarily disable node editing + /// Navigation availability: only dev builds, and only when online bool enableNavigationFeatures({required bool offlineMode}) { if (!kEnableDevelopmentModes) { diff --git a/lib/localizations/de.json b/lib/localizations/de.json index 3dffb49..41cb53a 100644 --- a/lib/localizations/de.json +++ b/lib/localizations/de.json @@ -89,6 +89,7 @@ "profileRequired": "Bitte wählen Sie ein Profil aus, um fortzufahren.", "direction": "Richtung {}°", "profileNoDirectionInfo": "Dieses Profil benötigt keine Richtung.", + "temporarilyDisabled": "Bearbeitungen wurden vorübergehend deaktiviert, während wir einen Fehler beheben - Entschuldigung - schauen Sie bald wieder vorbei.", "mustBeLoggedIn": "Sie müssen angemeldet sein, um Knoten zu bearbeiten. Bitte melden Sie sich über die Einstellungen an.", "sandboxModeWarning": "Bearbeitungen von Produktionsknoten können nicht an die Sandbox übertragen werden. Wechseln Sie in den Produktionsmodus in den Einstellungen, um Knoten zu bearbeiten.", "enableSubmittableProfile": "Aktivieren Sie ein übertragbares Profil in den Einstellungen, um Knoten zu bearbeiten.", diff --git a/lib/localizations/en.json b/lib/localizations/en.json index a591ff9..384a304 100644 --- a/lib/localizations/en.json +++ b/lib/localizations/en.json @@ -107,6 +107,7 @@ "profileRequired": "Please select a profile to continue.", "direction": "Direction {}°", "profileNoDirectionInfo": "This profile does not require a direction.", + "temporarilyDisabled": "Edits have been temporarily disabled while we sort out a bug - apologies - check back soon.", "mustBeLoggedIn": "You must be logged in to edit nodes. Please log in via Settings.", "sandboxModeWarning": "Cannot submit edits on production nodes to sandbox. Switch to Production mode in Settings to edit nodes.", "enableSubmittableProfile": "Enable a submittable profile in Settings to edit nodes.", diff --git a/lib/localizations/es.json b/lib/localizations/es.json index 3685453..cc978c7 100644 --- a/lib/localizations/es.json +++ b/lib/localizations/es.json @@ -107,6 +107,7 @@ "profileRequired": "Por favor, seleccione un perfil para continuar.", "direction": "Dirección {}°", "profileNoDirectionInfo": "Este perfil no requiere una dirección.", + "temporarilyDisabled": "Las ediciones han sido temporalmente deshabilitadas mientras solucionamos un error - disculpas - regrese pronto.", "mustBeLoggedIn": "Debe estar conectado para editar nodos. Por favor, inicie sesión a través de Configuración.", "sandboxModeWarning": "No se pueden enviar ediciones de nodos de producción al sandbox. Cambie al modo Producción en Configuración para editar nodos.", "enableSubmittableProfile": "Habilite un perfil envíable en Configuración para editar nodos.", diff --git a/lib/localizations/fr.json b/lib/localizations/fr.json index 2001439..5acae0a 100644 --- a/lib/localizations/fr.json +++ b/lib/localizations/fr.json @@ -107,6 +107,7 @@ "profileRequired": "Veuillez sélectionner un profil pour continuer.", "direction": "Direction {}°", "profileNoDirectionInfo": "Ce profil ne nécessite pas de direction.", + "temporarilyDisabled": "Les modifications ont été temporairement désactivées pendant que nous résolvons un bug - désolés - revenez bientôt.", "mustBeLoggedIn": "Vous devez être connecté pour modifier les nœuds. Veuillez vous connecter via les Paramètres.", "sandboxModeWarning": "Impossible de soumettre des modifications de nœuds de production au sandbox. Passez au mode Production dans les Paramètres pour modifier les nœuds.", "enableSubmittableProfile": "Activez un profil soumissible dans les Paramètres pour modifier les nœuds.", diff --git a/lib/localizations/it.json b/lib/localizations/it.json index b1aa322..6452984 100644 --- a/lib/localizations/it.json +++ b/lib/localizations/it.json @@ -107,6 +107,7 @@ "profileRequired": "Per favore seleziona un profilo per continuare.", "direction": "Direzione {}°", "profileNoDirectionInfo": "Questo profilo non richiede una direzione.", + "temporarilyDisabled": "Le modifiche sono state temporaneamente disabilitate mentre risolviamo un bug - scuse - torna presto.", "mustBeLoggedIn": "Devi essere loggato per modificare i nodi. Per favore accedi tramite Impostazioni.", "sandboxModeWarning": "Impossibile inviare modifiche di nodi di produzione alla sandbox. Passa alla modalità Produzione nelle Impostazioni per modificare i nodi.", "enableSubmittableProfile": "Abilita un profilo inviabile nelle Impostazioni per modificare i nodi.", diff --git a/lib/localizations/pt.json b/lib/localizations/pt.json index ad40a40..e722bc9 100644 --- a/lib/localizations/pt.json +++ b/lib/localizations/pt.json @@ -107,6 +107,7 @@ "profileRequired": "Por favor, selecione um perfil para continuar.", "direction": "Direção {}°", "profileNoDirectionInfo": "Este perfil não requer uma direção.", + "temporarilyDisabled": "As edições foram temporariamente desabilitadas enquanto resolvemos um bug - desculpe - volte em breve.", "mustBeLoggedIn": "Você deve estar logado para editar nós. Por favor, faça login via Configurações.", "sandboxModeWarning": "Não é possível enviar edições de nós de produção para o sandbox. Mude para o modo Produção nas Configurações para editar nós.", "enableSubmittableProfile": "Ative um perfil enviável nas Configurações para editar nós.", diff --git a/lib/localizations/zh.json b/lib/localizations/zh.json index 0aa339a..3e3389d 100644 --- a/lib/localizations/zh.json +++ b/lib/localizations/zh.json @@ -107,6 +107,7 @@ "profileRequired": "请选择配置文件以继续。", "direction": "方向 {}°", "profileNoDirectionInfo": "此配置文件不需要方向。", + "temporarilyDisabled": "编辑功能已暂时禁用,我们正在修复一个错误 - 抱歉 - 请稍后再试。", "mustBeLoggedIn": "您必须登录才能编辑节点。请通过设置登录。", "sandboxModeWarning": "无法将生产节点的编辑提交到沙盒。在设置中切换到生产模式以编辑节点。", "enableSubmittableProfile": "在设置中启用可提交的配置文件以编辑节点。", diff --git a/lib/widgets/edit_node_sheet.dart b/lib/widgets/edit_node_sheet.dart index cd949c3..55d4e79 100644 --- a/lib/widgets/edit_node_sheet.dart +++ b/lib/widgets/edit_node_sheet.dart @@ -157,7 +157,8 @@ class EditNodeSheet extends StatelessWidget { final submittableProfiles = appState.enabledProfiles.where((p) => p.isSubmittable).toList(); final isSandboxMode = appState.uploadMode == UploadMode.sandbox; - final allowSubmit = appState.isLoggedIn && + final allowSubmit = kEnableNodeEdits && + appState.isLoggedIn && submittableProfiles.isNotEmpty && session.profile != null && session.profile!.isSubmittable; @@ -209,7 +210,23 @@ class EditNodeSheet extends StatelessWidget { // Direction controls _buildDirectionControls(context, appState, session, locService), - if (!appState.isLoggedIn) + if (!kEnableNodeEdits) + Padding( + padding: const EdgeInsets.fromLTRB(16, 0, 16, 12), + child: Row( + children: [ + const Icon(Icons.construction, color: Colors.orange, size: 20), + const SizedBox(width: 6), + Expanded( + child: Text( + locService.t('editNode.temporarilyDisabled'), + style: const TextStyle(color: Colors.orange, fontSize: 13), + ), + ), + ], + ), + ) + else if (!appState.isLoggedIn) Padding( padding: const EdgeInsets.fromLTRB(16, 0, 16, 12), child: Row( diff --git a/pubspec.yaml b/pubspec.yaml index 794e0e6..7896ad9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: deflockapp description: Map public surveillance infrastructure with OpenStreetMap publish_to: "none" -version: 1.3.1+9 # The thing after the + is the version code, incremented with each release +version: 1.3.2+10 # The thing after the + is the version code, incremented with each release environment: sdk: ">=3.5.0 <4.0.0" # oauth2_client 4.x needs Dart 3.5+