package com.tuit.ar.models.timeline;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import org.json.JSONTokener;
import com.tuit.ar.api.TwitterAccount;
import com.tuit.ar.api.TwitterRequest;
import com.tuit.ar.api.request.Options;
import com.tuit.ar.api.request.UniqueRequestException;
public class ViewConversation extends Status {
public ViewConversation(TwitterAccount account, com.tuit.ar.models.Status first) {
super(account);
tweets.add(first);
}
@Override
protected Options getTimeline() {
Options tweet = Options.GET_TWEET;
long nextTweetId = tweets.get(tweets.size()-1).getInReplyToStatusId();
ArrayList <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("id", String.valueOf(nextTweetId)));
tweet.setParameters(nvps);
return tweet;
}
public void refresh() {
long nextTweetId = tweets.get(tweets.size()-1).getInReplyToStatusId();
if (nextTweetId == 0) return;
ArrayList <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("id", String.valueOf(nextTweetId)));
try {
account.requestUrl(this.getTimeline(), nvps, TwitterRequest.METHOD_GET);
} catch (UniqueRequestException e) {
// I wanna ignore this exceptions
} catch (Exception e) {
failedToUpdate(e.getLocalizedMessage());
}
}
public void requestHasFinished(TwitterRequest request) {
if (!request.getUrl().equals(this.getTimeline())) return;
try {
JSONObject tweetJ = new JSONObject(new JSONTokener(request.getResponse()));
if (tweetJ != null && tweetJ.has("error") == false) {
com.tuit.ar.models.Status tweet = new com.tuit.ar.models.Status(tweetJ);
//is_home INTEGER, is_reply INTEGER, belongs_to_user
tweet.setBelongsToUser(account.getUser().getId());
// FIXME: some kind of way to recognize this with more abstraction?
if (request.getUrl().equals(Options.FRIENDS_TIMELINE) || request.getUrl().equals(Options.REPLIES_TIMELINE)) {
tweet.setHome(request.getUrl().equals(Options.FRIENDS_TIMELINE));
tweet.setReply(request.getUrl().equals(Options.REPLIES_TIMELINE));
}
this.tweets.add(tweet);
}
timelineChanged();
} catch (Exception e) {
failedToUpdate(e.getLocalizedMessage());
}
finishedUpdate();
}
}