diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java b/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java index 69aaed5f..3b75aba9 100644 --- a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java +++ b/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java @@ -52,6 +52,11 @@ public class ChanUrls { return "https://s.4cdn.org/image/country/" + countryCode.toLowerCase(Locale.ENGLISH) + ".gif"; } + public static String getTrollCountryFlagUrl(String countryCode) { + return "https://s.4cdn.org/image/country/troll/" + countryCode.toLowerCase(Locale.ENGLISH) + ".gif"; + } + + public static String getBoardsUrl() { return "https://a.4cdn.org/boards.json"; } diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/BoardManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/BoardManager.java index e3b8e457..cb22993c 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/BoardManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/BoardManager.java @@ -29,7 +29,9 @@ import org.floens.chan.utils.Logger; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class BoardManager { private static final String TAG = "BoardManager"; @@ -41,6 +43,7 @@ public class BoardManager { }; private List allBoards; + private Map allBoardsByValue = new HashMap<>(); private List listeners = new ArrayList<>(); @@ -49,6 +52,10 @@ public class BoardManager { loadFromServer(); } + public Board getBoardByValue(String value) { + return allBoardsByValue.get(value); + } + public List getAllBoards() { return allBoards; } @@ -99,10 +106,13 @@ public class BoardManager { private void storeBoards() { Logger.d(TAG, "Storing boards in database"); + allBoardsByValue.clear(); for (Board test : allBoards) { if (test.saved) { Logger.d(TAG, "Board with value " + test.value + " saved"); } + + allBoardsByValue.put(test.value, test); } ChanApplication.getDatabaseManager().setBoards(allBoards); diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java index 687274ce..256c0e58 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java @@ -18,7 +18,9 @@ package org.floens.chan.core.model; import android.text.SpannableString; +import android.text.TextUtils; +import org.floens.chan.ChanApplication; import org.floens.chan.chan.ChanUrls; import org.floens.chan.core.loader.ChanParser; import org.floens.chan.ui.view.PostView; @@ -61,6 +63,7 @@ public class Post { public int fileSize; public int images = -1; public String rawComment; + public String countryUrl; public boolean deleted = false; @@ -129,10 +132,13 @@ public class Post { filename = Parser.unescapeEntities(filename, false); } + if (!TextUtils.isEmpty(country)) { + Board b = ChanApplication.getBoardManager().getBoardByValue(board); + countryUrl = b.trollFlags ? ChanUrls.getTrollCountryFlagUrl(country) : ChanUrls.getCountryFlagUrl(country); + } + ChanParser.getInstance().parse(this); return true; } - - } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/PostView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/PostView.java index e68168bf..bfededd7 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/PostView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/PostView.java @@ -44,7 +44,6 @@ import com.android.volley.toolbox.NetworkImageView; import org.floens.chan.ChanApplication; import org.floens.chan.R; -import org.floens.chan.chan.ChanUrls; import org.floens.chan.core.manager.ThreadManager; import org.floens.chan.core.model.Post; import org.floens.chan.core.model.PostLinkable; @@ -211,7 +210,7 @@ public class PostView extends LinearLayout implements View.OnClickListener { repliesCountView.setOnClickListener(null); } - boolean showCountryFlag = isList() && !TextUtils.isEmpty(post.country); + boolean showCountryFlag = isList() && !TextUtils.isEmpty(post.country) && !TextUtils.isEmpty(post.countryUrl); boolean showStickyIcon = isList() && post.sticky; boolean showClosedIcon = isList() && post.closed; boolean showDeletedIcon = isList() && post.deleted; @@ -223,7 +222,7 @@ public class PostView extends LinearLayout implements View.OnClickListener { deletedView.setVisibility(showDeletedIcon ? View.VISIBLE : View.GONE); if (showCountryFlag) { countryView.setVisibility(View.VISIBLE); - countryView.setImageUrl(ChanUrls.getCountryFlagUrl(post.country), ChanApplication.getVolleyImageLoader()); + countryView.setImageUrl(post.countryUrl, ChanApplication.getVolleyImageLoader()); } else { countryView.setVisibility(View.GONE); countryView.setImageUrl(null, null);