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 3b75aba9..3063143d 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 @@ -48,6 +48,14 @@ public class ChanUrls { return "https://t.4cdn.org/" + board + "/" + code + "s.jpg"; } + public static String getSpoilerUrl() { + return "https://s.4cdn.org/image/spoiler.png"; + } + + public static String getCustomSpoilerUrl(String board, int value) { + return "https://s.4cdn.org/image/spoiler-" + board + value + ".png"; + } + public static String getCountryFlagUrl(String countryCode) { return "https://s.4cdn.org/image/country/" + countryCode.toLowerCase(Locale.ENGLISH) + ".gif"; } @@ -56,7 +64,6 @@ public class ChanUrls { 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/model/Post.java b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java index 256c0e58..dff2f405 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 @@ -28,11 +28,14 @@ import org.jsoup.parser.Parser; import java.util.ArrayList; import java.util.List; +import java.util.Random; /** * Contains all data needed to represent a single post. */ public class Post { + private static final Random random = new Random(); + public String board; public int no = -1; public int resto = -1; @@ -64,6 +67,7 @@ public class Post { public int images = -1; public String rawComment; public String countryUrl; + public boolean spoiler = false; public boolean deleted = false; @@ -127,9 +131,19 @@ public class Post { if (filename == null || ext == null || imageWidth <= 0 || imageHeight <= 0 || tim < 0) return false; - thumbnailUrl = ChanUrls.getThumbnailUrl(board, Long.toString(tim)); imageUrl = ChanUrls.getImageUrl(board, Long.toString(tim), ext); filename = Parser.unescapeEntities(filename, false); + + if (spoiler) { + Board b = ChanApplication.getBoardManager().getBoardByValue(board); + if (b.customSpoilers >= 0) { + thumbnailUrl = ChanUrls.getCustomSpoilerUrl(board, random.nextInt(b.customSpoilers) + 1); + } else { + thumbnailUrl = ChanUrls.getSpoilerUrl(); + } + } else { + thumbnailUrl = ChanUrls.getThumbnailUrl(board, Long.toString(tim)); + } } if (!TextUtils.isEmpty(country)) { diff --git a/Clover/app/src/main/java/org/floens/chan/core/net/ChanReaderRequest.java b/Clover/app/src/main/java/org/floens/chan/core/net/ChanReaderRequest.java index 701d9c18..c2ee1607 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/net/ChanReaderRequest.java +++ b/Clover/app/src/main/java/org/floens/chan/core/net/ChanReaderRequest.java @@ -349,6 +349,9 @@ public class ChanReaderRequest extends JsonReaderRequest> { case "images": post.images = reader.nextInt(); break; + case "spoiler": + post.spoiler = reader.nextInt() == 1; + break; default: // Unknown/ignored key // log("Unknown/ignored key: " + key + "."); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java index 1cb31611..1ff8fc4f 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java @@ -111,7 +111,7 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal imageView.setThumbnail(post.thumbnailUrl); - if (ChanPreferences.getImageAutoLoad()) { + if (ChanPreferences.getImageAutoLoad() && !post.spoiler) { load(); } else { tapToLoad = true;