diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 59bd751a..2fcea1c0 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index 689feae0..1d25dc57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,6 +28,10 @@ dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' + implementation 'com.android.support:cardview-v7:28.0.0' + implementation 'com.android.support:palette-v7:28.0.0' + implementation 'com.android.support:recyclerview-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' @@ -45,15 +49,13 @@ dependencies { implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'com.squareup.retrofit2:converter-simplexml:2.4.0' - implementation 'com.android.support:recyclerview-v7:28.0.0' implementation "android.arch.persistence.room:runtime:1.1.1" annotationProcessor "android.arch.persistence.room:compiler:1.1.1" implementation "joda-time:joda-time:2.9.9" + implementation 'org.jsoup:jsoup:1.11.3' - implementation 'com.android.support:cardview-v7:28.0.0' - implementation 'com.android.support:palette-v7:28.0.0' diff --git a/app/src/main/java/com/readrops/app/LocalFeedRepository.java b/app/src/main/java/com/readrops/app/LocalFeedRepository.java index e3c517e4..8ad24216 100644 --- a/app/src/main/java/com/readrops/app/LocalFeedRepository.java +++ b/app/src/main/java/com/readrops/app/LocalFeedRepository.java @@ -26,6 +26,8 @@ import com.readrops.readropslibrary.localfeed.json.JSONItem; import com.readrops.readropslibrary.localfeed.rss.RSSFeed; import com.readrops.readropslibrary.localfeed.rss.RSSItem; +import org.jsoup.Jsoup; + import java.io.IOException; import java.io.InputStream; import java.text.ParseException; @@ -122,7 +124,10 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { Feed dbFeed = database.feedDao().getFeedByUrl(rssFeed.getChannel().getFeedUrl()); if (dbFeed == null) { dbFeed = Feed.feedFromRSS(rssFeed.getChannel()); - dbFeed.setColor(getFaviconColor(dbFeed.getSiteUrl())); + + String favUrl = HtmlParser.getFaviconLink(dbFeed.getSiteUrl()); + dbFeed.setIconUrl(favUrl); + dbFeed.setColor(getFaviconColor(favUrl)); dbFeed.setId((int)(database.feedDao().insert(dbFeed))); } @@ -141,7 +146,10 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { Feed dbFeed = database.feedDao().getFeedByUrl(feed.getLink()); if (dbFeed == null) { dbFeed = Feed.feedFromATOM(feed); - dbFeed.setColor(getFaviconColor(dbFeed.getSiteUrl())); + + String favUrl = HtmlParser.getFaviconLink(dbFeed.getSiteUrl()); + dbFeed.setIconUrl(favUrl); + dbFeed.setColor(getFaviconColor(favUrl)); dbFeed.setId((int)(database.feedDao().insert(dbFeed))); } @@ -161,7 +169,10 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { Feed dbFeed = database.feedDao().getFeedByUrl(feed.getFeedUrl()); if (dbFeed == null) { dbFeed = Feed.feedFromJSON(feed); - dbFeed.setColor(getFaviconColor(dbFeed.getSiteUrl())); + + String favUrl = HtmlParser.getFaviconLink(dbFeed.getSiteUrl()); + dbFeed.setIconUrl(favUrl); + dbFeed.setColor(getFaviconColor(favUrl)); dbFeed.setId((int)(database.feedDao().insert(dbFeed))); } @@ -178,6 +189,7 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { for (Item dbItem : items) { if (!Boolean.valueOf(database.itemDao().guidExist(dbItem.getGuid()))) { dbItem.setImageLink(HtmlParser.getDescImageLink(dbItem.getDescription())); + dbItem.setDescription(Jsoup.parse(dbItem.getDescription()).text()); database.itemDao().insert(dbItem); Log.d(TAG, "adding " + dbItem.getTitle()); @@ -185,8 +197,7 @@ public class LocalFeedRepository extends ARepository implements QueryCallback { } } - private @ColorInt int getFaviconColor(String url) throws IOException { - String favUrl = HtmlParser.getFaviconLink(url); + private @ColorInt int getFaviconColor(String favUrl) throws IOException { Bitmap favicon = getFaviconFromUrl(favUrl); Palette palette = Palette.from(favicon).generate(); diff --git a/app/src/main/java/com/readrops/app/MainItemListAdapter.java b/app/src/main/java/com/readrops/app/MainItemListAdapter.java index 19b41d0d..c73ec4ca 100644 --- a/app/src/main/java/com/readrops/app/MainItemListAdapter.java +++ b/app/src/main/java/com/readrops/app/MainItemListAdapter.java @@ -12,7 +12,6 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; -import com.bumptech.glide.Glide; import com.bumptech.glide.ListPreloader; import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.RequestManager; @@ -57,7 +56,7 @@ public class MainItemListAdapter extends ListAdapter> getAll(); - @Query("Select Item.id, title, Item.description, image_link, pub_date, name, color from Item Inner Join Feed on Item.feed_id = Feed.id Order By pub_date DESC, Item.id") + @Query("Select Item.id, title, Item.description, image_link, pub_date, name, color, icon_url from Item Inner Join Feed on Item.feed_id = Feed.id Order By pub_date DESC, Item.id") LiveData> getAllItemWithFeeds(); @Query("Select case When :guid In (Select guid from Item) Then 'true' else 'false' end") diff --git a/app/src/main/java/com/readrops/app/database/entities/Feed.java b/app/src/main/java/com/readrops/app/database/entities/Feed.java index 91951285..ea58710b 100644 --- a/app/src/main/java/com/readrops/app/database/entities/Feed.java +++ b/app/src/main/java/com/readrops/app/database/entities/Feed.java @@ -26,6 +26,9 @@ public class Feed { private @ColorInt int color; + @ColumnInfo(name = "icon_url") + private String iconUrl; + public Feed() { } @@ -93,6 +96,14 @@ public class Feed { this.color = color; } + public String getIconUrl() { + return iconUrl; + } + + public void setIconUrl(String iconUrl) { + this.iconUrl = iconUrl; + } + public static Feed feedFromRSS(RSSChannel channel) { Feed feed = new Feed(); diff --git a/app/src/main/java/com/readrops/app/database/entities/Item.java b/app/src/main/java/com/readrops/app/database/entities/Item.java index 9c2cef39..80bf0c08 100644 --- a/app/src/main/java/com/readrops/app/database/entities/Item.java +++ b/app/src/main/java/com/readrops/app/database/entities/Item.java @@ -8,6 +8,7 @@ import com.readrops.readropslibrary.localfeed.json.JSONItem; import com.readrops.readropslibrary.localfeed.rss.RSSItem; import org.joda.time.LocalDateTime; +import org.jsoup.Jsoup; import java.text.ParseException; import java.util.ArrayList; diff --git a/app/src/main/res/layout/image_list_item.xml b/app/src/main/res/layout/image_list_item.xml index 0c450bd1..4aa4e30c 100644 --- a/app/src/main/res/layout/image_list_item.xml +++ b/app/src/main/res/layout/image_list_item.xml @@ -1,32 +1,50 @@ - + android:ellipsize="end" + android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/> + + + + + tools:text="Numerama"/> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f12798f3..2ac16601 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,5 +5,5 @@ #0072bc #d7d7d7 #fafafa - #060aa3 + #000000