package net.miz_hi.smileessence.model.statuslist.timeline.impl;
import net.miz_hi.smileessence.Client;
import net.miz_hi.smileessence.model.status.IStatusModel;
import net.miz_hi.smileessence.model.status.tweet.TweetModel;
import net.miz_hi.smileessence.model.statuslist.timeline.Timeline;
import net.miz_hi.smileessence.preference.EnumPreferenceKey;
import net.miz_hi.smileessence.task.impl.GetHomeTimelineTask;
import twitter4j.Paging;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
public class HomeTimeline extends Timeline
{
@Override
public Future loadNewer(Runnable callback)
{
if (getStatusList().length > 0)
{
long maxId = ((TweetModel) getStatus(0)).statusId;
return new GetHomeTimelineTask(Client.getMainAccount(), new Paging(1, Client.<Integer>getPreferenceValue(EnumPreferenceKey.REQUEST_COUNT), maxId))
{
@Override
public void onPostExecute(List<TweetModel> result)
{
Collections.reverse(result);
for (TweetModel status : result)
{
addToTop(status);
}
applyForce();
}
}.setCallBack(callback).callAsync();
}
else
{
return new GetHomeTimelineTask(Client.getMainAccount(), new Paging(1, Client.<Integer>getPreferenceValue(EnumPreferenceKey.REQUEST_COUNT)))
{
@Override
public void onPostExecute(List<TweetModel> result)
{
Collections.reverse(result);
for (TweetModel status : result)
{
addToTop(status);
}
applyForce();
}
}.setCallBack(callback).callAsync();
}
}
@Override
public Future loadOlder(Runnable callback)
{
if (getStatusList().length > 0)
{
long minId = ((TweetModel) getStatus(getStatusList().length - 1)).statusId;
Paging page = new Paging(1, Client.<Integer>getPreferenceValue(EnumPreferenceKey.REQUEST_COUNT));
page.setMaxId(minId);
return new GetHomeTimelineTask(Client.getMainAccount(), page)
{
@Override
public void onPostExecute(List<TweetModel> result)
{
for (TweetModel status : result)
{
addToBottom(status);
}
applyForce();
}
}.setCallBack(callback).callAsync();
}
else
{
return new GetHomeTimelineTask(Client.getMainAccount(), new Paging(1, Client.<Integer>getPreferenceValue(EnumPreferenceKey.REQUEST_COUNT)))
{
@Override
public void onPostExecute(List<TweetModel> result)
{
for (TweetModel status : result)
{
addToBottom(status);
}
applyForce();
}
}.setCallBack(callback).callAsync();
}
}
@Override
public boolean checkStatus(IStatusModel status)
{
return status instanceof TweetModel;
}
}