Skip to content

Commit

Permalink
Replace Guava-implemented getUploadCount with RxJava2 version
Browse files Browse the repository at this point in the history
  • Loading branch information
akaita committed Jul 26, 2017
1 parent 9658f18 commit 09d94f3
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 275 deletions.
12 changes: 8 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,18 @@ dependencies {
compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.1.0@aar'){
transitive=true
}

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
compile 'io.reactivex.rxjava2:rxjava:2.1.2'


compile 'com.facebook.fresco:fresco:1.3.0'
compile 'com.facebook.stetho:stetho:1.5.0'
compile "com.google.guava:guava:${GUAVA_VERSION}"

testCompile 'junit:junit:4.12'
testCompile ('org.robolectric:robolectric:3.3.2') {
exclude module: 'guava'
}
testCompile 'org.robolectric:robolectric:3.3.2'

testCompile 'com.squareup.okhttp3:mockwebserver:3.8.1'
androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.8.1'
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
Expand All @@ -23,10 +22,6 @@
import android.widget.Adapter;
import android.widget.AdapterView;

import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;

import java.util.ArrayList;

import butterknife.ButterKnife;
Expand All @@ -38,7 +33,9 @@
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
import fr.free.nrw.commons.settings.Prefs;
import fr.free.nrw.commons.upload.UploadService;
import fr.free.nrw.commons.utils.ExecutorUtils;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import timber.log.Timber;

public class ContributionsActivity
Expand Down Expand Up @@ -68,6 +65,8 @@ Queued to Upload (Sorted in ascending order of time added - FIFO)
*/
private String CONTRIBUTION_SORT = Contribution.Table.COLUMN_STATE + " DESC, " + Contribution.Table.COLUMN_UPLOADED + " DESC , (" + Contribution.Table.COLUMN_TIMESTAMP + " * " + Contribution.Table.COLUMN_STATE + ")";

private CompositeDisposable compositeDisposable = new CompositeDisposable();

private ServiceConnection uploadServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder binder) {
Expand All @@ -84,6 +83,7 @@ public void onServiceDisconnected(ComponentName componentName) {

@Override
protected void onDestroy() {
compositeDisposable.clear();
getSupportFragmentManager().removeOnBackStackChangedListener(this);
super.onDestroy();
if(isUploadServiceConnected) {
Expand All @@ -110,6 +110,8 @@ protected void onPause() {
super.onPause();
}



@Override
protected void onAuthCookieAcquired(String authCookie) {
// Do a sync everytime we get here!
Expand Down Expand Up @@ -268,24 +270,21 @@ public int getTotalMediaCount() {
}

private void setUploadCount() {
UploadCountClient uploadCountClient = new UploadCountClient();
CommonsApplication application = CommonsApplication.getInstance();
ListenableFuture<Integer> future = uploadCountClient
.getUploadCount(application.getCurrentAccount().name);
Futures.addCallback(future, new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer uploadCount) {
getSupportActionBar().setSubtitle(getResources()
.getQuantityString(R.plurals.contributions_subtitle,
uploadCount,
uploadCount));
}

@Override
public void onFailure(@NonNull Throwable t) {
Timber.e(t, "Fetching upload count failed");
}
}, ExecutorUtils.uiExecutor());

compositeDisposable.add(
RxJava2Tasks.getUploadCount(application.getCurrentAccount().name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
uploadCount ->
getSupportActionBar().setSubtitle(getResources()
.getQuantityString(R.plurals.contributions_subtitle,
uploadCount,
uploadCount)),
throwable -> Timber.e(throwable, "Fetching upload count failed")
)
);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package fr.free.nrw.commons.contributions;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Locale;

import fr.free.nrw.commons.PageTitle;
import io.reactivex.Single;

class RxJava2Tasks {

private static final String UPLOAD_COUNT_URL_TEMPLATE =
"https://tools.wmflabs.org/urbanecmbot/uploadsbyuser/uploadsbyuser.py?user=%s";

static Single<Integer> getUploadCount(String userName) {
return Single.fromCallable(() -> {
URL url = new URL(String.format(Locale.ENGLISH, UPLOAD_COUNT_URL_TEMPLATE,
new PageTitle(userName).getText()));
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(urlConnection.getInputStream()));
String uploadCount = bufferedReader.readLine();
bufferedReader.close();
urlConnection.disconnect();
return Integer.parseInt(uploadCount);
});
}
}
Loading

0 comments on commit 09d94f3

Please sign in to comment.