prevent deletes without being logged in

This commit is contained in:
stopflock
2026-07-25 17:11:39 -05:00
parent 6a0d4cd8f7
commit 974204bd91
13 changed files with 49 additions and 12 deletions
+2 -1
View File
@@ -1,7 +1,8 @@
{
"2.10.4": {
"content": [
"• Catch and correct a couple rare map bounds issues"
"• Catch and correct a couple rare map bounds issues",
"• Prevent queueing a deletion without being logged in"
]
},
"2.10.3": {
+2 -1
View File
@@ -102,7 +102,8 @@
"confirmDeleteTitle": "Knoten löschen",
"confirmDeleteMessage": "Sind Sie sicher, dass Sie Knoten #{} löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"deleteReasonLabel": "Grund für Löschung (Optional)",
"deleteReasonHint": "z.B. Gerät entfernt, falsche Position, Duplikat..."
"deleteReasonHint": "z.B. Gerät entfernt, falsche Position, Duplikat...",
"mustBeLoggedInToDelete": "Sie müssen mit einem OpenStreetMap-Konto angemeldet sein, um Kartendaten beizutragen."
},
"addNode": {
"profile": "Profil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Delete Node",
"confirmDeleteMessage": "Are you sure you want to delete node #{}? This action cannot be undone.",
"deleteReasonLabel": "Reason for Deletion (Optional)",
"deleteReasonHint": "e.g., device removed, incorrect location, duplicate..."
"deleteReasonHint": "e.g., device removed, incorrect location, duplicate...",
"mustBeLoggedInToDelete": "You must be logged in with an OpenStreetMap account to contribute map data."
},
"addNode": {
"profile": "Profile",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Eliminar Nodo",
"confirmDeleteMessage": "¿Estás seguro de que quieres eliminar el nodo #{}? Esta acción no se puede deshacer.",
"deleteReasonLabel": "Razón para Eliminación (Opcional)",
"deleteReasonHint": "ej. dispositivo removido, ubicación incorrecta, duplicado..."
"deleteReasonHint": "ej. dispositivo removido, ubicación incorrecta, duplicado...",
"mustBeLoggedInToDelete": "Debes iniciar sesión con una cuenta de OpenStreetMap para contribuir con datos del mapa."
},
"addNode": {
"profile": "Perfil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Supprimer le Nœud",
"confirmDeleteMessage": "Êtes-vous sûr de vouloir supprimer le nœud #{} ? Cette action ne peut pas être annulée.",
"deleteReasonLabel": "Raison de Suppression (Optionnel)",
"deleteReasonHint": "ex. appareil retiré, emplacement incorrect, doublon..."
"deleteReasonHint": "ex. appareil retiré, emplacement incorrect, doublon...",
"mustBeLoggedInToDelete": "Vous devez être connecté avec un compte OpenStreetMap pour contribuer aux données cartographiques."
},
"addNode": {
"profile": "Profil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Elimina Nodo",
"confirmDeleteMessage": "Sei sicuro di voler eliminare il nodo #{}? Questa azione non può essere annullata.",
"deleteReasonLabel": "Motivo per Eliminazione (Opzionale)",
"deleteReasonHint": "es. dispositivo rimosso, posizione errata, duplicato..."
"deleteReasonHint": "es. dispositivo rimosso, posizione errata, duplicato...",
"mustBeLoggedInToDelete": "Devi aver effettuato l'accesso con un account OpenStreetMap per contribuire ai dati della mappa."
},
"addNode": {
"profile": "Profilo",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Verwijder Node",
"confirmDeleteMessage": "Weet u zeker dat u node #{} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
"deleteReasonLabel": "Reden voor Verwijdering (Optioneel)",
"deleteReasonHint": "bijv. apparaat verwijderd, onjuiste locatie, duplicaat..."
"deleteReasonHint": "bijv. apparaat verwijderd, onjuiste locatie, duplicaat...",
"mustBeLoggedInToDelete": "U moet ingelogd zijn met een OpenStreetMap-account om kaartgegevens bij te dragen."
},
"addNode": {
"profile": "Profiel",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Usuń Węzeł",
"confirmDeleteMessage": "Czy na pewno chcesz usunąć węzeł #{}? Tej akcji nie można cofnąć.",
"deleteReasonLabel": "Powód Usunięcia (Opcjonalny)",
"deleteReasonHint": "np. urządzenie usunięte, nieprawidłowa lokalizacja, duplikat..."
"deleteReasonHint": "np. urządzenie usunięte, nieprawidłowa lokalizacja, duplikat...",
"mustBeLoggedInToDelete": "Musisz być zalogowany na konto OpenStreetMap, aby dodawać dane do mapy."
},
"addNode": {
"profile": "Profil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Excluir Nó",
"confirmDeleteMessage": "Tem certeza de que deseja excluir o nó #{}? Esta ação não pode ser desfeita.",
"deleteReasonLabel": "Motivo para Exclusão (Opcional)",
"deleteReasonHint": "ex. dispositivo removido, localização incorreta, duplicado..."
"deleteReasonHint": "ex. dispositivo removido, localização incorreta, duplicado...",
"mustBeLoggedInToDelete": "Você precisa estar conectado com uma conta do OpenStreetMap para contribuir com dados do mapa."
},
"addNode": {
"profile": "Perfil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Düğümü Sil",
"confirmDeleteMessage": "#{} düğümünü silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"deleteReasonLabel": "Silme Nedeni (İsteğe Bağlı)",
"deleteReasonHint": "örn. cihaz kaldırıldı, yanlış konum, duplikat..."
"deleteReasonHint": "örn. cihaz kaldırıldı, yanlış konum, duplikat...",
"mustBeLoggedInToDelete": "Harita verilerine katkıda bulunmak için bir OpenStreetMap hesabıyla oturum açmış olmanız gerekir."
},
"addNode": {
"profile": "Profil",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "Видалити Вузол",
"confirmDeleteMessage": "Ви впевнені, що хочете видалити вузол #{}? Цю дію не можна скасувати.",
"deleteReasonLabel": "Причина Видалення (Опціонально)",
"deleteReasonHint": "наприклад пристрій видалено, неправильне розташування, дублікат..."
"deleteReasonHint": "наприклад пристрій видалено, неправильне розташування, дублікат...",
"mustBeLoggedInToDelete": "Ви повинні увійти в обліковий запис OpenStreetMap, щоб надавати дані карти."
},
"addNode": {
"profile": "Профіль",
+2 -1
View File
@@ -139,7 +139,8 @@
"confirmDeleteTitle": "删除节点",
"confirmDeleteMessage": "您确定要删除节点 #{} 吗?此操作无法撤销。",
"deleteReasonLabel": "删除原因(可选)",
"deleteReasonHint": "例如:设备已移除、位置错误、重复..."
"deleteReasonHint": "例如:设备已移除、位置错误、重复...",
"mustBeLoggedInToDelete": "您必须使用 OpenStreetMap 账户登录才能贡献地图数据。"
},
"addNode": {
"profile": "配置文件",
+25
View File
@@ -65,6 +65,31 @@ class NodeTagSheet extends StatelessWidget {
}
void deleteNode() async {
if (!appState.isLoggedIn) {
final shouldLogIn = await showDialog<bool>(
context: context,
builder: (BuildContext context) => AlertDialog(
title: Text(locService.t('node.confirmDeleteTitle')),
content: Text(locService.t('node.mustBeLoggedInToDelete')),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text(locService.cancel),
),
TextButton(
onPressed: () => Navigator.of(context).pop(true),
child: Text(locService.t('actions.logIn')),
),
],
),
);
if ((shouldLogIn ?? false) && context.mounted) {
Navigator.pushNamed(context, '/settings/osm-account');
}
return;
}
final result = await showDialog<({bool confirmed, String comment})>(
context: context,
builder: (BuildContext context) => _DeleteNodeDialog(