Mholloway has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/327117 )

Change subject: Display date in featured image share subject when coming from 
the gallery
......................................................................

Display date in featured image share subject when coming from the gallery

Change-Id: I38cb6dcd274c1a9b9248d266f28aab3a0c053ca6
---
M 
app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java
M app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java
M app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java
M app/src/main/java/org/wikipedia/feed/news/NewsListCard.java
M app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java
M app/src/main/java/org/wikipedia/main/MainFragment.java
A app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java
M app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java
M app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java
M app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
M app/src/main/java/org/wikipedia/util/ShareUtil.java
11 files changed, 135 insertions(+), 63 deletions(-)


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

diff --git 
a/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java
 
b/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java
index db561fa..9b4699c 100644
--- 
a/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java
+++ 
b/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java
@@ -91,16 +91,16 @@
                 AggregatedFeedContent content = response.body();
                 // todo: remove age check when news endpoint provides dated 
content, T139481.
                 if (age == 0 && content.news() != null) {
-                    cards.add(new NewsListCard(content.news(), date, wiki));
+                    cards.add(new NewsListCard(content.news(), age, wiki));
                 }
                 if (content.tfa() != null) {
-                    cards.add(new FeaturedArticleCard(content.tfa(), date, 
wiki));
+                    cards.add(new FeaturedArticleCard(content.tfa(), age, 
wiki));
                 }
                 if (content.mostRead() != null) {
                     cards.add(new MostReadListCard(content.mostRead(), wiki));
                 }
                 if (content.potd() != null) {
-                    cards.add(new FeaturedImageCard(content.potd(), date, 
wiki));
+                    cards.add(new FeaturedImageCard(content.potd(), age, 
wiki));
                 }
                 cb.success(cards);
             } else {
diff --git 
a/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java 
b/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java
index ef1feca..31c5f70 100644
--- a/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java
+++ b/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java
@@ -21,10 +21,10 @@
     @NonNull private WikiSite wiki;
     @NonNull private FeedPageSummary page;
 
-    public FeaturedArticleCard(@NonNull FeedPageSummary page, @NonNull UtcDate 
date, @NonNull WikiSite wiki) {
+    public FeaturedArticleCard(@NonNull FeedPageSummary page, int age, 
@NonNull WikiSite wiki) {
         this.page = page;
         this.wiki = wiki;
-        this.date = date;
+        this.date = new UtcDate(age);
     }
 
     @Override
diff --git a/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java 
b/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java
index 67e2a5d..be67938 100644
--- a/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java
+++ b/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java
@@ -14,13 +14,15 @@
 
 public class FeaturedImageCard extends Card {
     @NonNull private UtcDate date;
+    private int age;
     @NonNull private WikiSite wiki;
     @NonNull private FeaturedImage featuredImage;
 
-    public FeaturedImageCard(@NonNull FeaturedImage featuredImage, @NonNull 
UtcDate date, @NonNull WikiSite wiki) {
+    public FeaturedImageCard(@NonNull FeaturedImage featuredImage, int age, 
@NonNull WikiSite wiki) {
         this.featuredImage = featuredImage;
+        this.age = age;
         this.wiki = wiki;
-        this.date = date;
+        this.date = new UtcDate(age);
     }
 
     @NonNull
@@ -33,6 +35,10 @@
         return date;
     }
 
+    public int age() {
+        return age;
+    }
+
     @Override
     @NonNull
     public String title() {
diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java 
b/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java
index f303b48..bb80d43 100644
--- a/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java
+++ b/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java
@@ -13,11 +13,11 @@
 import java.util.concurrent.TimeUnit;
 
 public class NewsListCard extends ListCard<NewsItemCard> {
-    @NonNull private UtcDate age;
+    @NonNull private UtcDate date;
 
-    public NewsListCard(@NonNull List<NewsItem> news, @NonNull UtcDate age, 
@NonNull WikiSite wiki) {
+    public NewsListCard(@NonNull List<NewsItem> news, int age, @NonNull 
WikiSite wiki) {
         super(toItemCards(news, wiki));
-        this.age = age;
+        this.date = new UtcDate(age);
     }
 
     @NonNull @Override public String title() {
@@ -28,8 +28,8 @@
         return CardType.NEWS_LIST;
     }
 
-    @NonNull public UtcDate age() {
-        return age;
+    @NonNull public UtcDate date() {
+        return date;
     }
 
     @NonNull @VisibleForTesting static List<NewsItemCard> toItemCards(@NonNull 
List<NewsItem> items, @NonNull WikiSite wiki) {
@@ -41,6 +41,6 @@
     }
 
     @Override protected int dismissHashCode() {
-        return (int) 
TimeUnit.MILLISECONDS.toDays(age.baseCalendar().getTime().getTime());
+        return (int) 
TimeUnit.MILLISECONDS.toDays(date.baseCalendar().getTime().getTime());
     }
 }
diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java 
b/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java
index 37e1e5c..b113044 100644
--- a/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java
+++ b/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java
@@ -33,7 +33,7 @@
     private void header(@NonNull NewsListCard card) {
         CardHeaderView header = new CardHeaderView(getContext())
                 .setTitle(R.string.view_card_news_title)
-                
.setSubtitle(DateUtil.getFeedCardDateString(card.age().baseCalendar()))
+                
.setSubtitle(DateUtil.getFeedCardDateString(card.date().baseCalendar()))
                 .setImage(R.drawable.icon_in_the_news)
                 .setImageCircleColor(R.color.gray_disabled)
                 .setCard(card)
diff --git a/app/src/main/java/org/wikipedia/main/MainFragment.java 
b/app/src/main/java/org/wikipedia/main/MainFragment.java
index 3cee59d..a82cb48 100644
--- a/app/src/main/java/org/wikipedia/main/MainFragment.java
+++ b/app/src/main/java/org/wikipedia/main/MainFragment.java
@@ -249,7 +249,7 @@
                     ShareUtil.shareImage(getContext(),
                             bitmap,
                             new File(thumbUrl).getName(),
-                            
ShareUtil.getFeaturedImageShareSubject(getContext(), card),
+                            
ShareUtil.getFeaturedImageShareSubject(getContext(), 
card.date().baseCalendar()),
                             fullSizeUrl);
                 } else {
                     FeedbackUtil.showMessage(MainFragment.this, 
getString(R.string.gallery_share_error, card.baseImage().title()));
@@ -268,9 +268,9 @@
     }
 
     @Override public void onFeaturedImageSelected(FeaturedImageCard card) {
-        startActivityForResult(GalleryActivity.newIntent(getActivity(), 
card.filename(),
-                card.wikiSite(), GalleryFunnel.SOURCE_FEED_FEATURED_IMAGE, 
card.baseImage()),
-                Constants.ACTIVITY_REQUEST_GALLERY);
+        startActivityForResult(GalleryActivity.newIntent(getActivity(), 
card.age(),
+                card.filename(), card.baseImage(), card.wikiSite(),
+                GalleryFunnel.SOURCE_FEED_FEATURED_IMAGE), 
Constants.ACTIVITY_REQUEST_GALLERY);
     }
 
     @NonNull
diff --git 
a/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java 
b/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java
new file mode 100644
index 0000000..0a267ac
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java
@@ -0,0 +1,34 @@
+package org.wikipedia.page.gallery;
+
+import android.support.annotation.NonNull;
+
+import org.wikipedia.feed.image.FeaturedImage;
+import org.wikipedia.page.ImageLicense;
+
+class FeaturedImageGalleryItem extends GalleryItem {
+
+    private int age;
+
+    FeaturedImageGalleryItem(@NonNull FeaturedImage featuredImage, int age) {
+        super(featuredImage.title());
+        this.age = age;
+        setUrl(featuredImage.image().source().toString());
+        setWidth(featuredImage.image().width());
+        setHeight(featuredImage.image().height());
+        setThumbUrl(featuredImage.thumbnail().source().toString());
+        setWildcardMimeType();
+        setPlaceHolderLicense();
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    private void setWildcardMimeType() {
+        setMimeType("*/*");
+    }
+
+    private void setPlaceHolderLicense() {
+        setLicense(new ImageLicense());
+    }
+}
diff --git a/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java 
b/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java
index 83f21ba..7cdf0cf 100644
--- a/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java
+++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java
@@ -67,8 +67,8 @@
     public static final String EXTRA_FILENAME = "filename";
     public static final String EXTRA_WIKI = "wiki";
     public static final String EXTRA_SOURCE = "source";
-    public static final String EXTRA_FEATURED_IMAGE = "card";
-    public static final String EXTRA_IS_FEATURED_IMAGE = "is_featured";
+    public static final String EXTRA_FEATURED_IMAGE = "featuredImage";
+    public static final String EXTRA_FEATURED_IMAGE_AGE = "featuredImageAge";
 
     @NonNull private WikipediaApp app = WikipediaApp.getInstance();
     @Nullable private PageTitle pageTitle;
@@ -138,11 +138,11 @@
     };
 
     @NonNull
-    public static Intent newIntent(@NonNull Context context, @NonNull String 
filename,
-                                   @NonNull WikiSite wiki, int source,
-                                   @NonNull FeaturedImage image) {
-        return newIntent(context, null, filename, wiki,
-                source).putExtra(EXTRA_FEATURED_IMAGE, 
GsonMarshaller.marshal(image));
+    public static Intent newIntent(@NonNull Context context, int age, @NonNull 
String filename,
+                                   @NonNull FeaturedImage image, @NonNull 
WikiSite wiki, int source) {
+        return newIntent(context, null, filename, wiki, source)
+                .putExtra(EXTRA_FEATURED_IMAGE, GsonMarshaller.marshal(image))
+                .putExtra(EXTRA_FEATURED_IMAGE_AGE, age);
     }
 
     @NonNull
@@ -235,7 +235,8 @@
         if (getIntent().hasExtra(EXTRA_FEATURED_IMAGE)) {
             FeaturedImage featuredImage = 
GsonUnmarshaller.unmarshal(FeaturedImage.class,
                     getIntent().getStringExtra(EXTRA_FEATURED_IMAGE));
-            loadGalleryItemFor(featuredImage);
+            int age = getIntent().getIntExtra(EXTRA_FEATURED_IMAGE_AGE, 0);
+            loadGalleryItemFor(featuredImage, age);
         } else {
             // find our Page in the page cache...
             app.getPageCache().get(pageTitle, 0, new 
PageCache.CacheGetListener() {
@@ -269,9 +270,9 @@
         super.onDestroy();
     }
 
-    private void loadGalleryItemFor(@NonNull FeaturedImage image) {
+    private void loadGalleryItemFor(@NonNull FeaturedImage image, int age) {
         List<GalleryItem> list = new ArrayList<>();
-        list.add(new GalleryItem(image));
+        list.add(new FeaturedImageGalleryItem(image, age));
         applyGalleryCollection(new GalleryCollection(list));
     }
 
diff --git a/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java 
b/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java
index 5713bc6..c9dbaa2 100644
--- a/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java
+++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java
@@ -6,7 +6,6 @@
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.wikipedia.feed.image.FeaturedImage;
 import org.wikipedia.page.ImageLicense;
 import org.wikipedia.page.ImageLicenseFetchTask;
 
@@ -14,58 +13,83 @@
 import java.util.Iterator;
 import java.util.Map;
 
-public class GalleryItem {
+class GalleryItem {
 
-    private final JSONObject json;
+    private JSONObject json;
+    private String name;
+    private String url;
+    private String mimeType;
+    private HashMap<String, String> metadata;
+    private String thumbUrl;
+    private int width;
+    private int height;
+    @NonNull private ImageLicense license;
+
     public JSONObject toJSON() {
         return json;
     }
 
-    private final String name;
     public String getName() {
         return name;
     }
 
-    private String url;
     public String getUrl() {
         return url;
     }
 
-    private final String mimeType;
+    void setUrl(@NonNull String url) {
+        this.url = url;
+    }
+
     public String getMimeType() {
         return mimeType;
     }
 
-    private final HashMap<String, String> metadata;
+    void setMimeType(@NonNull String mimeType) {
+        this.mimeType = mimeType;
+    }
+
     public Map<String, String> getMetadata() {
         return metadata;
     }
 
-    private final String thumbUrl;
     public String getThumbUrl() {
         return thumbUrl;
     }
 
-    private final int width;
+    void setThumbUrl(@NonNull String thumbUrl) {
+        this.thumbUrl = thumbUrl;
+    }
+
     public int getWidth() {
         return width;
     }
 
-    private final int height;
+    void setWidth(int width) {
+        this.width = width;
+    }
+
     public int getHeight() {
         return height;
     }
 
-    @NonNull private final ImageLicense license;
+    void setHeight(int height) {
+        this.height = height;
+    }
+
     @NonNull public ImageLicense getLicense() {
         return license;
+    }
+
+    void setLicense(@NonNull ImageLicense license) {
+        this.license = license;
     }
 
     @NonNull public String getLicenseUrl() {
         return license.getLicenseUrl();
     }
 
-    public GalleryItem(String name) {
+    GalleryItem(String name) {
         this.json = null;
         this.name = name;
         this.url = null;
@@ -77,19 +101,7 @@
         this.license = new ImageLicense();
     }
 
-    public GalleryItem(FeaturedImage featuredImage) {
-        this.json = null;
-        this.name = featuredImage.title();
-        this.url = featuredImage.image().source().toString();
-        this.mimeType = "*/*";
-        this.thumbUrl = featuredImage.thumbnail().source().toString();
-        this.metadata = null;
-        this.width = featuredImage.image().width();
-        this.height = featuredImage.image().height();
-        this.license = new ImageLicense();
-    }
-
-    public GalleryItem(JSONObject json) throws JSONException {
+    GalleryItem(JSONObject json) throws JSONException {
         this.json = json;
         this.name = json.getString("title");
         this.metadata = new HashMap<>();
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 6cd3fd4..d8a9509 100644
--- a/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
+++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java
@@ -35,6 +35,7 @@
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.dataclient.WikiSite;
+import org.wikipedia.feed.model.UtcDate;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.util.FeedbackUtil;
 import org.wikipedia.util.FileUtil;
@@ -52,6 +53,8 @@
     public static final String ARG_PAGETITLE = "pageTitle";
     public static final String ARG_MEDIATITLE = "imageTitle";
     public static final String ARG_MIMETYPE = "mimeType";
+    public static final String ARG_FEED_FEATURED_IMAGE = "feedFeaturedImage";
+    public static final String ARG_AGE = "age";
 
     private ProgressBar progressBar;
     private ZoomableDraweeView imageView;
@@ -66,6 +69,7 @@
     @Nullable private PageTitle pageTitle;
     @SuppressWarnings("NullableProblems") @NonNull private PageTitle 
imageTitle;
     @Nullable private String mimeType;
+    private int age;
 
     @Nullable private GalleryItem galleryItem;
     @Nullable public GalleryItem getGalleryItem() {
@@ -79,6 +83,12 @@
         args.putParcelable(ARG_PAGETITLE, pageTitle);
         args.putParcelable(ARG_MEDIATITLE, new 
PageTitle(galleryItemProto.getName(), wiki));
         args.putString(ARG_MIMETYPE, galleryItemProto.getMimeType());
+
+        if (galleryItemProto instanceof FeaturedImageGalleryItem) {
+            args.putBoolean(ARG_FEED_FEATURED_IMAGE, true);
+            args.putInt(ARG_AGE, ((FeaturedImageGalleryItem) 
galleryItemProto).getAge());
+        }
+
         f.setArguments(args);
         return f;
     }
@@ -90,6 +100,10 @@
         //noinspection ConstantConditions
         imageTitle = getArguments().getParcelable(ARG_MEDIATITLE);
         mimeType = getArguments().getString(ARG_MIMETYPE);
+
+        if (getArguments().getBoolean(ARG_FEED_FEATURED_IMAGE)) {
+            age = getArguments().getInt(ARG_AGE);
+        }
     }
 
     @Override
@@ -418,9 +432,7 @@
                     ShareUtil.shareImage(parentActivity,
                             bitmap,
                             new File(galleryItem.getUrl()).getName(),
-                            pageTitle != null
-                                    ? pageTitle.getDisplayText()
-                                    : 
ShareUtil.getFeaturedImageShareSubject(getContext(), null),
+                            getShareSubject(),
                             imageTitle.getCanonicalUri());
                 } else {
                     ShareUtil.shareText(parentActivity, imageTitle);
@@ -448,6 +460,16 @@
         }
     }
 
+    @Nullable
+    private String getShareSubject() {
+        if (getArguments().getBoolean(ARG_FEED_FEATURED_IMAGE)) {
+            return ShareUtil.getFeaturedImageShareSubject(getContext(), new 
UtcDate(age).baseCalendar());
+        } else if (pageTitle != null) {
+            return pageTitle.getDisplayText();
+        }
+        return null;
+    }
+
     private void saveImage() {
         if (galleryItem == null) {
             return;
diff --git a/app/src/main/java/org/wikipedia/util/ShareUtil.java 
b/app/src/main/java/org/wikipedia/util/ShareUtil.java
index 807ede1..b1547bd 100644
--- a/app/src/main/java/org/wikipedia/util/ShareUtil.java
+++ b/app/src/main/java/org/wikipedia/util/ShareUtil.java
@@ -16,7 +16,6 @@
 import org.wikipedia.BuildConfig;
 import org.wikipedia.R;
 import org.wikipedia.concurrency.SaneAsyncTask;
-import org.wikipedia.feed.image.FeaturedImageCard;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.util.log.L;
 
@@ -24,6 +23,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 
 import static org.wikipedia.util.StringUtil.emptyIfNull;
@@ -91,12 +91,9 @@
     }
 
     public static String getFeaturedImageShareSubject(@NonNull Context context,
-                                                      @Nullable 
FeaturedImageCard card) {
-        String result = 
context.getString(R.string.feed_featured_image_share_subject);
-        if (card != null) {
-            result = result + " | " + 
DateUtil.getFeedCardDateString(card.date().baseCalendar());
-        }
-        return result;
+                                                      @NonNull Calendar date) {
+        return context.getString(R.string.feed_featured_image_share_subject)
+                + " | " + DateUtil.getFeedCardDateString(date);
     }
 
     public static Intent buildImageShareChooserIntent(Context context, String 
subject, String text, Uri uri) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I38cb6dcd274c1a9b9248d266f28aab3a0c053ca6
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <mhollo...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to