Skip to content

Commit 401b145

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 807ce04 commit 401b145

32 files changed

+737
-1348
lines changed

app/build.gradle

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
plugins {
2-
id 'com.github.triplet.play' version '2.2.1' apply false
3-
}
4-
51
apply from: '../gitutils.gradle'
62
apply plugin: 'com.android.application'
73
apply plugin: 'kotlin-android'
@@ -32,7 +28,7 @@ dependencies {
3228
implementation 'com.facebook.fresco:fresco:1.13.0'
3329
implementation 'com.drewnoakes:metadata-extractor:2.11.0'
3430
implementation 'org.apache.commons:commons-lang3:3.8.1'
35-
implementation 'com.dmitrybrant:wikimedia-android-data-client:0.0.23'
31+
implementation 'com.dmitrybrant:wikimedia-android-data-client:0.0.25'
3632

3733
// UI
3834
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
@@ -69,8 +65,6 @@ dependencies {
6965
testImplementation 'androidx.test:core:1.2.0'
7066
testImplementation 'com.nhaarman:mockito-kotlin:1.5.0'
7167
testImplementation 'com.squareup.okhttp3:mockwebserver:3.10.0'
72-
testImplementation "org.powermock:powermock-module-junit4:2.0.0-beta.5"
73-
testImplementation "org.powermock:powermock-api-mockito2:2.0.0-beta.5"
7468

7569
// Android testing
7670
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
@@ -195,6 +189,7 @@ android {
195189
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.wikimedia.org/wikipedia/commons\""
196190
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.org/wiki/\""
197191
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.org\""
192+
buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
198193
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.org/wiki/\""
199194
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
200195
buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\""
@@ -226,6 +221,7 @@ android {
226221
buildConfigField "String", "IMAGE_URL_BASE", "\"https://upload.beta.wmflabs.org/wikipedia/commons\""
227222
buildConfigField "String", "HOME_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/\""
228223
buildConfigField "String", "COMMONS_URL", "\"https://commons.wikimedia.beta.wmflabs.org\""
224+
buildConfigField "String", "WIKIDATA_URL", "\"https://wikidata.org\""
229225
buildConfigField "String", "MOBILE_HOME_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/wiki/\""
230226
buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\""
231227
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: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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+
8+
public class PageEditClient {
9+
10+
private final CsrfTokenClient csrfTokenClient;
11+
private final PageEditInterface pageEditInterface;
12+
private final Service service;
13+
14+
public PageEditClient(CsrfTokenClient csrfTokenClient,
15+
PageEditInterface pageEditInterface,
16+
Service service) {
17+
this.csrfTokenClient = csrfTokenClient;
18+
this.pageEditInterface = pageEditInterface;
19+
this.service = service;
20+
}
21+
22+
public Observable<Boolean> edit(String pageTitle, String text, String summary) {
23+
try {
24+
return pageEditInterface.postEdit(pageTitle, csrfTokenClient.getTokenBlocking(), text, summary)
25+
.map(editResponse -> editResponse.edit().editSucceeded());
26+
} catch (Throwable throwable) {
27+
return Observable.just(false);
28+
}
29+
}
30+
31+
public Observable<Boolean> appendEdit(String pageTitle, String appendText, String summary) {
32+
try {
33+
return service.postAppendEdit(pageTitle, csrfTokenClient.getTokenBlocking(), appendText, summary)
34+
.map(editResponse -> editResponse.edit().editSucceeded());
35+
} catch (Throwable throwable) {
36+
return Observable.just(false);
37+
}
38+
}
39+
40+
public Observable<Boolean> prependEdit(String pageTitle, String prependText, String summary) {
41+
try {
42+
return service.postPrependEdit(pageTitle, csrfTokenClient.getTokenBlocking(), prependText, summary)
43+
.map(editResponse -> editResponse.edit().editSucceeded());
44+
} catch (Throwable throwable) {
45+
return Observable.just(false);
46+
}
47+
}
48+
49+
public Observable<Integer> addEditTag(long revisionId, String tagName, String reason) {
50+
try {
51+
return service.addEditTag(String.valueOf(revisionId), tagName, reason, csrfTokenClient.getTokenBlocking())
52+
.map(mwPostResponse -> mwPostResponse.getSuccessVal());
53+
} catch (Throwable throwable) {
54+
return Observable.just(-1);
55+
}
56+
}
57+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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&nocreate=")
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+
}
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)