Merge pull request #3529 from orionlee/share_episode_url_handle_empty_link_3527

bugfix: Share Episode URL - handle empty link
This commit is contained in:
H. Lehmann 2019-10-19 01:49:24 +02:00 committed by GitHub
commit b229476e35
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 85 additions and 4 deletions

View File

@ -64,6 +64,7 @@ import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import org.apache.commons.lang3.StringUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -504,7 +505,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
private static String getWebsiteLinkWithFallback(Playable media) {
if (media == null) {
return null;
} else if (media.getWebsiteLink() != null) {
} else if (StringUtils.isNotBlank(media.getWebsiteLink())) {
return media.getWebsiteLink();
} else if (media instanceof FeedMedia) {
return FeedItemUtil.getLinkWithFallback(((FeedMedia)media).getItem());

View File

@ -2,12 +2,13 @@ package de.danoeh.antennapod.menuhandler;
import android.content.Context;
import android.content.DialogInterface;
import androidx.appcompat.app.AlertDialog;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import org.apache.commons.lang3.StringUtils;
import java.util.Set;
import de.danoeh.antennapod.R;
@ -42,6 +43,10 @@ public class FeedMenuHandler {
Log.d(TAG, "Preparing options menu");
menu.findItem(R.id.refresh_complete_item).setVisible(selectedFeed.isPaged());
if (StringUtils.isBlank(selectedFeed.getLink())) {
menu.findItem(R.id.visit_website_item).setVisible(false);
menu.findItem(R.id.share_link_item).setVisible(false);
}
return true;
}

View File

@ -1,5 +1,7 @@
package de.danoeh.antennapod.core.util;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import de.danoeh.antennapod.core.feed.FeedItem;
@ -45,9 +47,9 @@ public class FeedItemUtil {
public static String getLinkWithFallback(FeedItem item) {
if (item == null) {
return null;
} else if (item.getLink() != null) {
} else if (StringUtils.isNotBlank(item.getLink())) {
return item.getLink();
} else if (item.getFeed() != null) {
} else if (StringUtils.isNotBlank(item.getFeed().getLink())) {
return item.getFeed().getLink();
}
return null;

View File

@ -0,0 +1,73 @@
package de.danoeh.antennapod.core.util;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem;
import static org.junit.Assert.assertEquals;
public class FeedItemUtilTest {
@RunWith(Parameterized.class)
public static class LinkWithFallbackTest {
private static final String FEED_LINK = "http://example.com";
private static final String ITEM_LINK = "http://example.com/feedItem1";
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "average",
FEED_LINK, ITEM_LINK, ITEM_LINK },
{ "null item link - fallback to feed",
FEED_LINK, null, FEED_LINK},
{ "empty item link - same as null",
FEED_LINK, "", FEED_LINK},
{ "blank item link - same as null",
FEED_LINK, " ", FEED_LINK},
{ "fallback, but feed link is null too",
null, null, null },
{ "fallback - but empty feed link - same as null",
"", null, null},
{ "fallback - but blank feed link - same as null",
" ", null, null}
});
}
private final String msg;
private final String feedLink;
private final String itemLink;
private final String expected;
public LinkWithFallbackTest(String msg, String feedLink, String itemLink, String expected) {
this.msg = msg;
this.feedLink = feedLink;
this.itemLink = itemLink;
this.expected = expected;
}
@Test
public void testLinkWithFallback() {
String actual = FeedItemUtil.getLinkWithFallback(createFeedItem(feedLink, itemLink));
assertEquals(msg, expected, actual);
}
private static FeedItem createFeedItem(String feedLink, String itemLink) {
Feed feed = new Feed();
feed.setLink(feedLink);
FeedItem feedItem = new FeedItem();
feedItem.setLink(itemLink);
feedItem.setFeed(feed);
feed.setItems(Arrays.asList(feedItem));
return feedItem;
}
}
}