Show campaigns (#2113)

* Show campaigns
* Added a ui util class SwipableCardView which passes the onSwipe event to its children
* NearbyCardView & CampaignView extend SwipableCardView
* Fetch campaigns in ContributionsFragment
* Added an option to enable disable campaign in Settings/Preferences

* synced strings with master

* removed duplicate initialsation of CampaignPresenter
This commit is contained in:
Ashish Kumar 2018-12-14 22:25:53 +05:30 committed by Josephine Lim
parent 707c52c768
commit 1b01c6517f
22 changed files with 608 additions and 47 deletions

View file

@ -11,6 +11,7 @@ import android.text.TextUtils;
import com.google.gson.Gson;
import fr.free.nrw.commons.campaigns.CampaignResponseDTO;
import org.apache.http.HttpResponse;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
@ -77,6 +78,8 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
private SharedPreferences categoryPreferences;
private Gson gson;
private final OkHttpClient okHttpClient;
private final String WIKIMEDIA_CAMPAIGNS_BASE_URL =
"https://raw.githubusercontent.com/commons-app/campaigns/master/campaigns.json";
public ApacheHttpClientMediaWikiApi(Context context,
String apiURL,
@ -1054,4 +1057,18 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi {
}
}
@Override public Single<CampaignResponseDTO> getCampaigns() {
return Single.fromCallable(() -> {
Request request = new Request.Builder().url(WIKIMEDIA_CAMPAIGNS_BASE_URL).build();
Response response = okHttpClient.newCall(request).execute();
if (response != null && response.body() != null && response.isSuccessful()) {
String json = response.body().string();
if (json == null) {
return null;
}
return gson.fromJson(json, CampaignResponseDTO.class);
}
return null;
});
}
}

View file

@ -4,6 +4,7 @@ import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import fr.free.nrw.commons.campaigns.CampaignResponseDTO;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
@ -105,6 +106,8 @@ public interface MediaWikiApi {
void logout();
Single<CampaignResponseDTO> getCampaigns();
interface ProgressListener {
void onProgress(long transferred, long total);
}