From 48964cc85fe09dbb4d26d93f551c5a0770797296 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Wed, 29 Jul 2020 20:20:45 +0200 Subject: [PATCH] Fix Stripchat followed tab --- .../sites/stripchat/StripchatFollowedTab.java | 23 ------------ .../StripchatFollowedUpdateService.java | 36 ++++++++++--------- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedTab.java b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedTab.java index f82525ab..5b0cc16b 100644 --- a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedTab.java +++ b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedTab.java @@ -4,14 +4,10 @@ import ctbrec.sites.stripchat.Stripchat; import ctbrec.ui.tabs.FollowedTab; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.concurrent.WorkerStateEvent; -import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Label; -import javafx.scene.control.RadioButton; -import javafx.scene.control.ToggleGroup; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; -import javafx.scene.layout.HBox; public class StripchatFollowedTab extends ThumbOverviewTab implements FollowedTab { private Label status; @@ -26,25 +22,6 @@ public class StripchatFollowedTab extends ThumbOverviewTab implements FollowedTa @Override protected void createGui() { super.createGui(); - addOnlineOfflineSelector(); - } - - private void addOnlineOfflineSelector() { - ToggleGroup group = new ToggleGroup(); - RadioButton online = new RadioButton("online"); - online.setToggleGroup(group); - RadioButton offline = new RadioButton("offline"); - offline.setToggleGroup(group); - pagination.getChildren().add(online); - pagination.getChildren().add(offline); - HBox.setMargin(online, new Insets(5, 5, 5, 40)); - HBox.setMargin(offline, new Insets(5, 5, 5, 5)); - online.setSelected(true); - group.selectedToggleProperty().addListener(e -> { - queue.clear(); - ((StripchatFollowedUpdateService)updateService).showOnline(online.isSelected()); - updateService.restart(); - }); } @Override diff --git a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedUpdateService.java b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedUpdateService.java index 901c4053..80b788ba 100644 --- a/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/stripchat/StripchatFollowedUpdateService.java @@ -4,8 +4,8 @@ import static ctbrec.io.HttpConstants.*; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; -import java.util.Objects; import org.json.JSONArray; import org.json.JSONObject; @@ -24,8 +24,8 @@ import okhttp3.Request; import okhttp3.Response; public class StripchatFollowedUpdateService extends PaginatedScheduledService { + private static final int PAGE_SIZE = 30; private Stripchat stripchat; - private boolean showOnline = true; public StripchatFollowedUpdateService(Stripchat stripchat) { this.stripchat = stripchat; @@ -36,16 +36,27 @@ public class StripchatFollowedUpdateService extends PaginatedScheduledService { return new Task>() { @Override public List call() throws IOException { + int startIndex = (getPage() - 1) * PAGE_SIZE; JSONArray favoriteModelIds = loadFavoriteModelIds(); - List models = loadModels(favoriteModelIds); + List modelIdsToLoad = new ArrayList<>(PAGE_SIZE); + List models; + if (startIndex < favoriteModelIds.length()) { + int modelsOnPage = Math.min(PAGE_SIZE, favoriteModelIds.length() - startIndex - 1); + for (int i = 0; i < modelsOnPage; i++) { + modelIdsToLoad.add(favoriteModelIds.getInt(startIndex + i)); + } + models = loadModels(modelIdsToLoad); + } else { + models = Collections.emptyList(); + } return models; } - private List loadModels(JSONArray favoriteModelIds) throws IOException { + private List loadModels(List modelIdsToLoad) throws IOException { List models = new ArrayList<>(); HttpUrl.Builder urlBuilder = HttpUrl.parse(stripchat.getBaseUrl() + "/api/front/models/list").newBuilder(); - for (int i = 0; i < favoriteModelIds.length(); i++) { - urlBuilder.addQueryParameter("modelIds["+i+"]", Integer.toString(favoriteModelIds.getInt(i))); + for (int i = 0; i < modelIdsToLoad.size(); i++) { + urlBuilder.addQueryParameter("modelIds["+i+"]", modelIdsToLoad.get(i).toString()); } Request request = new Request.Builder() .url(urlBuilder.build()) @@ -64,10 +75,7 @@ public class StripchatFollowedUpdateService extends PaginatedScheduledService { StripchatModel model = stripchat.createModel(user.optString("username")); model.setDescription(user.optString("description")); model.setPreview(user.optString("previewUrlThumbBig")); - boolean online = Objects.equals(user.optString("status"), "public"); - if (showOnline == online) { - models.add(model); - } + models.add(model); } } } else { @@ -93,8 +101,8 @@ public class StripchatFollowedUpdateService extends PaginatedScheduledService { try (Response response = stripchat.getHttpClient().execute(request)) { if (response.isSuccessful()) { JSONObject json = new JSONObject(response.body().string()); - if(json.has("userIds")) { - JSONArray userIds = json.getJSONArray("userIds"); + if (json.has("modelIds")) { + JSONArray userIds = json.getJSONArray("modelIds"); return userIds; } else { return new JSONArray(); @@ -106,8 +114,4 @@ public class StripchatFollowedUpdateService extends PaginatedScheduledService { } }; } - - void showOnline(boolean online) { - this.showOnline = online; - } }