77import android .view .Gravity ;
88import android .widget .Toast ;
99
10- import org .wikipedia .dataclient .mwapi .MwQueryPage ;
10+ import androidx .annotation .NonNull ;
11+ import androidx .annotation .Nullable ;
12+ import androidx .core .app .NotificationCompat ;
1113
12- import java . util . ArrayList ;
14+ import org . wikipedia . dataclient . mwapi . MwQueryPage ;
1315
1416import javax .inject .Inject ;
1517import javax .inject .Singleton ;
1618
17- import androidx .annotation .NonNull ;
18- import androidx .annotation .Nullable ;
19- import androidx .core .app .NotificationCompat ;
20- import androidx .viewpager .widget .ViewPager ;
19+ import fr .free .nrw .commons .CommonsApplication ;
2120import fr .free .nrw .commons .Media ;
2221import fr .free .nrw .commons .R ;
2322import fr .free .nrw .commons .auth .SessionManager ;
3130
3231@ Singleton
3332public class ReviewController {
34- private String fileName ;
35- public static final int NOTIFICATION_SEND_THANK = 0x102 ;
36- protected static ArrayList <String > categories ;
37- public static final int NOTIFICATION_CHECK_CATEGORY = 0x101 ;
33+ private static final int NOTIFICATION_SEND_THANK = 0x102 ;
34+ private static final int NOTIFICATION_CHECK_CATEGORY = 0x101 ;
3835 private final DeleteHelper deleteHelper ;
3936 @ Nullable
40- public MwQueryPage .Revision firstRevision ; // TODO: maybe we can expand this class to include fileName
37+ MwQueryPage .Revision firstRevision ; // TODO: maybe we can expand this class to include fileName
4138 @ Inject
4239 MediaWikiApi mwApi ;
4340 @ Inject
@@ -46,63 +43,52 @@ public class ReviewController {
4643 private NotificationCompat .Builder notificationBuilder ;
4744 private Media media ;
4845
49- private ViewPager viewPager ;
50- private ReviewActivity reviewActivity ;
51-
5246 ReviewController (DeleteHelper deleteHelper , Context context ) {
5347 this .deleteHelper = deleteHelper ;
54- reviewActivity = (ReviewActivity ) context ;
55- viewPager = ((ReviewActivity ) context ).reviewPager ;
56- }
57-
58- public void onImageRefreshed (String fileName ) {
59- this .fileName = fileName ;
60- media = new Media ("File:" + fileName );
61- ReviewController .categories = new ArrayList <>();
48+ CommonsApplication .createNotificationChannel (context .getApplicationContext ());
49+ notificationManager = (NotificationManager ) context .getSystemService (Context .NOTIFICATION_SERVICE );
50+ notificationBuilder = new NotificationCompat .Builder (context , CommonsApplication .NOTIFICATION_CHANNEL_ID_ALL );
6251 }
6352
64- public void onCategoriesRefreshed ( ArrayList < String > categories ) {
65- ReviewController . categories = categories ;
53+ void onImageRefreshed ( Media media ) {
54+ this . media = media ;
6655 }
6756
68- public void swipeToNext () {
69- int nextPos = viewPager .getCurrentItem () + 1 ;
70- if (nextPos <= 3 ) {
71- viewPager .setCurrentItem (nextPos );
72- } else {
73- reviewActivity .runRandomizer ();
74- }
57+ public Media getMedia () {
58+ return media ;
7559 }
7660
7761 public enum DeleteReason {
7862 SPAM ,
7963 COPYRIGHT_VIOLATION
8064 }
8165
82- public void reportSpam (@ NonNull Activity activity ) {
83- deleteHelper .askReasonAndExecute (new Media ("File:" + fileName ),
66+ void reportSpam (@ NonNull Activity activity , ReviewCallback reviewCallback ) {
67+ Timber .d ("Report spam for %s" , media .getFilename ());
68+ deleteHelper .askReasonAndExecute (media ,
8469 activity ,
8570 activity .getResources ().getString (R .string .review_spam_report_question ),
86- DeleteReason .SPAM );
71+ DeleteReason .SPAM ,
72+ reviewCallback );
8773 }
8874
89- public void reportPossibleCopyRightViolation (@ NonNull Activity activity ) {
90- deleteHelper .askReasonAndExecute (new Media ("File:" + fileName ),
75+ void reportPossibleCopyRightViolation (@ NonNull Activity activity , ReviewCallback reviewCallback ) {
76+ Timber .d ("Report spam for %s" , media .getFilename ());
77+ deleteHelper .askReasonAndExecute (media ,
9178 activity ,
9279 activity .getResources ().getString (R .string .review_c_violation_report_question ),
93- DeleteReason .COPYRIGHT_VIOLATION );
80+ DeleteReason .COPYRIGHT_VIOLATION ,
81+ reviewCallback );
9482 }
9583
9684 @ SuppressLint ("CheckResult" )
97- public void reportWrongCategory (@ NonNull Activity activity ) {
85+ void reportWrongCategory (@ NonNull Activity activity , ReviewCallback reviewCallback ) {
9886 Context context = activity .getApplicationContext ();
9987 ApplicationlessInjection
10088 .getInstance (context )
10189 .getCommonsApplicationComponent ()
10290 .inject (this );
10391
104- notificationManager = (NotificationManager ) context .getSystemService (Context .NOTIFICATION_SERVICE );
105- notificationBuilder = new NotificationCompat .Builder (context );
10692 Toast toast = new Toast (context );
10793 toast .setGravity (Gravity .CENTER , 0 , 0 );
10894 toast = Toast .makeText (context , context .getString (R .string .check_category_toast , media .getDisplayTitle ()), Toast .LENGTH_SHORT );
@@ -120,7 +106,8 @@ public void reportWrongCategory(@NonNull Activity activity) {
120106
121107 try {
122108 editToken = mwApi .getEditToken ();
123- if (editToken .equals ("+\\ " )) {
109+
110+ if (editToken == null ) {
124111 return false ;
125112 }
126113 publishProgress (context , 1 );
@@ -136,15 +123,17 @@ public void reportWrongCategory(@NonNull Activity activity) {
136123 .subscribeOn (Schedulers .io ())
137124 .observeOn (AndroidSchedulers .mainThread ())
138125 .subscribe ((result ) -> {
139- String message = "" ;
140- String title = "" ;
126+ String message ;
127+ String title ;
141128
142129 if (result ) {
143130 title = context .getString (R .string .check_category_success_title );
144131 message = context .getString (R .string .check_category_success_message , media .getDisplayTitle ());
132+ reviewCallback .onSuccess ();
145133 } else {
146134 title = context .getString (R .string .check_category_failure_title );
147135 message = context .getString (R .string .check_category_failure_message , media .getDisplayTitle ());
136+ reviewCallback .onFailure ();
148137 }
149138
150139 notificationBuilder .setDefaults (NotificationCompat .DEFAULT_ALL )
@@ -176,15 +165,13 @@ private void publishProgress(@NonNull Context context, int i) {
176165 notificationManager .notify (NOTIFICATION_CHECK_CATEGORY , notificationBuilder .build ());
177166 }
178167
179- @ SuppressLint ("CheckResult" )
180- public void sendThanks (@ NonNull Activity activity ) {
168+ @ SuppressLint ({ "CheckResult" , "StringFormatInvalid" } )
169+ void sendThanks (@ NonNull Activity activity ) {
181170 Context context = activity .getApplicationContext ();
182171 ApplicationlessInjection
183172 .getInstance (context )
184173 .getCommonsApplicationComponent ()
185174 .inject (this );
186- notificationManager = (NotificationManager ) context .getSystemService (Context .NOTIFICATION_SERVICE );
187- notificationBuilder = new NotificationCompat .Builder (context );
188175 Toast toast = new Toast (context );
189176 toast .setGravity (Gravity .CENTER , 0 , 0 );
190177 toast = Toast .makeText (context , context .getString (R .string .send_thank_toast , media .getDisplayTitle ()), Toast .LENGTH_SHORT );
@@ -200,7 +187,7 @@ public void sendThanks(@NonNull Activity activity) {
200187
201188 try {
202189 editToken = mwApi .getEditToken ();
203- if (editToken . equals ( "+ \\ " ) ) {
190+ if (editToken == null ) {
204191 return false ;
205192 }
206193 publishProgress (context , 1 );
@@ -238,4 +225,10 @@ public void sendThanks(@NonNull Activity activity) {
238225
239226 }, Timber ::e );
240227 }
228+
229+ public interface ReviewCallback {
230+ void onSuccess ();
231+
232+ void onFailure ();
233+ }
241234}
0 commit comments