Feed view: Single feed refresh enforces actually refreshing

This commit is contained in:
Martin Fietz 2016-01-30 12:42:18 +01:00
parent 4bdf95bd45
commit 8c3a9986f0
4 changed files with 44 additions and 10 deletions

View File

@ -121,9 +121,8 @@ public class DownloadLogAdapter extends BaseAdapter {
if(holder.typeId == Feed.FEEDFILETYPE_FEED) {
Feed feed = DBReader.getFeed(holder.id);
if (feed != null) {
feed.setLastUpdate(null); // force refresh
try {
DBTasks.refreshFeed(context, feed);
DBTasks.forceRefreshFeed(context, feed);
} catch (DownloadRequestException e) {
e.printStackTrace();
}

View File

@ -63,10 +63,10 @@ public class FeedMenuHandler {
final Feed selectedFeed) throws DownloadRequestException {
switch (item.getItemId()) {
case R.id.refresh_item:
DBTasks.refreshFeed(context, selectedFeed);
DBTasks.forceRefreshFeed(context, selectedFeed);
break;
case R.id.refresh_complete_item:
DBTasks.refreshCompleteFeed(context, selectedFeed);
DBTasks.forceRefreshCompleteFeed(context, selectedFeed);
break;
case R.id.filter_items:
showFilterDialog(context, selectedFeed);

View File

@ -224,7 +224,28 @@ public final class DBTasks {
*/
public static void refreshCompleteFeed(final Context context, final Feed feed) {
try {
refreshFeed(context, feed, true);
refreshFeed(context, feed, true, false);
} catch (DownloadRequestException e) {
e.printStackTrace();
DBWriter.addDownloadStatus(
new DownloadStatus(feed, feed
.getHumanReadableIdentifier(),
DownloadError.ERROR_REQUEST_ERROR, false, e
.getMessage()
)
);
}
}
/**
* Downloads all pages of the given feed even if feed has not been modified since last refresh
*
* @param context Used for requesting the download.
* @param feed The Feed object.
*/
public static void forceRefreshCompleteFeed(final Context context, final Feed feed) {
try {
refreshFeed(context, feed, true, true);
} catch (DownloadRequestException e) {
e.printStackTrace();
DBWriter.addDownloadStatus(
@ -268,10 +289,23 @@ public final class DBTasks {
public static void refreshFeed(Context context, Feed feed)
throws DownloadRequestException {
Log.d(TAG, "refreshFeed(feed.id: " + feed.getId() +")");
refreshFeed(context, feed, false);
refreshFeed(context, feed, false, false);
}
private static void refreshFeed(Context context, Feed feed, boolean loadAllPages) throws DownloadRequestException {
/**
* Refresh a specific feed even if feed has not been modified since last refresh
*
* @param context Used for requesting the download.
* @param feed The Feed object.
*/
public static void forceRefreshFeed(Context context, Feed feed)
throws DownloadRequestException {
Log.d(TAG, "refreshFeed(feed.id: " + feed.getId() +")");
refreshFeed(context, feed, false, true);
}
private static void refreshFeed(Context context, Feed feed, boolean loadAllPages, boolean force)
throws DownloadRequestException {
Feed f;
String lastUpdate = feed.hasLastUpdateFailed() ? null : feed.getLastUpdate();
if (feed.getPreferences() == null) {
@ -281,7 +315,7 @@ public final class DBTasks {
feed.getPreferences().getUsername(), feed.getPreferences().getPassword());
}
f.setId(feed.getId());
DownloadRequester.getInstance().downloadFeed(context, f, loadAllPages);
DownloadRequester.getInstance().downloadFeed(context, f, loadAllPages, force);
}
/**

View File

@ -162,7 +162,8 @@ public class DownloadRequester {
* @param feed Feed to download
* @param loadAllPages Set to true to download all pages
*/
public synchronized void downloadFeed(Context context, Feed feed, boolean loadAllPages)
public synchronized void downloadFeed(Context context, Feed feed, boolean loadAllPages,
boolean force)
throws DownloadRequestException {
if (feedFileValid(feed)) {
String username = (feed.getPreferences() != null) ? feed.getPreferences().getUsername() : null;
@ -179,7 +180,7 @@ public class DownloadRequester {
}
public synchronized void downloadFeed(Context context, Feed feed) throws DownloadRequestException {
downloadFeed(context, feed, false);
downloadFeed(context, feed, false, false);
}
public synchronized void downloadMedia(Context context, FeedMedia feedmedia)