mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Move saved stories fetch to new async model.
This commit is contained in:
parent
38a891b4c9
commit
aec64abae5
6 changed files with 30 additions and 34 deletions
|
@ -20,6 +20,7 @@ import com.newsblur.fragment.SavedStoriesItemListFragment;
|
|||
import com.newsblur.fragment.FeedItemListFragment;
|
||||
import com.newsblur.fragment.SyncUpdateFragment;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.PrefConstants;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.util.ReadFilter;
|
||||
|
@ -58,11 +59,7 @@ public class SavedStoriesItemsList extends ItemsList {
|
|||
public void triggerRefresh(int page) {
|
||||
if (!stopLoading) {
|
||||
setSupportProgressBarIndeterminateVisibility(true);
|
||||
final Intent intent = new Intent(Intent.ACTION_SYNC, null, this, SyncService.class);
|
||||
intent.putExtra(SyncService.EXTRA_STATUS_RECEIVER, syncFragment.receiver);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_TYPE, SyncService.TaskType.STARRED_STORIES_UPDATE);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
startService(intent);
|
||||
FeedUtils.updateSavedStories(this, this, page);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import com.newsblur.database.DatabaseConstants;
|
|||
import com.newsblur.database.FeedProvider;
|
||||
import com.newsblur.database.MixedFeedsReadingAdapter;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
|
||||
public class SavedStoriesReading extends Reading {
|
||||
|
||||
|
@ -24,14 +25,8 @@ public class SavedStoriesReading extends Reading {
|
|||
|
||||
@Override
|
||||
public void triggerRefresh(int page) {
|
||||
setSupportProgressBarIndeterminateVisibility(true);
|
||||
final Intent intent = new Intent(Intent.ACTION_SYNC, null, this, SyncService.class);
|
||||
intent.putExtra(SyncService.EXTRA_STATUS_RECEIVER, syncFragment.receiver);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_TYPE, SyncService.TaskType.STARRED_STORIES_UPDATE);
|
||||
if (page > 1) {
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
}
|
||||
startService(intent);
|
||||
updateSyncStatus(true);
|
||||
FeedUtils.updateSavedStories(this, this, page);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -82,7 +82,9 @@ public class SavedStoriesItemListFragment extends ItemListFragment implements Lo
|
|||
}
|
||||
|
||||
public void hasUpdated() {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
if (isAdded()) {
|
||||
getLoaderManager().restartLoader(ITEMLIST_LOADER , null, this);
|
||||
}
|
||||
requestedPage = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -264,16 +264,14 @@ public class APIManager {
|
|||
}
|
||||
}
|
||||
|
||||
public StoriesResponse getStarredStories(String pageNumber) {
|
||||
final ValueMultimap values = new ValueMultimap();
|
||||
if (!TextUtils.isEmpty(pageNumber)) {
|
||||
values.put(APIConstants.PARAMETER_PAGE_NUMBER, "" + pageNumber);
|
||||
}
|
||||
final APIResponse response = get(APIConstants.URL_STARRED_STORIES, values);
|
||||
public StoriesResponse getStarredStories(int pageNumber) {
|
||||
ValueMultimap values = new ValueMultimap();
|
||||
values.put(APIConstants.PARAMETER_PAGE_NUMBER, Integer.toString(pageNumber));
|
||||
APIResponse response = get(APIConstants.URL_STARRED_STORIES, values);
|
||||
|
||||
StoriesResponse storiesResponse = (StoriesResponse) response.getResponse(gson, StoriesResponse.class);
|
||||
if (!response.isError()) {
|
||||
if (TextUtils.equals(pageNumber,"1")) {
|
||||
if (pageNumber == 1) {
|
||||
contentResolver.delete(FeedProvider.STARRED_STORIES_URI, null, null);
|
||||
}
|
||||
for (Story story : storiesResponse.stories) {
|
||||
|
@ -283,10 +281,8 @@ public class APIManager {
|
|||
for (UserProfile user : storiesResponse.users) {
|
||||
contentResolver.insert(FeedProvider.USERS_URI, user.getValues());
|
||||
}
|
||||
return storiesResponse;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return storiesResponse;
|
||||
}
|
||||
|
||||
public SocialFeedResponse getSharedStoriesForFeeds(String[] feedIds, String pageNumber, StoryOrder order, ReadFilter filter) {
|
||||
|
|
|
@ -58,8 +58,7 @@ public class SyncService extends IntentService {
|
|||
FOLDER_UPDATE_TWO_STEP,
|
||||
FOLDER_UPDATE_WITH_COUNT,
|
||||
MULTIFEED_UPDATE,
|
||||
MULTISOCIALFEED_UPDATE,
|
||||
STARRED_STORIES_UPDATE
|
||||
MULTISOCIALFEED_UPDATE
|
||||
};
|
||||
|
||||
private APIManager apiManager;
|
||||
|
@ -130,13 +129,6 @@ public class SyncService extends IntentService {
|
|||
}
|
||||
break;
|
||||
|
||||
case STARRED_STORIES_UPDATE:
|
||||
StoriesResponse starredStories = apiManager.getStarredStories(intent.getStringExtra(EXTRA_TASK_PAGE_NUMBER));
|
||||
if (starredStories == null || starredStories.stories.length == 0) {
|
||||
resultStatus = SyncStatus.STATUS_NO_MORE_UPDATES;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
Log.e(this.getClass().getName(), "SyncService called without relevant task assignment");
|
||||
break;
|
||||
|
|
|
@ -65,6 +65,20 @@ public class FeedUtils {
|
|||
}.execute();
|
||||
}
|
||||
|
||||
public static void updateSavedStories(final Context context, final ActionCompletionListener receiver, final int pageNumber) {
|
||||
new AsyncTask<Void, Void, StoriesResponse>() {
|
||||
@Override
|
||||
protected StoriesResponse doInBackground(Void... arg) {
|
||||
APIManager apiManager = new APIManager(context);
|
||||
return apiManager.getStarredStories(pageNumber);
|
||||
}
|
||||
@Override
|
||||
protected void onPostExecute(StoriesResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private static void handleStoryResponse(Context context, NewsBlurResponse response, Story[] stories, ActionCompletionListener receiver) {
|
||||
if (response.isError()) {
|
||||
Log.e(FeedUtils.class.getName(), "Error response received loading stories.");
|
||||
|
|
Loading…
Add table
Reference in a new issue