@@ -19,6 +19,7 @@ struct ContentView: View {
19
19
@State private var selectedServer : DjangoFilesSession ? = DjangoFilesSession ( )
20
20
@State private var selectedSession : DjangoFilesSession ? // Track session for settings
21
21
@State private var showingSelector = false // Show SessionSelector
22
+ @State private var needsRefresh = false // Added to handle refresh after adding server
22
23
23
24
@State private var token : String ?
24
25
@@ -42,14 +43,12 @@ struct ContentView: View {
42
43
Label ( " Settings " , systemImage: " gear " )
43
44
}
44
45
. tint ( . indigo)
45
- }
46
+ }
46
47
}
47
48
}
48
- . onDelete ( perform: deleteItems) }
49
+ . onDelete ( perform: deleteItems)
50
+ }
49
51
. toolbar {
50
- ToolbarItem ( placement: . navigationBarTrailing) {
51
- EditButton ( )
52
- }
53
52
ToolbarItem {
54
53
Button ( action: {
55
54
self . showingEditor. toggle ( )
@@ -60,24 +59,26 @@ struct ContentView: View {
60
59
}
61
60
}
62
61
} detail: {
63
- AuthViewContainer ( viewingSettings: $viewingSettings, selectedServer: $selectedServer, columnVisibility: $columnVisibility, showingEditor: $showingEditor)
62
+ AuthViewContainer ( viewingSettings: $viewingSettings, selectedServer: $selectedServer, columnVisibility: $columnVisibility, showingEditor: $showingEditor, needsRefresh : $needsRefresh )
64
63
. navigationViewStyle ( StackNavigationViewStyle ( ) )
65
64
}
66
65
. sheet ( isPresented: $showingEditor) {
67
- SessionEditor ( session: nil ) // New session case
66
+ SessionEditor ( session: nil )
67
+ . onDisappear {
68
+ // When editor is dismissed, trigger a refresh and select the new server
69
+ if items. count > 0 {
70
+ needsRefresh = true
71
+ selectedServer = items. last
72
+ }
73
+ }
68
74
}
69
75
. sheet ( item: $selectedSession) { session in
70
76
SessionSelector ( session: session)
71
77
}
72
78
. onAppear ( ) {
73
79
setDefaultServer ( )
74
- if items. count > 0 {
75
- selectedServer = items. first ( where: {
76
- $0. defaultSession == true
77
- } )
78
- if selectedServer == nil {
79
- selectedServer = items. first
80
- }
80
+ if items. count > 0 {
81
+ selectedServer = items. first ( where: { $0. defaultSession } ) ?? items. first
81
82
}
82
83
}
83
84
. frame ( maxWidth: . infinity, maxHeight: . infinity)
@@ -123,9 +124,10 @@ public struct AuthViewContainer: View {
123
124
var selectedServer : Binding < DjangoFilesSession ? >
124
125
var columnVisibility : Binding < NavigationSplitViewVisibility >
125
126
var showingEditor : Binding < Bool >
127
+ var needsRefresh : Binding < Bool >
128
+
126
129
@State private var toolbarHidden : Bool = false
127
130
@State private var authError : Bool = false
128
-
129
131
@State private var authController : AuthController = AuthController ( )
130
132
131
133
var backButton : some View { Button ( action: {
@@ -193,31 +195,34 @@ public struct AuthViewContainer: View {
193
195
. onAppear ( ) {
194
196
authController. setSafeAreaInsets ( geometry. safeAreaInsets)
195
197
columnVisibility. wrappedValue = . automatic
198
+ if needsRefresh. wrappedValue {
199
+ authController. reset ( )
200
+ needsRefresh. wrappedValue = false
201
+ }
196
202
}
197
203
. onChange ( of: geometry. safeAreaInsets) {
198
204
authController. setSafeAreaInsets ( geometry. safeAreaInsets)
199
- authController. updatePageSafeArea ( )
200
- }
201
- . toolbar ( toolbarHidden && UIDevice . current. userInterfaceIdiom == . phone ? . hidden : . visible)
202
- . navigationTitle ( Text ( " " ) )
203
- . navigationBarBackButtonHidden ( true )
204
- . navigationBarItems ( leading: backButton)
205
- . alert ( isPresented: $authError) {
206
- Alert ( title: Text ( " Error " ) , message: Text ( authController. getAuthErrorMessage ( ) ?? " Unknown Error " ) )
207
205
}
208
206
}
209
207
. frame ( maxWidth: . infinity, maxHeight: . infinity)
210
208
. edgesIgnoringSafeArea ( . all)
209
+ . toolbar ( toolbarHidden && UIDevice . current. userInterfaceIdiom == . phone ? . hidden : . visible)
210
+ . navigationTitle ( Text ( " " ) )
211
+ . navigationBarBackButtonHidden ( true )
212
+ . navigationBarItems ( leading: backButton)
213
+ . alert ( isPresented: $authError) {
214
+ Alert ( title: Text ( " Error " ) , message: Text ( authController. getAuthErrorMessage ( ) ?? " Unknown Error " ) )
215
+ }
211
216
}
212
- else {
217
+ else {
213
218
Text ( " Loading... " )
214
219
. onAppear ( ) {
215
220
columnVisibility. wrappedValue = . automatic
216
221
}
217
222
}
218
223
}
219
224
else {
220
- Text ( " Select an item " )
225
+ Text ( " Select a Server " )
221
226
. onAppear ( ) {
222
227
columnVisibility. wrappedValue = . automatic
223
228
}
0 commit comments