Skip to content

Commit e018c59

Browse files
authored
add server delete confirmation (#29)
* add server delete confirmation * animate deletion
1 parent da74fdc commit e018c59

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

Django Files/Views/ContentView.swift

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ struct ContentView: View {
2020
@State private var selectedSession: DjangoFilesSession? // Track session for settings
2121
@State private var showingSelector = false // Show SessionSelector
2222
@State private var needsRefresh = false // Added to handle refresh after adding server
23-
23+
@State private var itemToDelete: DjangoFilesSession? // Track item to be deleted
24+
@State private var showingDeleteAlert = false // Track if delete alert is showing
2425

2526
@State private var token: String?
2627

@@ -35,7 +36,8 @@ struct ContentView: View {
3536
Text(item.url)
3637
.swipeActions() {
3738
Button(role: .destructive) {
38-
deleteItems(offsets: [items.firstIndex(of: item)!])
39+
itemToDelete = item
40+
showingDeleteAlert = true
3941
} label: {
4042
Label("Delete", systemImage: "trash.fill")
4143
}
@@ -48,8 +50,8 @@ struct ContentView: View {
4850
}
4951
}
5052
}
51-
.onDelete(perform: deleteItems)
5253
}
54+
.animation(.linear, value: items)
5355
.toolbar {
5456
ToolbarItem {
5557
Button(action: {
@@ -113,6 +115,16 @@ struct ContentView: View {
113115
}
114116
.frame(maxWidth: .infinity, maxHeight: .infinity)
115117
.edgesIgnoringSafeArea(.all)
118+
.alert("Delete Server", isPresented: $showingDeleteAlert) {
119+
Button("Cancel", role: .cancel) { }
120+
Button("Delete", role: .destructive) {
121+
if let item = itemToDelete, let index = items.firstIndex(of: item) {
122+
deleteItems(offsets: [index])
123+
}
124+
}
125+
} message: {
126+
Text("Are you sure you want to delete \(URL(string: itemToDelete?.url ?? "")?.host ?? "this server")? This action cannot be undone.")
127+
}
116128
}
117129

118130
private func deleteItems(offsets: IndexSet) {

0 commit comments

Comments
 (0)