diff --git a/app/src/main/java/com/readrops/app/utils/ItemMatcher.java b/app/src/main/java/com/readrops/app/utils/ItemMatcher.java index b203b795..d4755576 100644 --- a/app/src/main/java/com/readrops/app/utils/ItemMatcher.java +++ b/app/src/main/java/com/readrops/app/utils/ItemMatcher.java @@ -13,7 +13,6 @@ import com.readrops.readropslibrary.utils.ParseException; import org.joda.time.DateTimeZone; import org.joda.time.LocalDateTime; -import org.jsoup.Jsoup; import java.util.ArrayList; import java.util.List; @@ -72,7 +71,7 @@ public final class ItemMatcher { newItem.setContent(item.getContent()); // Jsoup.clean(item.getContent(), Whitelist.relaxed()) newItem.setDescription(item.getDescription()); newItem.setGuid(item.getGuid()); - newItem.setTitle(Jsoup.parse(item.getTitle()).text().trim()); + newItem.setTitle(Utils.cleanText(item.getTitle())); try { newItem.setPubDate(DateUtils.stringToLocalDateTime(item.getDate())); @@ -117,13 +116,14 @@ public final class ItemMatcher { dbItem.setContent(item.getContent()); // Jsoup.clean(item.getContent(), Whitelist.relaxed()) dbItem.setDescription(item.getSummary()); dbItem.setGuid(item.getId()); - dbItem.setTitle(Jsoup.parse(item.getTitle()).text().trim()); + dbItem.setTitle(Utils.cleanText(item.getTitle())); try { dbItem.setPubDate(DateUtils.stringToLocalDateTime(item.getUpdated())); } catch (Exception e) { throw new ParseException(); } + dbItem.setLink(item.getUrl()); dbItem.setFeedId(feed.getId()); @@ -146,7 +146,7 @@ public final class ItemMatcher { dbItem.setContent(item.getContent()); // Jsoup.clean(item.getContent(), Whitelist.relaxed()) dbItem.setDescription(item.getSummary()); dbItem.setGuid(item.getId()); - dbItem.setTitle(Jsoup.parse(item.getTitle()).text().trim()); + dbItem.setTitle(Utils.cleanText(item.getTitle())); try { dbItem.setPubDate(DateUtils.stringToLocalDateTime(item.getPubDate())); diff --git a/app/src/main/java/com/readrops/app/utils/Utils.java b/app/src/main/java/com/readrops/app/utils/Utils.java index b4a3fc14..7424d6ac 100644 --- a/app/src/main/java/com/readrops/app/utils/Utils.java +++ b/app/src/main/java/com/readrops/app/utils/Utils.java @@ -15,6 +15,8 @@ import androidx.annotation.NonNull; import com.google.android.material.snackbar.Snackbar; +import org.jsoup.Jsoup; + import java.io.InputStream; import java.util.Locale; import java.util.concurrent.TimeUnit; @@ -95,4 +97,13 @@ public final class Utils { Snackbar snackbar = Snackbar.make(root, message, Snackbar.LENGTH_LONG); snackbar.show(); } + + /** + * Remove html tags and trim the text + * @param text string to clean + * @return cleaned text + */ + public static String cleanText(String text) { + return Jsoup.parse(text).text().trim(); + } } diff --git a/app/src/test/java/com/readrops/app/UtilsTest.java b/app/src/test/java/com/readrops/app/UtilsTest.java new file mode 100644 index 00000000..4a0da2ce --- /dev/null +++ b/app/src/test/java/com/readrops/app/UtilsTest.java @@ -0,0 +1,17 @@ +package com.readrops.app; + +import com.readrops.app.utils.Utils; + +import org.junit.Test; + +import static junit.framework.TestCase.assertEquals; + +public class UtilsTest { + + @Test + public void cleanTextTest() { + String text = "
This is a text
to