@@ -79,6 +79,8 @@ final class ExtensionViewModel {
7979 case quotaLimit( LibraryIdentifier )
8080 case forbidden( LibraryIdentifier )
8181 case webDavNotVerified
82+ case webDavUnauthorized
83+ case webDavForbidden
8284 case webDavFailure
8385 case md5Missing
8486 case mtimeMissing
@@ -106,6 +108,8 @@ final class ExtensionViewModel {
106108 . webViewError,
107109 . quotaLimit,
108110 . webDavNotVerified,
111+ . webDavUnauthorized,
112+ . webDavForbidden,
109113 . webDavFailure:
110114 return false
111115 }
@@ -1260,6 +1264,24 @@ final class ExtensionViewModel {
12601264 if let error = error as? State . AttachmentState . Error {
12611265 return error
12621266 }
1267+ if let error = error as? WebDavError . Verification {
1268+ DDLogError ( " ExtensionViewModel: webdav verification failed - \( error) " )
1269+ return . webDavNotVerified
1270+ }
1271+ if let error = error as? WebDavError . Upload {
1272+ DDLogError ( " ExtensionViewModel: webdav upload failed - \( error) " )
1273+ switch error {
1274+ case . cantCreatePropData:
1275+ return . webDavFailure
1276+
1277+ case . apiError( let alamoError, _) :
1278+ return webDavError ( from: alamoError)
1279+ }
1280+ }
1281+ if let error = error as? WebDavError . Download {
1282+ DDLogError ( " ExtensionViewModel: webdav download failed - \( error) " )
1283+ return . webDavFailure
1284+ }
12631285 if let error = error as? Parsing . Error {
12641286 DDLogError ( " ExtensionViewModel: could not parse item - \( error) " )
12651287 return . parseError( error)
@@ -1299,6 +1321,32 @@ final class ExtensionViewModel {
12991321 }
13001322 return . unknown
13011323
1324+ func webDavError( from error: AFError ) -> State . AttachmentState . Error {
1325+ switch error {
1326+ case . responseValidationFailed( let reason) :
1327+ switch reason {
1328+ case . unacceptableStatusCode( let code) :
1329+ switch code {
1330+ case 401 :
1331+ return . webDavUnauthorized
1332+
1333+ case 403 :
1334+ return . webDavForbidden
1335+
1336+ default :
1337+ break
1338+ }
1339+
1340+ default :
1341+ break
1342+ }
1343+
1344+ default :
1345+ break
1346+ }
1347+ return . webDavFailure
1348+ }
1349+
13021350 func alamoErrorRequiresAbort( _ error: AFError , url: URL ? , libraryId: LibraryIdentifier ? ) -> State . AttachmentState . Error {
13031351 let defaultError : State . AttachmentState . Error = ( url? . absoluteString ?? ApiConstants . baseUrlString) . contains ( ApiConstants . baseUrlString) ? . apiFailure : . webDavFailure
13041352 switch error {
0 commit comments