Search in sources :

Example 16 with Thing

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;
        }
    }
}
Also used : Thing(com.winsonchiu.reader.data.reddit.Thing) Link(com.winsonchiu.reader.data.reddit.Link)

Example 17 with Thing

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();
            }
        }
    });
}
Also used : Context(android.content.Context) CustomApplication(com.winsonchiu.reader.CustomApplication) Subreddit(com.winsonchiu.reader.data.reddit.Subreddit) ControllerLinks(com.winsonchiu.reader.links.ControllerLinks) ListIterator(java.util.ListIterator) UtilsRx(com.winsonchiu.reader.utils.UtilsRx) AppSettings(com.winsonchiu.reader.AppSettings) LinksModel(com.winsonchiu.reader.links.LinksModel) ArrayList(java.util.ArrayList) Observable(rx.Observable) HashSet(java.util.HashSet) Inject(javax.inject.Inject) Reddit(com.winsonchiu.reader.data.reddit.Reddit) JSONObject(org.json.JSONObject) ComponentStatic(com.winsonchiu.reader.dagger.components.ComponentStatic) Link(com.winsonchiu.reader.data.reddit.Link) JsonNode(com.fasterxml.jackson.databind.JsonNode) PreferenceManager(android.preference.PreferenceManager) Log(android.util.Log) AccountManager(android.accounts.AccountManager) BehaviorRelay(com.jakewharton.rxrelay.BehaviorRelay) Iterator(java.util.Iterator) ControllerUser(com.winsonchiu.reader.ControllerUser) Sort(com.winsonchiu.reader.data.reddit.Sort) Listing(com.winsonchiu.reader.data.reddit.Listing) Set(java.util.Set) TextUtils(android.text.TextUtils) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) FinalizingSubscriber(com.winsonchiu.reader.rx.FinalizingSubscriber) IOException(java.io.IOException) Thing(com.winsonchiu.reader.data.reddit.Thing) Observer(rx.Observer) URLEncoder(java.net.URLEncoder) List(java.util.List) SharedPreferences(android.content.SharedPreferences) Replyable(com.winsonchiu.reader.data.reddit.Replyable) Time(com.winsonchiu.reader.data.reddit.Time) RxAdapterEvent(com.winsonchiu.reader.adapter.RxAdapterEvent) Nullable(android.support.annotation.Nullable) Comparator(java.util.Comparator) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Collections(java.util.Collections) Subscription(rx.Subscription) JSONArray(org.json.JSONArray) JSONArray(org.json.JSONArray) Comparator(java.util.Comparator) JSONObject(org.json.JSONObject) ArrayList(java.util.ArrayList) List(java.util.List) Subscription(rx.Subscription) Subreddit(com.winsonchiu.reader.data.reddit.Subreddit) Thing(com.winsonchiu.reader.data.reddit.Thing)

Example 18 with Thing

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;
}
Also used : Replyable(com.winsonchiu.reader.data.reddit.Replyable) Thing(com.winsonchiu.reader.data.reddit.Thing)

Example 19 with Thing

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;
}
Also used : Comment(com.winsonchiu.reader.data.reddit.Comment) Thing(com.winsonchiu.reader.data.reddit.Thing)

Example 20 with Thing

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;
}
Also used : Replyable(com.winsonchiu.reader.data.reddit.Replyable) Thing(com.winsonchiu.reader.data.reddit.Thing)

Aggregations

Thing (com.winsonchiu.reader.data.reddit.Thing)21 Replyable (com.winsonchiu.reader.data.reddit.Replyable)8 Comment (com.winsonchiu.reader.data.reddit.Comment)7 Link (com.winsonchiu.reader.data.reddit.Link)7 Listing (com.winsonchiu.reader.data.reddit.Listing)6 JsonNode (com.fasterxml.jackson.databind.JsonNode)4 Subreddit (com.winsonchiu.reader.data.reddit.Subreddit)4 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)3 Comparator (java.util.Comparator)3 AccountManager (android.accounts.AccountManager)2 Context (android.content.Context)2 SharedPreferences (android.content.SharedPreferences)2 PreferenceManager (android.preference.PreferenceManager)2 Nullable (android.support.annotation.Nullable)2 TextUtils (android.text.TextUtils)2 Log (android.util.Log)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 BehaviorRelay (com.jakewharton.rxrelay.BehaviorRelay)2 AppSettings (com.winsonchiu.reader.AppSettings)2