use of email.schaal.ocreader.api.json.v2.SyncResponse in project ocreader by schaal.
the class APIv2 method sync.
@Override
public void sync(final SharedPreferences sharedPreferences, final Realm realm, SyncType syncType, Intent intent, APICallback<Void, Throwable> apiCallback) {
// TODO: 02.10.16 sync user
final BaseRetrofitCallback<SyncResponse> retrofitCallback = new BaseRetrofitCallback<SyncResponse>(apiCallback) {
@Override
protected void onResponseReal(Response<SyncResponse> response) {
final SyncResponse syncResponse = response.body();
if (syncResponse != null) {
sharedPreferences.edit().putString(Preferences.SYS_APIv2_ETAG.getKey(), response.headers().get("Etag")).apply();
Queries.deleteAndInsert(realm, Folder.class, syncResponse.getFolders());
Queries.deleteAndInsert(realm, Feed.class, syncResponse.getFeeds());
Queries.insert(realm, syncResponse.getItems());
}
}
};
if (intent.getBooleanExtra(SyncService.EXTRA_INITIAL_SYNC, false))
sharedPreferences.edit().remove(Preferences.SYS_APIv2_ETAG.getKey()).apply();
switch(syncType) {
case FULL_SYNC:
case SYNC_CHANGES_ONLY:
final String etag = Preferences.SYS_APIv2_ETAG.getString(sharedPreferences);
if (etag == null) {
api.sync().enqueue(retrofitCallback);
} else {
final Items items = new Items();
items.setItems(realm.where(Item.class).equalTo(Item.UNREAD_CHANGED, true).or().equalTo(Item.STARRED_CHANGED, true).findAll());
api.sync(etag, items).enqueue(retrofitCallback);
}
break;
case LOAD_MORE:
// TODO: 06.09.16
apiCallback.onFailure(new UnsupportedOperationException("not implemented in APIv2"));
break;
}
}
Aggregations