Search in sources :

Example 1 with SyncResponse

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;
    }
}
Also used : Response(retrofit2.Response) SyncResponse(email.schaal.ocreader.api.json.v2.SyncResponse) Item(email.schaal.ocreader.database.model.Item) SyncResponse(email.schaal.ocreader.api.json.v2.SyncResponse) Items(email.schaal.ocreader.api.json.Items)

Aggregations

Items (email.schaal.ocreader.api.json.Items)1 SyncResponse (email.schaal.ocreader.api.json.v2.SyncResponse)1 Item (email.schaal.ocreader.database.model.Item)1 Response (retrofit2.Response)1