44
55import SwiftUI
66import LucidBanner
7+ import NextcloudKit
78import Alamofire
89
910// MARK: - Show Banner
@@ -43,7 +44,10 @@ func showBanner(scene: UIWindowScene?,
4344 imageAnimation: LucidBanner . LucidBannerAnimationStyle ,
4445 imageColor: UIColor ,
4546 vPosition: LucidBanner . VerticalPosition = . top,
46- backgroundColor: UIColor ) async {
47+ backgroundColor: UIColor ,
48+ autoDismissAfter: TimeInterval = NCGlobal . shared. dismissAfterSecond,
49+ swipeToDismiss: Bool = true ,
50+ policy: LucidBanner . ShowPolicy = . enqueue) async {
4751#if !EXTENSION
4852 let scene = scene ?? UIApplication . shared. mainAppWindow? . windowScene
4953#endif
@@ -57,13 +61,14 @@ func showBanner(scene: UIWindowScene?,
5761 textColor: Color ( uiColor: textColor) ,
5862 imageColor: Color ( uiColor: imageColor) ,
5963 vPosition: vPosition,
60- autoDismissAfter: NCGlobal . shared . dismissAfterSecond ,
61- swipeToDismiss: true
64+ autoDismissAfter: autoDismissAfter ,
65+ swipeToDismiss: swipeToDismiss
6266 )
6367
6468 LucidBanner . shared. show (
6569 scene: scene,
66- payload: payload) { state in
70+ payload: payload,
71+ policy: policy) { state in
6772 MessageBannerView ( state: state)
6873 }
6974}
@@ -192,6 +197,16 @@ func showErrorBannerActiveScenes(title: String = "_error_",
192197 }
193198}
194199
200+ @MainActor
201+ func showErrorBanner( controller: UITabBarController ? ,
202+ error: NKError ) async {
203+ let scene = SceneManager . shared. getWindow ( controller: controller) ? . windowScene
204+ await showErrorBanner ( scene: scene,
205+ title: " _error_ " ,
206+ text: error. errorDescription,
207+ errorCode: error. errorCode)
208+ }
209+
195210@MainActor
196211func showErrorBanner( controller: UITabBarController ? ,
197212 title: String = " _error_ " ,
@@ -287,13 +302,21 @@ func showErrorBanner(scene: UIWindowScene?,
287302}
288303
289304// MARK: - Helper
305+
290306#if !EXTENSION
307+
308+ // Error 401 (maintenance mode)
309+ // Error 423 (locked)
310+ // Error 507 (insufficient storage)
311+ // Error -1009 (NSURLErrorNotConnectedToInternet)
312+ // Error -1003 (NSURLErrorCannotFindHost)
313+
291314func bannerContainsError( errorCode: Int ? , afError: AFError ? = nil ) -> Bool {
292315 guard let errorCode else {
293316 return false
294317 }
295318 // List of errors not to be displayed
296- if errorCode == - 999 {
319+ if errorCode == - 999 || errorCode == 423 {
297320 return true
298321 }
299322 if let afError, case . explicitlyCancelled = afError {
@@ -307,11 +330,6 @@ func bannerContainsError(errorCode: Int?, afError: AFError? = nil) -> Bool {
307330 } else {
308331 // Coalesce user-facing errors across the current foreground session.
309332 // The same error code is shown to the user only once.
310- // Error 401 (maintenance mode)
311- // Error 423 (locked)
312- // Error 507 (insufficient storage)
313- // Error -1009 (NSURLErrorNotConnectedToInternet)
314- // Error -1003 (NSURLErrorCannotFindHost)
315333 if errorCode == 401 ||
316334 errorCode == 423 ||
317335 errorCode == 507 ||
0 commit comments