mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Switch folder reading and All Stories reading to new async model.
This commit is contained in:
parent
aec64abae5
commit
f382b14ea0
7 changed files with 25 additions and 59 deletions
|
@ -25,6 +25,7 @@ import com.newsblur.fragment.MarkAllReadDialogFragment.MarkAllReadDialogListener
|
|||
import com.newsblur.network.APIManager;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.AppConstants;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.PrefConstants;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.util.ReadFilter;
|
||||
|
@ -43,7 +44,6 @@ public class AllStoriesItemsList extends ItemsList implements MarkAllReadDialogL
|
|||
|
||||
apiManager = new APIManager(this);
|
||||
resolver = getContentResolver();
|
||||
|
||||
|
||||
itemListFragment = (AllStoriesItemListFragment) fragmentManager.findFragmentByTag(AllStoriesItemListFragment.class.getName());
|
||||
if (itemListFragment == null) {
|
||||
|
@ -81,19 +81,10 @@ public class AllStoriesItemsList extends ItemsList implements MarkAllReadDialogL
|
|||
cursor.close();
|
||||
}
|
||||
|
||||
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.MULTIFEED_UPDATE);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_MULTIFEED_IDS, feedIds);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
intent.putExtra(SyncService.EXTRA_TASK_ORDER, getStoryOrder());
|
||||
intent.putExtra(SyncService.EXTRA_TASK_READ_FILTER, PrefsUtils.getReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME));
|
||||
|
||||
startService(intent);
|
||||
FeedUtils.updateFeeds(this, this, feedIds, page, getStoryOrder(), PrefsUtils.getReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void markItemListAsRead() {
|
||||
MarkAllReadDialogFragment dialog = MarkAllReadDialogFragment.newInstance(getResources().getString(R.string.all_stories));
|
||||
|
|
|
@ -40,16 +40,7 @@ public class AllStoriesReading extends Reading {
|
|||
@Override
|
||||
public void triggerRefresh(int page) {
|
||||
updateSyncStatus(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.MULTIFEED_UPDATE);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_MULTIFEED_IDS, new String[0]); // ask for all stories via wildcarding the feed param
|
||||
if (page > 1) {
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
}
|
||||
intent.putExtra(SyncService.EXTRA_TASK_ORDER, PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME));
|
||||
intent.putExtra(SyncService.EXTRA_TASK_READ_FILTER, PrefsUtils.getReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME));
|
||||
startService(intent);
|
||||
FeedUtils.updateFeeds(this, this, new String[0], page, PrefsUtils.getStoryOrderForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME), PrefsUtils.getReadFilterForFolder(this, PrefConstants.ALL_STORIES_FOLDER_NAME));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.newsblur.network.APIManager;
|
|||
import com.newsblur.network.MarkFolderAsReadTask;
|
||||
import com.newsblur.service.SyncService;
|
||||
import com.newsblur.util.AppConstants;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.util.ReadFilter;
|
||||
import com.newsblur.util.StoryOrder;
|
||||
|
@ -80,16 +81,10 @@ public class FolderItemsList extends ItemsList implements MarkAllReadDialogListe
|
|||
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.MULTIFEED_UPDATE);
|
||||
|
||||
String[] feeds = new String[feedIds.size()];
|
||||
feedIds.toArray(feeds);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_MULTIFEED_IDS, feeds);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
intent.putExtra(SyncService.EXTRA_TASK_ORDER, getStoryOrder());
|
||||
intent.putExtra(SyncService.EXTRA_TASK_READ_FILTER, PrefsUtils.getReadFilterForFolder(this, folderName));
|
||||
startService(intent);
|
||||
FeedUtils.updateFeeds(this, this, feeds, page, getStoryOrder(), PrefsUtils.getReadFilterForFolder(this, folderName));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,16 +44,7 @@ public class FolderReading extends Reading {
|
|||
@Override
|
||||
public void triggerRefresh(int page) {
|
||||
updateSyncStatus(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.MULTIFEED_UPDATE);
|
||||
intent.putExtra(SyncService.EXTRA_TASK_MULTIFEED_IDS, feedIds);
|
||||
if (page > 1) {
|
||||
intent.putExtra(SyncService.EXTRA_TASK_PAGE_NUMBER, Integer.toString(page));
|
||||
}
|
||||
intent.putExtra(SyncService.EXTRA_TASK_ORDER, PrefsUtils.getStoryOrderForFolder(this, folderName));
|
||||
intent.putExtra(SyncService.EXTRA_TASK_READ_FILTER, PrefsUtils.getReadFilterForFolder(this, folderName));
|
||||
startService(intent);
|
||||
FeedUtils.updateFeeds(this, this, feedIds, page, PrefsUtils.getStoryOrderForFolder(this, folderName), PrefsUtils.getReadFilterForFolder(this, folderName));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -229,21 +229,19 @@ public class APIManager {
|
|||
return storiesResponse;
|
||||
}
|
||||
|
||||
public StoriesResponse getStoriesForFeeds(String[] feedIds, String pageNumber, StoryOrder order, ReadFilter filter) {
|
||||
public StoriesResponse getStoriesForFeeds(String[] feedIds, int pageNumber, StoryOrder order, ReadFilter filter) {
|
||||
final ValueMultimap values = new ValueMultimap();
|
||||
for (String feedId : feedIds) {
|
||||
values.put(APIConstants.PARAMETER_FEEDS, feedId);
|
||||
}
|
||||
if (!TextUtils.isEmpty(pageNumber)) {
|
||||
values.put(APIConstants.PARAMETER_PAGE_NUMBER, "" + pageNumber);
|
||||
}
|
||||
values.put(APIConstants.PARAMETER_PAGE_NUMBER, Integer.toString(pageNumber));
|
||||
values.put(APIConstants.PARAMETER_ORDER, order.getParameterValue());
|
||||
values.put(APIConstants.PARAMETER_READ_FILTER, filter.getParameterValue());
|
||||
final APIResponse response = get(APIConstants.URL_RIVER_STORIES, values);
|
||||
|
||||
StoriesResponse storiesResponse = (StoriesResponse) response.getResponse(gson, StoriesResponse.class);
|
||||
if (!response.isError()) {
|
||||
if (TextUtils.equals(pageNumber,"1")) {
|
||||
if (pageNumber == 1) {
|
||||
Uri storyUri = FeedProvider.ALL_STORIES_URI;
|
||||
contentResolver.delete(storyUri, null, null);
|
||||
}
|
||||
|
@ -258,10 +256,8 @@ public class APIManager {
|
|||
contentResolver.insert(FeedProvider.USERS_URI, user.getValues());
|
||||
}
|
||||
|
||||
return storiesResponse;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return storiesResponse;
|
||||
}
|
||||
|
||||
public StoriesResponse getStarredStories(int pageNumber) {
|
||||
|
|
|
@ -57,7 +57,6 @@ public class SyncService extends IntentService {
|
|||
public enum TaskType {
|
||||
FOLDER_UPDATE_TWO_STEP,
|
||||
FOLDER_UPDATE_WITH_COUNT,
|
||||
MULTIFEED_UPDATE,
|
||||
MULTISOCIALFEED_UPDATE
|
||||
};
|
||||
|
||||
|
@ -107,17 +106,6 @@ public class SyncService extends IntentService {
|
|||
apiManager.getFolderFeedMapping(true);
|
||||
break;
|
||||
|
||||
case MULTIFEED_UPDATE:
|
||||
if (intent.getStringArrayExtra(EXTRA_TASK_MULTIFEED_IDS) != null) {
|
||||
StoriesResponse storiesForFeeds = apiManager.getStoriesForFeeds(intent.getStringArrayExtra(EXTRA_TASK_MULTIFEED_IDS), intent.getStringExtra(EXTRA_TASK_PAGE_NUMBER), (StoryOrder) intent.getSerializableExtra(EXTRA_TASK_ORDER), (ReadFilter) intent.getSerializableExtra(EXTRA_TASK_READ_FILTER));
|
||||
if (storiesForFeeds == null || storiesForFeeds.stories.length == 0) {
|
||||
resultStatus = SyncStatus.STATUS_NO_MORE_UPDATES;
|
||||
}
|
||||
} else {
|
||||
Log.e(this.getClass().getName(), "No feed ids to refresh included in SyncRequest");
|
||||
}
|
||||
break;
|
||||
|
||||
case MULTISOCIALFEED_UPDATE:
|
||||
if (intent.getStringArrayExtra(EXTRA_TASK_MULTIFEED_IDS) != null) {
|
||||
SocialFeedResponse sharedStoriesForFeeds = apiManager.getSharedStoriesForFeeds(intent.getStringArrayExtra(EXTRA_TASK_MULTIFEED_IDS), intent.getStringExtra(EXTRA_TASK_PAGE_NUMBER), (StoryOrder) intent.getSerializableExtra(EXTRA_TASK_ORDER), (ReadFilter) intent.getSerializableExtra(EXTRA_TASK_READ_FILTER));
|
||||
|
|
|
@ -51,6 +51,20 @@ public class FeedUtils {
|
|||
}.execute();
|
||||
}
|
||||
|
||||
public static void updateFeeds(final Context context, final ActionCompletionListener receiver, final String[] feedIds, final int pageNumber, final StoryOrder order, final ReadFilter filter) {
|
||||
new AsyncTask<Void, Void, StoriesResponse>() {
|
||||
@Override
|
||||
protected StoriesResponse doInBackground(Void... arg) {
|
||||
APIManager apiManager = new APIManager(context);
|
||||
return apiManager.getStoriesForFeeds(feedIds, pageNumber, order, filter);
|
||||
}
|
||||
@Override
|
||||
protected void onPostExecute(StoriesResponse result) {
|
||||
handleStoryResponse(context, result, result.stories, receiver);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
public static void updateFeed(final Context context, final ActionCompletionListener receiver, final String feedId, final String socialUsername, final int pageNumber, final StoryOrder order, final ReadFilter filter) {
|
||||
new AsyncTask<Void, Void, SocialFeedResponse>() {
|
||||
@Override
|
||||
|
|
Loading…
Add table
Reference in a new issue