@@ -82,6 +82,9 @@ struct ContentView: View {
8282 @State private var showApplyToast = false
8383 @State private var applyToastMessage = " "
8484 @State private var applyToastIsError = false
85+ @State private var showRefreshToast = false
86+ @State private var refreshToastMessage = " "
87+ @State private var refreshToastIsError = false
8588
8689 enum AppTab : String , CaseIterable {
8790 case rules = " Rules "
@@ -172,14 +175,13 @@ struct ContentView: View {
172175 . environmentObject ( settings)
173176 . preferredColorScheme ( settings. themeMode == . dark ? . dark : settings. themeMode == . light ? . light : nil )
174177 . modifier ( ToastOverlay (
175- message: applyToastMessage,
176- icon: applyToastIsError ? " exclamationmark.triangle.fill " : " checkmark.circle.fill " ,
177- iconColor: applyToastIsError ? colors. accentOrange : colors. accentGreen,
178- isShowing: showApplyToast,
178+ message: showRefreshToast ? refreshToastMessage : applyToastMessage,
179+ icon: ( showRefreshToast ? refreshToastIsError : applyToastIsError) ? " exclamationmark.triangle.fill " : " checkmark.circle.fill " ,
180+ iconColor: ( showRefreshToast ? refreshToastIsError : applyToastIsError) ? colors. accentOrange : colors. accentGreen,
181+ isShowing: showApplyToast || showRefreshToast ,
179182 colors: colors
180183 ) )
181184 . onChange ( of: routeManager. isApplying) { applying in
182- // When applying finishes, check the result
183185 if !applying {
184186 switch routeManager. applyResult {
185187 case . success( let count) :
@@ -197,6 +199,22 @@ struct ContentView: View {
197199 }
198200 }
199201 }
202+ . onChange ( of: routeManager. refreshResult) { result in
203+ switch result {
204+ case . success( let domain, let count) :
205+ refreshToastMessage = " \( domain) → \( count) IP \( count == 1 ? " " : " s " ) resolved "
206+ refreshToastIsError = false
207+ withAnimation { showRefreshToast = true }
208+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + 3 ) { withAnimation { showRefreshToast = false } }
209+ case . error( let msg) :
210+ refreshToastMessage = msg
211+ refreshToastIsError = true
212+ withAnimation { showRefreshToast = true }
213+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + 4 ) { withAnimation { showRefreshToast = false } }
214+ case . none:
215+ break
216+ }
217+ }
200218 }
201219}
202220
0 commit comments