Skip to content

Commit 1bf4004

Browse files
committed
Consume login client from data client library
Fix actions for review client Use data client library for notifications With delete helper migrated to data client With wikidata edits With notifications and modifications migrated to data client With upload migrated to retrofit Delete unused code Reuse thank interface from the library
1 parent 7ad9d8f commit 1bf4004

35 files changed

+874
-1657
lines changed

app/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
plugins {
22
id 'com.github.triplet.play' version '2.2.1' apply false
33
}
4-
54
apply from: '../gitutils.gradle'
65
apply plugin: 'com.android.application'
76
apply plugin: 'kotlin-android'
@@ -32,7 +31,7 @@ dependencies {
3231
implementation 'com.facebook.fresco:fresco:1.13.0'
3332
implementation 'com.drewnoakes:metadata-extractor:2.11.0'
3433
implementation 'org.apache.commons:commons-lang3:3.8.1'
35-
implementation 'com.dmitrybrant:wikimedia-android-data-client:0.0.23'
34+
implementation 'com.dmitrybrant:wikimedia-android-data-client:0.0.25'
3635

3736
// UI
3837
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
@@ -195,6 +194,7 @@ android {
195194
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
196195
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
197196
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\""
197+
buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
198198
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
199199
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
200200
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\""
@@ -226,6 +226,7 @@ android {
226226
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
227227
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
228228
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\""
229+
buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
229230
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
230231
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
231232
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\""

app/src/main/java/fr/free/nrw/commons/CommonsAppAdapter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,16 @@ public String getPassword() {
6161

6262
@Override
6363
public void updateAccount(@NonNull LoginResult result) {
64-
// TODO: sessionManager.updateAccount(result);
64+
sessionManager.updateAccount(result);
6565
}
6666

6767
@Override
6868
public SharedPreferenceCookieManager getCookies() {
6969
if (!preferences.contains(COOKIE_STORE_NAME)) {
7070
return null;
7171
}
72-
return GsonUnmarshaller.unmarshal(SharedPreferenceCookieManager.class, preferences.getString(COOKIE_STORE_NAME, null));
72+
return GsonUnmarshaller.unmarshal(SharedPreferenceCookieManager.class,
73+
preferences.getString(COOKIE_STORE_NAME, null));
7374
}
7475

7576
@Override
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package fr.free.nrw.commons.actions;
2+
3+
import org.wikipedia.csrf.CsrfTokenClient;
4+
import org.wikipedia.dataclient.Service;
5+
6+
import io.reactivex.Observable;
7+
import timber.log.Timber;
8+
9+
public class PageEditClient {
10+
11+
private final CsrfTokenClient csrfTokenClient;
12+
private final PageEditInterface pageEditInterface;
13+
private final Service service;
14+
15+
public PageEditClient(CsrfTokenClient csrfTokenClient,
16+
PageEditInterface pageEditInterface,
17+
Service service) {
18+
this.csrfTokenClient = csrfTokenClient;
19+
this.pageEditInterface = pageEditInterface;
20+
this.service = service;
21+
}
22+
23+
public Observable<Boolean> edit(String pageTitle, String text, String summary) {
24+
try {
25+
return pageEditInterface.postEdit(pageTitle, summary, text, csrfTokenClient.getTokenBlocking())
26+
.map(editResponse -> editResponse.edit().editSucceeded());
27+
} catch (Throwable throwable) {
28+
return Observable.just(false);
29+
}
30+
}
31+
32+
public Observable<Boolean> appendEdit(String pageTitle, String appendText, String summary) {
33+
try {
34+
return pageEditInterface.postAppendEdit(pageTitle, summary, appendText, csrfTokenClient.getTokenBlocking())
35+
.map(editResponse -> editResponse.edit().editSucceeded());
36+
} catch (Throwable throwable) {
37+
return Observable.just(false);
38+
}
39+
}
40+
41+
public Observable<Boolean> prependEdit(String pageTitle, String prependText, String summary) {
42+
try {
43+
return pageEditInterface.postPrependEdit(pageTitle, summary, prependText, csrfTokenClient.getTokenBlocking())
44+
.map(editResponse -> editResponse.edit().editSucceeded());
45+
} catch (Throwable throwable) {
46+
return Observable.just(false);
47+
}
48+
}
49+
50+
public Observable<Integer> addEditTag(long revisionId, String tagName, String reason) {
51+
try {
52+
return service.addEditTag(String.valueOf(revisionId), tagName, reason, csrfTokenClient.getTokenBlocking())
53+
.map(mwPostResponse -> mwPostResponse.getSuccessVal());
54+
} catch (Throwable throwable) {
55+
return Observable.just(-1);
56+
}
57+
}
58+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package fr.free.nrw.commons.actions;
2+
3+
import androidx.annotation.NonNull;
4+
5+
import org.wikipedia.edit.Edit;
6+
7+
import io.reactivex.Observable;
8+
import retrofit2.http.Field;
9+
import retrofit2.http.FormUrlEncoded;
10+
import retrofit2.http.Headers;
11+
import retrofit2.http.POST;
12+
13+
import static org.wikipedia.dataclient.Service.MW_API_PREFIX;
14+
15+
public interface PageEditInterface {
16+
17+
@FormUrlEncoded
18+
@Headers("Cache-Control: no-cache")
19+
@POST(MW_API_PREFIX + "action=edit")
20+
@NonNull
21+
Observable<Edit> postEdit(@NonNull @Field("title") String title,
22+
@NonNull @Field("summary") String summary,
23+
@NonNull @Field("text") String text,
24+
@NonNull @Field("token") String token);
25+
26+
@FormUrlEncoded
27+
@Headers("Cache-Control: no-cache")
28+
@POST(MW_API_PREFIX + "action=edit")
29+
@NonNull Observable<Edit> postAppendEdit(@NonNull @Field("title") String title,
30+
@NonNull @Field("summary") String summary,
31+
@NonNull @Field("appendtext") String text,
32+
@NonNull @Field("token") String token);
33+
34+
@FormUrlEncoded
35+
@Headers("Cache-Control: no-cache")
36+
@POST(MW_API_PREFIX + "action=edit")
37+
@NonNull Observable<Edit> postPrependEdit(@NonNull @Field("title") String title,
38+
@NonNull @Field("summary") String summary,
39+
@NonNull @Field("prependtext") String text,
40+
@NonNull @Field("token") String token);
41+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package fr.free.nrw.commons.actions;
2+
3+
import org.wikipedia.csrf.CsrfTokenClient;
4+
import org.wikipedia.dataclient.Service;
5+
6+
import javax.inject.Inject;
7+
import javax.inject.Named;
8+
import javax.inject.Singleton;
9+
10+
import fr.free.nrw.commons.CommonsApplication;
11+
import io.reactivex.Observable;
12+
13+
@Singleton
14+
public class ThanksClient {
15+
16+
private final CsrfTokenClient csrfTokenClient;
17+
private final Service service;
18+
19+
@Inject
20+
public ThanksClient(@Named("commons-csrf") CsrfTokenClient csrfTokenClient,
21+
@Named("commons-service") Service service) {
22+
this.csrfTokenClient = csrfTokenClient;
23+
this.service = service;
24+
}
25+
26+
public Observable<Boolean> thank(long revisionId) {
27+
try {
28+
return service.thank(String.valueOf(revisionId), null,
29+
csrfTokenClient.getTokenBlocking(),
30+
CommonsApplication.getInstance().getUserAgent())
31+
.map(mwQueryResponse -> mwQueryResponse.getSuccessVal() == 1);
32+
} catch (Throwable throwable) {
33+
return Observable.just(false);
34+
}
35+
}
36+
}

app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@
33
import android.accounts.Account;
44
import android.accounts.AccountManager;
55
import android.content.Context;
6-
import androidx.annotation.Nullable;
76

7+
import androidx.annotation.Nullable;
88
import fr.free.nrw.commons.BuildConfig;
99
import timber.log.Timber;
1010

1111
public class AccountUtil {
1212

1313
public static final String AUTH_COOKIE = "authCookie";
1414
public static final String AUTH_TOKEN_TYPE = "CommonsAndroid";
15-
private final Context context;
1615

17-
public AccountUtil(Context context) {
18-
this.context = context;
16+
public AccountUtil() {
1917
}
2018

2119
/**
@@ -49,5 +47,4 @@ public static String getPassword(Context context) {
4947
private static AccountManager accountManager(Context context) {
5048
return AccountManager.get(context);
5149
}
52-
5350
}

0 commit comments

Comments
 (0)