use of com.winsonchiu.reader.data.reddit.Thing in project Reader by TheKeeperOfPie.
the class ControllerSearch method setNsfwLinksSubreddit.
public void setNsfwLinksSubreddit(String name, boolean over18) {
for (int index = 0; index < linksSubreddit.getChildren().size(); index++) {
Thing thing = linksSubreddit.getChildren().get(index);
if (thing.getName().equals(name)) {
((Link) thing).setOver18(over18);
eventHolder.callLinksSubreddit(new RxAdapterEvent<>(getLinksSubredditModel(), RxAdapterEvent.Type.CHANGE, index + 1));
return;
}
}
}
use of com.winsonchiu.reader.data.reddit.Thing in project Reader by TheKeeperOfPie.
the class ControllerSearch method reloadSubredditsRecommended.
public void reloadSubredditsRecommended() {
for (Subscription subscription : subscriptionsSubredditsRecommended) {
subscription.unsubscribe();
}
subscriptionsSubredditsRecommended.clear();
subredditsRecommended.getChildren().clear();
for (Listener listener : listeners) {
listener.getAdapterSearchSubredditsRecommended().notifyDataSetChanged();
}
StringBuilder builderOmit = new StringBuilder();
for (Thing thing : subredditsSubscribed.getChildren()) {
Subreddit subreddit = (Subreddit) thing;
builderOmit.append(subreddit.getDisplayName());
builderOmit.append(",");
}
currentSubreddit = controllerLinks.getSubreddit().getDisplayName();
reddit.recommend(currentSubreddit, builderOmit.toString()).flatMap(UtilsRx.flatMapWrapError(response -> {
final JSONArray jsonArray = new JSONArray(response);
List<String> names = new ArrayList<>(jsonArray.length());
for (int index = 0; index < jsonArray.length(); index++) {
/*
No idea why the API returns a {"sr_name": "subreddit"} rather than an
array of Strings, but we'll convert it.
*/
JSONObject dataSubreddit = jsonArray.getJSONObject(index);
names.add(dataSubreddit.optString("sr_name"));
}
return names;
})).flatMap(Observable::from).flatMap(next -> reddit.about("/r/" + next + "/")).flatMap(UtilsRx.flatMapWrapError(response -> Subreddit.fromJson(ComponentStatic.getObjectMapper().readValue(response, JsonNode.class)))).subscribe(new FinalizingSubscriber<Subreddit>() {
@Override
public void start() {
subredditsRecommended.getChildren().clear();
}
@Override
public void next(Subreddit next) {
subredditsRecommended.getChildren().add(next);
}
@Override
public void finish() {
Collections.sort(subredditsRecommended.getChildren(), new Comparator<Thing>() {
@Override
public int compare(Thing lhs, Thing rhs) {
return ((Subreddit) lhs).getDisplayName().compareToIgnoreCase(((Subreddit) rhs).getDisplayName());
}
});
for (Listener listener : listeners) {
listener.getAdapterSearchSubredditsRecommended().notifyDataSetChanged();
}
}
});
}
use of com.winsonchiu.reader.data.reddit.Thing in project Reader by TheKeeperOfPie.
the class ControllerSearch method setReplyTextLinks.
public boolean setReplyTextLinks(String name, String text, boolean collapsed) {
for (int index = 0; index < links.getChildren().size(); index++) {
Thing thing = links.getChildren().get(index);
if (thing.getName().equals(name)) {
((Replyable) thing).setReplyText(text);
((Replyable) thing).setReplyExpanded(!collapsed);
eventHolder.callLinks(new RxAdapterEvent<>(getLinksModel(), RxAdapterEvent.Type.CHANGE, index + 1));
return true;
}
}
return false;
}
use of com.winsonchiu.reader.data.reddit.Thing in project Reader by TheKeeperOfPie.
the class ControllerComments method isCommentExpanded.
public boolean isCommentExpanded(int position) {
position = position - 1;
if (position == listingComments.getChildren().size() - 1) {
return false;
}
List<Thing> commentList = listingComments.getChildren();
Comment comment = (Comment) commentList.get(position);
Comment nextComment = (Comment) commentList.get(position + 1);
if (comment.getLevel() == nextComment.getLevel()) {
return false;
} else if (comment.getLevel() < nextComment.getLevel()) {
return true;
}
return false;
}
use of com.winsonchiu.reader.data.reddit.Thing in project Reader by TheKeeperOfPie.
the class ControllerComments method setReplyText.
public boolean setReplyText(ReplyModel replyModel) {
String name = replyModel.getNameParent();
String text = replyModel.getText();
boolean collapsed = replyModel.isCollapsed();
if (name.equals(link.getName())) {
link.setReplyText(text);
link.setReplyExpanded(!collapsed);
eventHolder.call(new RxAdapterEvent<>(getData(), RxAdapterEvent.Type.CHANGE, 0));
return true;
}
for (int index = 0; index < listingComments.getChildren().size(); index++) {
Thing thing = listingComments.getChildren().get(index);
if (thing.getName().equals(name)) {
((Replyable) thing).setReplyText(text);
((Replyable) thing).setReplyExpanded(!collapsed);
eventHolder.call(new RxAdapterEvent<>(getData(), RxAdapterEvent.Type.CHANGE, index + 1));
return true;
}
}
return false;
}
Aggregations