@@ -20,7 +20,8 @@ struct ContentView: View {
20
20
@State private var selectedSession : DjangoFilesSession ? // Track session for settings
21
21
@State private var showingSelector = false // Show SessionSelector
22
22
@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
24
25
25
26
@State private var token : String ?
26
27
@@ -35,7 +36,8 @@ struct ContentView: View {
35
36
Text ( item. url)
36
37
. swipeActions ( ) {
37
38
Button ( role: . destructive) {
38
- deleteItems ( offsets: [ items. firstIndex ( of: item) !] )
39
+ itemToDelete = item
40
+ showingDeleteAlert = true
39
41
} label: {
40
42
Label ( " Delete " , systemImage: " trash.fill " )
41
43
}
@@ -48,8 +50,8 @@ struct ContentView: View {
48
50
}
49
51
}
50
52
}
51
- . onDelete ( perform: deleteItems)
52
53
}
54
+ . animation ( . linear, value: items)
53
55
. toolbar {
54
56
ToolbarItem {
55
57
Button ( action: {
@@ -113,6 +115,16 @@ struct ContentView: View {
113
115
}
114
116
. frame ( maxWidth: . infinity, maxHeight: . infinity)
115
117
. 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
+ }
116
128
}
117
129
118
130
private func deleteItems( offsets: IndexSet ) {
0 commit comments