diff --git a/app/src/main/java/iammert/com/androidarchitecture/data/NetworkBoundResource.java b/app/src/main/java/iammert/com/androidarchitecture/data/NetworkBoundResource.java index a37044b..c6c6e86 100644 --- a/app/src/main/java/iammert/com/androidarchitecture/data/NetworkBoundResource.java +++ b/app/src/main/java/iammert/com/androidarchitecture/data/NetworkBoundResource.java @@ -50,7 +50,19 @@ private void fetchFromNetwork(final LiveData dbSource) { @Override public void onResponse(Call call, Response response) { result.removeSource(dbSource); - saveResultAndReInit(response.body()); + if(response.isSuccessful()) { + saveResultAndReInit(response.body()); + return; + } + result.addSource(dbSource, newData->{ + try { + result.setValue(Resource.error(response.errorBody().string(), newData)); + } catch (IOException e) { + + // reload from disk whatever we had + result.setValue(Resource.success(newData)); + } + }); } @Override