From f7fc33afd655b25876f5956bb29db988ca242174 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sat, 19 Feb 2022 14:44:20 +0100 Subject: [PATCH] Fix Camsoda followed tab --- .../ui/sites/camsoda/CamsodaFollowedTab.java | 12 +++---- .../camsoda/CamsodaFollowedUpdateService.java | 32 +++++++++++++++++++ .../sites/camsoda/CamsodaUpdateService.java | 14 ++++---- .../ctbrec/sites/camsoda/CamsodaModel.java | 9 ++---- 4 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedUpdateService.java diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedTab.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedTab.java index d72e5798..3bc3475e 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedTab.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedTab.java @@ -1,7 +1,5 @@ package ctbrec.ui.sites.camsoda; -import java.util.function.Predicate; - import ctbrec.sites.camsoda.Camsoda; import ctbrec.sites.camsoda.CamsodaModel; import ctbrec.ui.tabs.FollowedTab; @@ -16,15 +14,17 @@ import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; +import java.util.function.Predicate; + public class CamsodaFollowedTab extends ThumbOverviewTab implements FollowedTab { - private Label status; + private final Label status; boolean showOnline = true; public CamsodaFollowedTab(String title, Camsoda camsoda) { - super(title, new CamsodaUpdateService(camsoda.getBaseUrl() + "/api/v1/browse/following", true, camsoda, m -> true), camsoda); + super(title, new CamsodaFollowedUpdateService(camsoda.getBaseUrl() + "/api/v1/browse/react/followed", true, camsoda, m -> true), camsoda); status = new Label("Logging in..."); grid.getChildren().add(status); - ((CamsodaUpdateService)updateService).setFilter(createFilter(this)); + ((CamsodaUpdateService) updateService).setFilter(createFilter(this)); } @Override @@ -85,7 +85,7 @@ public class CamsodaFollowedTab extends ThumbOverviewTab implements FollowedTab return m -> { try { return m.isOnline() == tab.showOnline; - } catch(InterruptedException e) { + } catch (InterruptedException e) { Thread.currentThread().interrupt(); return false; } catch (Exception e) { diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedUpdateService.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedUpdateService.java new file mode 100644 index 00000000..da74e211 --- /dev/null +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaFollowedUpdateService.java @@ -0,0 +1,32 @@ +package ctbrec.ui.sites.camsoda; + +import ctbrec.sites.camsoda.Camsoda; +import ctbrec.sites.camsoda.CamsodaModel; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + +public class CamsodaFollowedUpdateService extends CamsodaUpdateService { + + public CamsodaFollowedUpdateService(String url, boolean loginRequired, Camsoda camsoda, Predicate filter) { + super(url, loginRequired, camsoda, filter); + } + + protected List parseModels(String body) { + List models = new ArrayList<>(); + var json = new JSONObject(body); + var userList = json.getJSONArray("userList"); + for (var i = 0; i < userList.length(); i++) { + var jsonModel = userList.getJSONObject(i); + CamsodaModel model = (CamsodaModel) camsoda.createModel(jsonModel.getString("username")); + model.setDisplayName(jsonModel.optString("displayName")); + model.setPreview(jsonModel.optString("thumbUrl")); + model.setDescription(jsonModel.optString("subjectText")); + model.setOnlineStateByStatus(jsonModel.optString("status")); + models.add(model); + } + return models; + } +} diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java index f81b462f..aefddb8e 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaUpdateService.java @@ -27,12 +27,12 @@ public class CamsodaUpdateService extends PaginatedScheduledService { private static final Logger LOG = LoggerFactory.getLogger(CamsodaUpdateService.class); - private final String url; - private final boolean loginRequired; - private final Camsoda camsoda; - int modelsPerPage = 50; + protected final String url; + protected final boolean loginRequired; + protected final Camsoda camsoda; + protected int modelsPerPage = 50; - private Predicate filter; + protected Predicate filter; public CamsodaUpdateService(String url, boolean loginRequired, Camsoda camsoda, Predicate filter) { this.url = url; @@ -51,7 +51,7 @@ public class CamsodaUpdateService extends PaginatedScheduledService { .filter(filter) .skip((page - 1) * (long) modelsPerPage) .limit(modelsPerPage) - .collect(Collectors.toList()); + .collect(Collectors.toList()); // NOSONAR } }; } @@ -75,7 +75,7 @@ public class CamsodaUpdateService extends PaginatedScheduledService { } } - private List parseModels(String body) { + protected List parseModels(String body) { List models = new ArrayList<>(); var json = new JSONObject(body); var template = json.getJSONArray("template"); diff --git a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java index d297aac5..f6596bf3 100644 --- a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java +++ b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java @@ -64,8 +64,7 @@ public class CamsodaModel extends AbstractModel { StringBuilder url = new StringBuilder("https://"); url.append(edgeServer).append('/'); url.append(streamName); - url.append("_v1"); - url.append("/index.m3u8"); + url.append("_v1/index.m3u8"); if (!isPublic(streamName)) { url.append("?token=").append(token); } @@ -194,14 +193,12 @@ public class CamsodaModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { - if (failFast) { - return onlineState; - } else { + if (!failFast) { if (onlineState == UNKNOWN) { loadModel(); } - return onlineState; } + return onlineState; } @Override