Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/298328

Change subject: Always clear pending image download
......................................................................

Always clear pending image download

• Clear pending image download when external storage write permission is
  already given.

• Don't clear pending download before throwing RTE. This is a "never
  happens" scenario and any additional logic is unnecessary and makes it
  seem probable.

• Annotate pendingDownloadImage as @Nullable to hint at expected usage.

• Rename Constants.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST to
  ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION to match what's
  what's used in other MainActivity request codes.

• Remove unused interface, PermissionUtil.Callback.

• Miscellaneous minor clean up.

Change-Id: Ib19ddea539477d1bee1b5567d14c5a7dcbec21f8
---
M app/src/main/java/org/wikipedia/Constants.java
M app/src/main/java/org/wikipedia/MainActivity.java
M app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
M app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
M app/src/main/java/org/wikipedia/util/PermissionUtil.java
5 files changed, 30 insertions(+), 39 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/28/298328/1

diff --git a/app/src/main/java/org/wikipedia/Constants.java 
b/app/src/main/java/org/wikipedia/Constants.java
index c24e121..f1a2fdf 100644
--- a/app/src/main/java/org/wikipedia/Constants.java
+++ b/app/src/main/java/org/wikipedia/Constants.java
@@ -9,7 +9,7 @@
 
     public static final String WIKIPEDIA_URL = "https://wikipedia.org/";;
 
-    public static final int WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST = 44;
+    public static final int ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION 
= 44;
 
     public static final int MAX_SUGGESTION_RESULTS = 3;
     public static final int SUGGESTION_REQUEST_ITEMS = 5;
diff --git a/app/src/main/java/org/wikipedia/MainActivity.java 
b/app/src/main/java/org/wikipedia/MainActivity.java
index 647a215..5a0ef4f 100644
--- a/app/src/main/java/org/wikipedia/MainActivity.java
+++ b/app/src/main/java/org/wikipedia/MainActivity.java
@@ -108,7 +108,6 @@
 import static 
org.wikipedia.util.PermissionUtil.requestWriteStorageRuntimePermissions;
 
 public class MainActivity extends ThemedActionBarActivity implements 
FeedFragment.Callback {
-
     public enum TabPosition {
         CURRENT_TAB,
         NEW_TAB_BACKGROUND,
@@ -157,7 +156,7 @@
     // The permissions request API doesn't take a callback, so in the event we 
have to
     // ask for permission to download a featured image from the feed, we'll 
have to hold
     // the image we're waiting for permission to download as a bit of state 
here. :(
-    private FeaturedImage pendingDownloadImage;
+    @Nullable private FeaturedImage pendingDownloadImage;
 
     private DialogInterface.OnDismissListener listDialogDismissListener = new 
DialogInterface.OnDismissListener() {
         @Override
@@ -919,12 +918,13 @@
     }
 
     private void download(@NonNull FeaturedImage image) {
+        setPendingDownload(null);
         new MediaDownloadReceiver(MainActivity.this).download(image);
     }
 
     private void requestWriteExternalStoragePermission() {
         requestWriteStorageRuntimePermissions(this,
-                Constants.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST);
+                Constants.ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION);
     }
 
     private void loadMainPageIfNoTabs() {
@@ -1127,6 +1127,28 @@
         searchBarHideHandler.setForceNoFade(false);
     }
 
+    @Override
+    public void onRequestPermissionsResult(int requestCode,
+                                           @NonNull String[] permissions,
+                                           @NonNull int[] grantResults) {
+        switch (requestCode) {
+            case Constants.ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION:
+                if (PermissionUtil.isPermitted(grantResults)) {
+                    if (pendingDownloadImage != null) {
+                        download(pendingDownloadImage);
+                    }
+                } else {
+                    setPendingDownload(null);
+                    L.i("Write permission was denied by user");
+                    FeedbackUtil.showMessage(this,
+                            
R.string.gallery_save_image_write_permission_rationale);
+                }
+                break;
+            default:
+                throw new RuntimeException("unexpected permission request code 
" + requestCode);
+        }
+    }
+
     private <T> void conditionallyInjectCustomCabMenu(T mode) {
         currentActionMode = new CompatActionMode(mode);
         if (currentActionMode.shouldInjectCustomMenu(MainActivity.this)) {
@@ -1220,30 +1242,6 @@
                 new ComponentName(this, WidgetProviderFeaturedPage.class));
         widgetIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
         sendBroadcast(widgetIntent);
-    }
-
-    @Override
-    public void onRequestPermissionsResult(int requestCode,
-                                           @NonNull String[] permissions,
-                                           @NonNull int[] grantResults) {
-        switch (requestCode) {
-            case Constants.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST:
-                if (PermissionUtil.isPermitted(grantResults)) {
-                    if (pendingDownloadImage != null) {
-                        new 
MediaDownloadReceiver(this).download(pendingDownloadImage);
-                        setPendingDownload(null);
-                    }
-                } else {
-                    setPendingDownload(null);
-                    L.i("Write permission was denied by user");
-                    FeedbackUtil.showMessage(this,
-                            
R.string.gallery_save_image_write_permission_rationale);
-                }
-                break;
-            default:
-                setPendingDownload(null);
-                throw new RuntimeException("unexpected permission request code 
" + requestCode);
-        }
     }
 
     private void setPendingDownload(@Nullable FeaturedImage image) {
diff --git 
a/app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java 
b/app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
index c97669c..e5d26ee 100644
--- 
a/app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
+++ 
b/app/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
@@ -374,7 +374,7 @@
         readMoreList.setOnItemClickListener(new 
AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
-                PageTitle title = ((SearchResult) 
adapter.getItem(position)).getPageTitle();
+                PageTitle title = adapter.getItem(position).getPageTitle();
                 HistoryEntry historyEntry = new HistoryEntry(title, 
HistoryEntry.SOURCE_INTERNAL_LINK);
                 activity.loadPage(title, historyEntry);
                 funnel.logSuggestionClicked(pageTitle, results.getResults(), 
position);
diff --git 
a/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java 
b/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
index 0622208..d76a571 100644
--- a/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
+++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
@@ -82,9 +82,6 @@
         return f;
     }
 
-    public GalleryItemFragment() {
-    }
-
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -223,7 +220,7 @@
 
     private void requestWriteExternalStoragePermission() {
         requestWriteStorageRuntimePermissions(this,
-                Constants.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST);
+                Constants.ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION);
     }
 
     /**
@@ -427,7 +424,7 @@
                                            @NonNull String[] permissions,
                                            @NonNull int[] grantResults) {
         switch (requestCode) {
-            case Constants.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST:
+            case Constants.ACTIVITY_REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION:
                 if (PermissionUtil.isPermitted(grantResults)) {
                     saveImage();
                 } else {
diff --git a/app/src/main/java/org/wikipedia/util/PermissionUtil.java 
b/app/src/main/java/org/wikipedia/util/PermissionUtil.java
index 9542fcf..24ec2bc 100644
--- a/app/src/main/java/org/wikipedia/util/PermissionUtil.java
+++ b/app/src/main/java/org/wikipedia/util/PermissionUtil.java
@@ -35,9 +35,5 @@
         // once permission is granted/denied it will continue with 
onRequestPermissionsResult
     }
 
-    public interface Callback {
-        void hasPermission();
-    }
-
     private PermissionUtil() { }
-}
+}
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/298328
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib19ddea539477d1bee1b5567d14c5a7dcbec21f8
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to