Skip to content

Commit 12d36d5

Browse files
committed
Ensure caption is shown on every review fragment
1 parent 48b5c0a commit 12d36d5

File tree

6 files changed

+137
-124
lines changed

6 files changed

+137
-124
lines changed

app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,8 @@ public Single<Revision> firstRevisionOfFile(String filename) {
471471
.get();
472472
return new Revision(
473473
res.getString("/api/query/pages/page/revisions/rev/@revid"),
474-
res.getString("/api/query/pages/page/revisions/rev/@user"));
474+
res.getString("/api/query/pages/page/revisions/rev/@user"),
475+
filename);
475476
});
476477
}
477478

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

3+
import fr.free.nrw.commons.PageTitle;
4+
35
public class Revision {
4-
public String revisionId;
5-
public String username;
6+
public final String revisionId;
7+
public final String username;
8+
public final PageTitle pageTitle;
69

7-
public Revision(String revisionId, String username) {
10+
public Revision(String revisionId, String username, String pageTitle) {
811
this.revisionId = revisionId;
912
this.username = username;
13+
this.pageTitle = new PageTitle(pageTitle);
1014
}
1115
}

app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,16 @@
55
import android.os.Bundle;
66

77
import android.support.design.widget.NavigationView;
8-
import android.support.v4.view.ViewPager;
98
import android.support.v4.widget.DrawerLayout;
109
import android.support.v7.widget.Toolbar;
1110

12-
import android.util.AttributeSet;
13-
import android.util.Log;
1411
import android.view.Menu;
1512
import android.view.MenuItem;
16-
import android.view.MotionEvent;
1713
import android.view.View;
1814
import android.widget.ProgressBar;
1915

2016
import com.viewpagerindicator.CirclePageIndicator;
2117

22-
import org.mediawiki.api.MWApi;
23-
2418
import java.io.IOException;
2519
import java.util.ArrayList;
2620

@@ -140,7 +134,13 @@ private void updateImage(String fileName) {
140134
return;
141135
}
142136
reviewController.onImageRefreshed(fileName); //file name is updated
143-
reviewPagerAdapter.updateFilename();
137+
mwApi.firstRevisionOfFile("File:" + fileName)
138+
.subscribeOn(Schedulers.io())
139+
.observeOn(AndroidSchedulers.mainThread())
140+
.subscribe(revision -> {
141+
reviewController.firstRevision = revision;
142+
reviewPagerAdapter.updateFileInformation(fileName, revision);
143+
});
144144
reviewPager.setCurrentItem(0);
145145
Observable.fromCallable(() -> {
146146
MediaResult media = mwApi.fetchMediaByFilename("File:" + fileName);
@@ -150,12 +150,6 @@ private void updateImage(String fileName) {
150150
.observeOn(AndroidSchedulers.mainThread())
151151
.subscribe(this::updateCategories, this::categoryFetchError);
152152

153-
mwApi.firstRevisionOfFile("File:" + fileName).subscribeOn(Schedulers.io())
154-
.observeOn(AndroidSchedulers.mainThread())
155-
.subscribe(revision -> {
156-
ReviewController.firstRevision = revision;
157-
((ReviewImageFragment)reviewPagerAdapter.getItem(reviewPager.getCurrentItem())).updateImageCaption();
158-
});
159153

160154
}
161155

app/src/main/java/fr/free/nrw/commons/review/ReviewController.java

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

33
import android.content.Context;
4+
import android.support.annotation.Nullable;
45
import android.support.v4.view.ViewPager;
56

67
import java.util.ArrayList;
@@ -17,12 +18,14 @@
1718
*/
1819

1920
public class ReviewController {
20-
public static String fileName;
21-
public static Revision firstRevision; // TODO: maybe we can expand this class to include fileName
21+
private String fileName;
22+
@Nullable
23+
public Revision firstRevision; // TODO: maybe we can expand this class to include fileName
2224
protected static ArrayList<String> categories;
23-
ReviewPagerAdapter reviewPagerAdapter;
24-
ViewPager viewPager;
25-
ReviewActivity reviewActivity;
25+
26+
private ReviewPagerAdapter reviewPagerAdapter;
27+
private ViewPager viewPager;
28+
private ReviewActivity reviewActivity;
2629

2730
ReviewController(Context context) {
2831
reviewActivity = (ReviewActivity)context;
@@ -31,7 +34,7 @@ public class ReviewController {
3134
}
3235

3336
public void onImageRefreshed(String fileName) {
34-
ReviewController.fileName = fileName;
37+
this.fileName = fileName;
3538
ReviewController.categories = new ArrayList<>();
3639
}
3740

app/src/main/java/fr/free/nrw/commons/review/ReviewImageFragment.java

Lines changed: 107 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -15,126 +15,136 @@
1515
import fr.free.nrw.commons.R;
1616
import fr.free.nrw.commons.Utils;
1717
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
18+
import fr.free.nrw.commons.mwapi.Revision;
1819

1920
/**
2021
* Created by root on 19.05.2018.
2122
*/
2223

2324
public class ReviewImageFragment extends CommonsDaggerSupportFragment {
2425

25-
public static final int SPAM = 0;
26-
public static final int COPYRIGHT = 1;
27-
public static final int CATEGORY = 2;
28-
public static final int THANKS = 3;
26+
public static final int SPAM = 0;
27+
public static final int COPYRIGHT = 1;
28+
public static final int CATEGORY = 2;
29+
public static final int THANKS = 3;
2930

30-
private int position;
31-
private String fileName;
32-
private String catString;
31+
private int position;
32+
private String fileName;
33+
private String catString;
3334

34-
private View textViewQuestionContext;
35-
private View imageCaption;
36-
private View textViewQuestion;
37-
private SimpleDraweeView simpleDraweeView;
35+
private View textViewQuestionContext;
36+
private View imageCaption;
37+
private View textViewQuestion;
38+
private SimpleDraweeView simpleDraweeView;
3839

39-
private Button yesButton;
40-
private Button noButton;
40+
private Button yesButton;
41+
private Button noButton;
4142

42-
public ProgressBar progressBar;
43+
public ProgressBar progressBar;
44+
private Revision revision;
4345

4446

45-
public void update(int position, String fileName) {
46-
this.position = position;
47-
this.fileName = fileName;
47+
public void update(int position, String fileName, Revision revision) {
48+
this.position = position;
49+
this.fileName = fileName;
50+
this.revision = revision;
4851

49-
if (simpleDraweeView!=null) {
50-
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
51-
progressBar.setVisibility(View.GONE);
52-
}
53-
}
52+
fillImageCaption();
5453

55-
public void updateCategories(Iterable<String> categories) {
56-
if (categories!=null && isAdded()) {
57-
catString = TextUtils.join(", ", categories);
58-
if (catString != null && !catString.equals("") && textViewQuestionContext != null) {
59-
catString = "<b>"+catString+"</b>";
60-
String stringToConvertHtml = String.format(getResources().getString(R.string.review_category_explanation), catString);
61-
((TextView) textViewQuestionContext).setText(Html.fromHtml(stringToConvertHtml));
62-
} else if (textViewQuestionContext != null) {
63-
((TextView)textViewQuestionContext).setText(getResources().getString(R.string.review_no_category));
64-
}
54+
if (simpleDraweeView != null) {
55+
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
56+
progressBar.setVisibility(View.GONE);
57+
}
58+
}
59+
60+
public void updateCategories(Iterable<String> categories) {
61+
if (categories != null && isAdded()) {
62+
catString = TextUtils.join(", ", categories);
63+
if (catString != null && !catString.equals("") && textViewQuestionContext != null) {
64+
catString = "<b>" + catString + "</b>";
65+
String stringToConvertHtml = String.format(getResources().getString(R.string.review_category_explanation), catString);
66+
((TextView) textViewQuestionContext).setText(Html.fromHtml(stringToConvertHtml));
67+
} else if (textViewQuestionContext != null) {
68+
((TextView) textViewQuestionContext).setText(getResources().getString(R.string.review_no_category));
6569
}
6670
}
67-
68-
@Override
69-
public void onCreate(Bundle savedInstanceState) {
70-
super.onCreate(savedInstanceState);
71+
}
72+
73+
@Override
74+
public void onCreate(Bundle savedInstanceState) {
75+
super.onCreate(savedInstanceState);
76+
}
77+
78+
@Override
79+
public View onCreateView(LayoutInflater inflater, ViewGroup container,
80+
Bundle savedInstanceState) {
81+
position = getArguments().getInt("position");
82+
View layoutView = inflater.inflate(R.layout.fragment_review_image, container,
83+
false);
84+
progressBar = layoutView.findViewById(R.id.progressBar);
85+
textViewQuestion = layoutView.findViewById(R.id.reviewQuestion);
86+
textViewQuestionContext = layoutView.findViewById(R.id.reviewQuestionContext);
87+
imageCaption = layoutView.findViewById(R.id.imageCaption);
88+
yesButton = layoutView.findViewById(R.id.yesButton);
89+
noButton = layoutView.findViewById(R.id.noButton);
90+
91+
fillImageCaption();
92+
93+
String question, explanation;
94+
switch (position) {
95+
case COPYRIGHT:
96+
question = getString(R.string.review_copyright);
97+
explanation = getString(R.string.review_copyright_explanation);
98+
yesButton.setOnClickListener(view -> {
99+
((ReviewActivity) getActivity()).reviewController.reportPossibleCopyRightViolation();
100+
});
101+
break;
102+
case CATEGORY:
103+
question = getString(R.string.review_category);
104+
explanation = getString(R.string.review_no_category);
105+
updateCategories(ReviewController.categories);
106+
yesButton.setOnClickListener(view -> {
107+
((ReviewActivity) getActivity()).reviewController.reportWrongCategory();
108+
});
109+
break;
110+
case SPAM:
111+
question = getString(R.string.review_spam);
112+
explanation = getString(R.string.review_spam_explanation);
113+
yesButton.setOnClickListener(view -> {
114+
((ReviewActivity) getActivity()).reviewController.reportSpam();
115+
});
116+
break;
117+
case THANKS:
118+
question = getString(R.string.review_thanks);
119+
explanation = getString(R.string.review_thanks_explanation, ((ReviewActivity) getActivity()).reviewController.firstRevision.username);
120+
yesButton.setOnClickListener(view -> {
121+
((ReviewActivity) getActivity()).reviewController.sendThanks();
122+
});
123+
break;
124+
default:
125+
question = "How did we get here?";
126+
explanation = "No idea.";
71127
}
72128

73-
@Override
74-
public View onCreateView(LayoutInflater inflater, ViewGroup container,
75-
Bundle savedInstanceState) {
76-
position = getArguments().getInt("position");
77-
View layoutView = inflater.inflate(R.layout.fragment_review_image, container,
78-
false);
79-
progressBar = layoutView.findViewById(R.id.progressBar);
80-
textViewQuestion = layoutView.findViewById(R.id.reviewQuestion);
81-
textViewQuestionContext = layoutView.findViewById(R.id.reviewQuestionContext);
82-
imageCaption = layoutView.findViewById(R.id.imageCaption);
83-
yesButton = layoutView.findViewById(R.id.yesButton);
84-
noButton = layoutView.findViewById(R.id.noButton);
85-
String question, explanation;
86-
switch(position) {
87-
case COPYRIGHT:
88-
question = getString(R.string.review_copyright);
89-
explanation = getString(R.string.review_copyright_explanation);
90-
yesButton.setOnClickListener(view -> {
91-
((ReviewActivity)getActivity()).reviewController.reportPossibleCopyRightViolation();
92-
});
93-
break;
94-
case CATEGORY:
95-
question = getString(R.string.review_category);
96-
explanation = getString(R.string.review_no_category);
97-
updateCategories(ReviewController.categories);
98-
yesButton.setOnClickListener(view -> {
99-
((ReviewActivity)getActivity()).reviewController.reportWrongCategory();
100-
});
101-
break;
102-
case SPAM:
103-
question = getString(R.string.review_spam);
104-
explanation = getString(R.string.review_spam_explanation);
105-
yesButton.setOnClickListener(view -> {
106-
((ReviewActivity)getActivity()).reviewController.reportSpam();
107-
});
108-
break;
109-
case THANKS:
110-
question = getString(R.string.review_thanks);
111-
explanation = getString(R.string.review_thanks_explanation);
112-
yesButton.setOnClickListener(view -> {
113-
((ReviewActivity)getActivity()).reviewController.sendThanks();
114-
});
115-
break;
116-
default:
117-
question = "How did we get here?";
118-
explanation = "No idea.";
119-
}
120-
121-
noButton.setOnClickListener(view -> {
122-
((ReviewActivity)getActivity()).reviewController.swipeToNext();
123-
});
129+
noButton.setOnClickListener(view -> {
130+
((ReviewActivity) getActivity()).reviewController.swipeToNext();
131+
});
124132

125-
((TextView) textViewQuestion).setText(question);
126-
((TextView) textViewQuestionContext).setText(explanation);
133+
((TextView) textViewQuestion).setText(question);
134+
((TextView) textViewQuestionContext).setText(explanation);
127135

128-
simpleDraweeView = layoutView.findViewById(R.id.imageView);
136+
simpleDraweeView = layoutView.findViewById(R.id.imageView);
129137

130-
if (fileName != null) {
131-
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
132-
progressBar.setVisibility(View.GONE);
133-
}
134-
return layoutView;
138+
if (fileName != null) {
139+
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
140+
progressBar.setVisibility(View.GONE);
135141
}
142+
return layoutView;
143+
}
136144

137-
public void updateImageCaption() {
138-
((TextView)imageCaption).setText(fileName+" is uploaded by: "+ReviewController.firstRevision.username);
145+
private void fillImageCaption() {
146+
if (imageCaption != null && fileName != null && revision != null) {
147+
((TextView) imageCaption).setText(fileName + " is uploaded by: " + revision.username);
139148
}
149+
}
140150
}

app/src/main/java/fr/free/nrw/commons/review/ReviewPagerAdapter.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
import android.support.v4.app.FragmentManager;
66
import android.support.v4.app.FragmentStatePagerAdapter;
77

8+
import fr.free.nrw.commons.mwapi.Revision;
9+
810
/**
911
* Created by nes on 19.05.2018.
1012
*/
1113

1214
public class ReviewPagerAdapter extends FragmentStatePagerAdapter {
13-
private int currentPosition;
1415
ReviewImageFragment[] reviewImageFragments;
1516

1617

@@ -26,13 +27,13 @@ public ReviewPagerAdapter(FragmentManager fm) {
2627

2728
@Override
2829
public int getCount() {
29-
return 4;
30+
return reviewImageFragments.length;
3031
}
3132

32-
public void updateFilename() {
33+
public void updateFileInformation(String fileName, Revision revision) {
3334
for (int i = 0; i < getCount(); i++) {
3435
ReviewImageFragment fragment = reviewImageFragments[i];
35-
fragment.update(i, ReviewController.fileName);
36+
fragment.update(i, fileName, revision);
3637
}
3738
}
3839

0 commit comments

Comments
 (0)