package uk.co.imallan.tuchongdaily.service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.ResultReceiver;
import java.util.ArrayList;
import uk.co.imallan.tuchongdaily.api.APIFactory;
import uk.co.imallan.tuchongdaily.api.data.DataPosts;
import uk.co.imallan.tuchongdaily.model.Image;
import uk.co.imallan.tuchongdaily.model.Post;
import uk.co.imallan.tuchongdaily.provider.ImageProvider;
import uk.co.imallan.tuchongdaily.provider.PostProvider;
/**
* Created by allan on 15/2/17.
*/
public class PostsService extends AbstractService {
private static final String EXTRA_SKIP = "EXTRA_SKIP";
private static final String EXTRA_LIMIT = "EXTRA_LIMIT";
public PostsService() {
super("PostsService");
}
public static void requestPosts(Context context, ServiceReceiver receiver, int limit, int skip) {
Intent intent = new Intent(context, PostsService.class);
ServiceReceiver.addServiceReceiver(intent, receiver);
intent.putExtra(EXTRA_REQUEST_TYPE, REQUESTS.GET_POSTS);
intent.putExtra(EXTRA_SKIP, skip);
intent.putExtra(EXTRA_LIMIT, limit);
context.startService(intent);
}
@Override
protected void onHandleServiceIntent(Intent intent, Bundle results, ResultReceiver receiver) {
REQUESTS request = (REQUESTS) intent.getSerializableExtra(EXTRA_REQUEST_TYPE);
switch (request) {
case GET_POSTS:
handleRequestPosts(intent, receiver, intent.getIntExtra(EXTRA_SKIP, 0), intent.getIntExtra(EXTRA_LIMIT, 12));
break;
}
}
private void handleRequestPosts(Intent originalIntent, ResultReceiver receiver, int skip, int limit) {
DataPosts dataPosts = APIFactory.instance().getPosts(skip, limit).getData();
sendDataToReceiver(receiver, originalIntent, dataPosts);
ArrayList<Post> posts = dataPosts.getPosts();
if (skip == 0) {
getContentResolver().delete(PostProvider.uriPosts(), null, null);
getContentResolver().delete(ImageProvider.uriImages(), null, null);
}
for (Post post : posts) {
ArrayList<Image> images = post.getImages();
if (images != null) {
for (Image image : images) {
//delete related images
getContentResolver().delete(ImageProvider.uriImage(image.getPostId()), null, null);
}
}
post.save(this);
}
}
public enum REQUESTS {
GET_POSTS
}
}