diff --git a/openbis-ipad/BisKit/Classes/CISDOBConnection.m b/openbis-ipad/BisKit/Classes/CISDOBConnection.m index 4abc10d77926f91ffe87802a089fbea1969f68d2..5925f6fd1465f47a9ccd52cdb5214a2f0b53a573 100644 --- a/openbis-ipad/BisKit/Classes/CISDOBConnection.m +++ b/openbis-ipad/BisKit/Classes/CISDOBConnection.m @@ -28,6 +28,23 @@ NSString *const CISDOBConnectionErrorDomain = @"CISDOBConnectionErrorDomain"; +BOOL IsCouldNotConnectToServerError(NSError *error) +{ + if (!error) return NO; + return ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code); +} + +BOOL IsInternetConnectionOfflineError(NSError *error) +{ + if (!error) return NO; + return ([NSURLErrorDomain isEqualToString: error.domain] && -1009 == error.code); +} + +BOOL IsSomeKindOfNetworkConnectionError(NSError *error) +{ + return IsCouldNotConnectToServerError(error) || IsInternetConnectionOfflineError(error); +} + @interface CISDOBConnection (CISDOBConnectionPrivate) diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m b/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m index 08c28b3de2f61ae696449a71a9bfe46261c0579d..146fad8ad096a783562cf5d317f3c91ff86fbbbb 100644 --- a/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m +++ b/openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m @@ -260,7 +260,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl } // Check the error -- the server could be unavailable - if ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code) { + if (IsSomeKindOfNetworkConnectionError(error)) { // "Could not connect to the server" weakSelf.online = NO; } diff --git a/openbis-ipad/BisKit/Classes/CISDOBShared.h b/openbis-ipad/BisKit/Classes/CISDOBShared.h index 80f4df855fac94806a249bcefb80822b6f7636ce..727d14d8dc662e8544553d938e57bfd61f26203c 100644 --- a/openbis-ipad/BisKit/Classes/CISDOBShared.h +++ b/openbis-ipad/BisKit/Classes/CISDOBShared.h @@ -59,6 +59,15 @@ enum CISOBJsonRpcErrorCode { kCISOBJsonRpcError_CallReturnedError = 5, }; +//! Return true if the error is "Could not connect to server" (Domain=NSURLErrorDomain Code=-1004 +BOOL IsCouldNotConnectToServerError(NSError *error); + +//! Return true if the error is "Could not connect to server" (Domain=NSURLErrorDomain Code=-1009 +BOOL IsInternetConnectionOfflineError(NSError *error); + +//! Return true either IsCouldNotConnectToServerError or IsInternetConnectionOfflineError +BOOL IsSomeKindOfNetworkConnectionError(NSError *error); + // // Shared preprocessor macros // diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m index 012b9bae40417487c12c4e1dd7f85d9fea2cceac..b09f18db207808fe34f0b0654024999532c4c4b4 100644 --- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m +++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m @@ -156,8 +156,7 @@ [weakSelf didConnectToServer]; }; call.fail = ^(NSError *error) { - if ([NSURLErrorDomain isEqualToString: error.domain] && -1004 == error.code) { - // "Could not connect to the server" + if (IsSomeKindOfNetworkConnectionError(error)) { [self serverOffline]; } else { [[weakSelf detailViewController] performSegueWithIdentifier: @"ShowLoginDialog" sender: self];