Skip to content

Commit c33c39d

Browse files
authored
Merge branch 'master' into zoom-image
2 parents d48b4f3 + cb3a570 commit c33c39d

File tree

114 files changed

+3429
-1050
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+3429
-1050
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ android:
1515
components:
1616
- tools
1717
- platform-tools
18-
- build-tools-27.0.3
18+
- build-tools-28.0.3
1919
- extra-google-m2repository
2020
- extra-android-m2repository
2121
- android-22
22-
- android-27
22+
- android-28
2323
- sys-img-${ANDROID_ABI}-${ANDROID_TARGET}
2424
licenses:
2525
- android-sdk-license-.+

app/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ dependencies {
3939
implementation files('libs/simplemagic-1.9.jar')
4040
implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
4141
kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
42-
implementation('com.github.esafirm.android-image-picker:imagepicker:1.13.1', {
43-
exclude group: 'com.github.bumptech.glide', module: 'glide'
44-
})
4542

4643
// Logging
4744
implementation 'ch.acra:acra:4.9.2'

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@
6969
<activity
7070
android:name=".contributions.MainActivity"
7171
android:icon="@mipmap/ic_launcher"
72-
android:label="@string/app_name" />
72+
android:label="@string/app_name"
73+
android:configChanges="orientation|screenSize|keyboard" />
7374
<activity
7475
android:name=".settings.SettingsActivity"
7576
android:label="@string/title_activity_settings" />
@@ -158,7 +159,7 @@
158159
android:process=":acra" />
159160

160161
<provider
161-
android:name="android.support.v4.content.FileProvider"
162+
android:name=".filepicker.ExtendedFileProvider"
162163
android:authorities="${applicationId}.provider"
163164
android:exported="false"
164165
android:grantUriPermissions="true">

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package fr.free.nrw.commons;
22

3+
import android.content.Context;
4+
35
/**
46
* Base presenter, enforcing contracts to atach and detach view
57
*/

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
import java.util.regex.Pattern;
1515

1616
import fr.free.nrw.commons.location.LatLng;
17+
import fr.free.nrw.commons.media.model.ImageInfo;
18+
import fr.free.nrw.commons.media.model.MwQueryPage;
19+
import fr.free.nrw.commons.utils.DateUtils;
20+
import fr.free.nrw.commons.utils.StringUtils;
1721

1822
public class Media implements Parcelable {
1923

@@ -428,4 +432,24 @@ public void setRequestedDeletion(){
428432
public boolean getRequestedDeletion(){
429433
return requestedDeletion;
430434
}
435+
436+
public static Media from(MwQueryPage page) {
437+
ImageInfo imageInfo = page.imageInfo();
438+
if(imageInfo == null) {
439+
return null;
440+
}
441+
Media media = new Media(null,
442+
imageInfo.getOriginalUrl(),
443+
page.title(),
444+
imageInfo.getMetadata().imageDescription().value(),
445+
0,
446+
DateUtils.getDateFromString(imageInfo.getMetadata().getDateTimeOriginal().value()),
447+
DateUtils.getDateFromString(imageInfo.getMetadata().getDateTime().value()),
448+
StringUtils.getParsedStringFromHtml(imageInfo.getMetadata().getArtist().value())
449+
);
450+
451+
media.setLicense(imageInfo.getMetadata().getLicenseShortName().value());
452+
453+
return media;
454+
}
431455
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package fr.free.nrw.commons;
22

33
import android.content.ActivityNotFoundException;
4+
import android.content.ClipData;
5+
import android.content.ClipboardManager;
46
import android.content.Context;
57
import android.content.Intent;
68
import android.graphics.Bitmap;
@@ -237,5 +239,14 @@ public static <K,V> Map<K,V> arraysToMap(K[] kArray, V[] vArray){
237239
}
238240
return map;
239241
}
242+
/*
243+
*Copies the content to the clipboard
244+
*
245+
*/
246+
public static void copy(String label,String text, Context context){
247+
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
248+
ClipData clip = ClipData.newPlainText(label, text);
249+
clipboard.setPrimaryClip(clip);
250+
}
240251

241252
}

app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import fr.free.nrw.commons.Utils;
4444
import fr.free.nrw.commons.auth.SessionManager;
4545
import fr.free.nrw.commons.mwapi.MediaWikiApi;
46+
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
4647
import fr.free.nrw.commons.theme.NavigationBaseActivity;
4748
import fr.free.nrw.commons.utils.ViewUtil;
4849
import io.reactivex.Single;
@@ -100,7 +101,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
100101
@Inject
101102
SessionManager sessionManager;
102103
@Inject
103-
MediaWikiApi mediaWikiApi;
104+
OkHttpJsonApiClient okHttpJsonApiClient;
104105
MenuItem item;
105106

106107
private CompositeDisposable compositeDisposable = new CompositeDisposable();
@@ -201,7 +202,7 @@ private void setAchievements() {
201202
if (checkAccount()) {
202203
try{
203204

204-
compositeDisposable.add(mediaWikiApi
205+
compositeDisposable.add(okHttpJsonApiClient
205206
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
206207
.subscribeOn(Schedulers.io())
207208
.observeOn(AndroidSchedulers.mainThread())
@@ -247,7 +248,7 @@ private void onError() {
247248
*/
248249
private void setUploadCount(Achievements achievements) {
249250
if (checkAccount()) {
250-
compositeDisposable.add(mediaWikiApi
251+
compositeDisposable.add(okHttpJsonApiClient
251252
.getUploadCount(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
252253
.subscribeOn(Schedulers.io())
253254
.observeOn(AndroidSchedulers.mainThread())

app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarksActivity.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
import android.view.View;
1111
import android.widget.AdapterView;
1212

13+
import javax.inject.Inject;
14+
1315
import butterknife.BindView;
1416
import butterknife.ButterKnife;
1517
import fr.free.nrw.commons.Media;
1618
import fr.free.nrw.commons.R;
1719
import fr.free.nrw.commons.auth.AuthenticatedActivity;
20+
import fr.free.nrw.commons.contributions.ContributionController;
1821
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
1922
import fr.free.nrw.commons.theme.NavigationBaseActivity;
2023

@@ -31,6 +34,9 @@ public class BookmarksActivity extends NavigationBaseActivity
3134
@BindView(R.id.tabLayoutBookmarks)
3235
TabLayout tabLayout;
3336

37+
@Inject
38+
ContributionController controller;
39+
3440
@Override
3541
protected void onCreate(Bundle savedInstanceState) {
3642
super.onCreate(savedInstanceState);
@@ -67,6 +73,12 @@ public void onBackStackChanged() {
6773
}
6874
}
6975

76+
@Override
77+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
78+
super.onActivityResult(requestCode, resultCode, data);
79+
controller.handleActivityResult(this, requestCode, resultCode, data);
80+
}
81+
7082
/**
7183
* This method is called onClick of media inside category details (CategoryImageListFragment).
7284
*/

app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import android.widget.RelativeLayout;
1414
import android.widget.TextView;
1515

16-
import com.esafirm.imagepicker.features.ImagePicker;
17-
import com.esafirm.imagepicker.model.Image;
1816
import com.pedrogomez.renderers.RVRendererAdapter;
1917

2018
import java.util.ArrayList;
@@ -32,8 +30,6 @@
3230
import fr.free.nrw.commons.kvstore.JsonKvStore;
3331
import fr.free.nrw.commons.nearby.NearbyAdapterFactory;
3432
import fr.free.nrw.commons.nearby.Place;
35-
import fr.free.nrw.commons.utils.ImageUtils;
36-
import fr.free.nrw.commons.utils.IntentUtils;
3733

3834
public class BookmarkLocationsFragment extends DaggerFragment {
3935

@@ -99,12 +95,6 @@ private void initList() {
9995

10096
@Override
10197
public void onActivityResult(int requestCode, int resultCode, Intent data) {
102-
if (IntentUtils.shouldBookmarksHandle(requestCode, resultCode, data)) {
103-
List<Image> images = ImagePicker.getImages(data);
104-
Intent shareIntent = contributionController.handleImagesPicked(ImageUtils.getUriListFromImages(images), requestCode);
105-
startActivity(shareIntent);
106-
} else {
107-
super.onActivityResult(requestCode, resultCode, data);
108-
}
98+
contributionController.handleActivityResult(getActivity(), requestCode, resultCode, data);
10999
}
110100
}

app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesController.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@
88

99
import fr.free.nrw.commons.Media;
1010
import fr.free.nrw.commons.bookmarks.Bookmark;
11-
import fr.free.nrw.commons.mwapi.MediaWikiApi;
11+
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
1212

1313
@Singleton
1414
public class BookmarkPicturesController {
1515

16-
private MediaWikiApi mediaWikiApi;
17-
18-
@Inject
19-
BookmarkPicturesDao bookmarkDao;
16+
private final OkHttpJsonApiClient okHttpJsonApiClient;
17+
private final BookmarkPicturesDao bookmarkDao;
2018

2119
private List<Bookmark> currentBookmarks;
2220

23-
@Inject public BookmarkPicturesController(MediaWikiApi mediaWikiApi) {
24-
this.mediaWikiApi = mediaWikiApi;
21+
@Inject
22+
public BookmarkPicturesController(OkHttpJsonApiClient okHttpJsonApiClient,
23+
BookmarkPicturesDao bookmarkDao) {
24+
this.okHttpJsonApiClient = okHttpJsonApiClient;
25+
this.bookmarkDao = bookmarkDao;
2526
currentBookmarks = new ArrayList<>();
2627
}
2728

@@ -34,7 +35,9 @@ List<Media> loadBookmarkedPictures() {
3435
currentBookmarks = bookmarks;
3536
ArrayList<Media> medias = new ArrayList<>();
3637
for (Bookmark bookmark : bookmarks) {
37-
List<Media> tmpMedias = mediaWikiApi.searchImages(bookmark.getMediaName(), 0);
38+
List<Media> tmpMedias = okHttpJsonApiClient
39+
.searchImages(bookmark.getMediaName(), 0)
40+
.blockingGet();
3841
for (Media m : tmpMedias) {
3942
if (m.getCreator().trim().equals(bookmark.getMediaCreator().trim())) {
4043
medias.add(m);

app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import javax.inject.Inject;
1414
import javax.inject.Named;
1515
import javax.inject.Provider;
16+
import javax.inject.Singleton;
1617

1718
import fr.free.nrw.commons.bookmarks.Bookmark;
1819

1920
import static fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider.BASE_URI;
2021

22+
@Singleton
2123
public class BookmarkPicturesDao {
2224

2325
private final Provider<ContentProviderClient> clientProvider;

app/src/main/java/fr/free/nrw/commons/campaigns/CampaignsPresenter.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package fr.free.nrw.commons.campaigns;
22

3+
import android.annotation.SuppressLint;
4+
import android.content.Context;
35
import android.util.Log;
46

57
import java.text.ParseException;
@@ -8,9 +10,13 @@
810
import java.util.Date;
911
import java.util.List;
1012

13+
import javax.inject.Inject;
14+
import javax.inject.Singleton;
15+
1116
import fr.free.nrw.commons.BasePresenter;
1217
import fr.free.nrw.commons.MvpView;
13-
import fr.free.nrw.commons.mwapi.MediaWikiApi;
18+
import fr.free.nrw.commons.di.ApplicationlessInjection;
19+
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
1420
import io.reactivex.Single;
1521
import io.reactivex.SingleObserver;
1622
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -21,16 +27,22 @@
2127
* The presenter for the campaigns view, fetches the campaigns from the api and informs the view on
2228
* success and error
2329
*/
30+
@Singleton
2431
public class CampaignsPresenter implements BasePresenter {
32+
private final OkHttpJsonApiClient okHttpJsonApiClient;
33+
2534
private final String TAG = "#CampaignsPresenter#";
2635
private ICampaignsView view;
27-
private MediaWikiApi mediaWikiApi;
2836
private Disposable disposable;
2937
private Campaign campaign;
3038

39+
@Inject
40+
public CampaignsPresenter(OkHttpJsonApiClient okHttpJsonApiClient) {
41+
this.okHttpJsonApiClient = okHttpJsonApiClient;
42+
}
43+
3144
@Override public void onAttachView(MvpView view) {
3245
this.view = (ICampaignsView) view;
33-
this.mediaWikiApi = ((ICampaignsView) view).getMediaWikiApi();
3446
}
3547

3648
@Override public void onDetachView() {
@@ -43,14 +55,15 @@ public class CampaignsPresenter implements BasePresenter {
4355
/**
4456
* make the api call to fetch the campaigns
4557
*/
58+
@SuppressLint("CheckResult")
4659
public void getCampaigns() {
47-
if (view != null && mediaWikiApi != null) {
60+
if (view != null && okHttpJsonApiClient != null) {
4861
//If we already have a campaign, lets not make another call
4962
if (this.campaign != null) {
5063
view.showCampaigns(campaign);
5164
return;
5265
}
53-
Single<CampaignResponseDTO> campaigns = mediaWikiApi.getCampaigns();
66+
Single<CampaignResponseDTO> campaigns = okHttpJsonApiClient.getCampaigns();
5467
campaigns.observeOn(AndroidSchedulers.mainThread())
5568
.subscribeOn(Schedulers.io())
5669
.subscribeWith(new SingleObserver<CampaignResponseDTO>() {

app/src/main/java/fr/free/nrw/commons/campaigns/ICampaignsView.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@
77
* Interface which defines the view contracts of the campaign view
88
*/
99
public interface ICampaignsView extends MvpView {
10-
MediaWikiApi getMediaWikiApi();
11-
1210
void showCampaigns(Campaign campaign);
1311
}

0 commit comments

Comments
 (0)