summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2016-04-20 07:14:39 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2016-04-20 07:14:39 -0400
commit6df9c0d066ca672a7c9c7a3c880eae457cb747a6 (patch)
tree09ca4d2dc55bee1101e0e84b80e39626255d8d0f /core/src/main
parent606a22b98f08f067a66f1281797bad7e038fa9ee (diff)
parent6498eed95ca6136a9924f5fe7c3db012b5bc7ac3 (diff)
downloadAntennaPod-6df9c0d066ca672a7c9c7a3c880eae457cb747a6.zip
Merge pull request #1878 from mfietz/issue/1872-gpodder-sync
Fix initial gpodder sync
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java11
3 files changed, 22 insertions, 5 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
index d939c1007..9704d2111 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
@@ -111,12 +111,17 @@ public class GpodnetSyncService extends Service {
stopSelf();
return;
}
+ boolean initialSync = GpodnetPreferences.getLastSubscriptionSyncTimestamp() == 0 &&
+ GpodnetPreferences.getLastEpisodeActionsSyncTimestamp() == 0;
if(syncSubscriptions) {
syncSubscriptionChanges();
syncSubscriptions = false;
}
if(syncActions) {
- syncEpisodeActions();
+ // we only sync episode actions after the subscriptions have been added to the database
+ if(!initialSync) {
+ syncEpisodeActions();
+ }
syncActions = false;
}
stopSelf();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 2117d8824..00b0e6db3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -61,6 +61,7 @@ import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeAction;
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeAction.Action;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.service.GpodnetSyncService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
@@ -318,6 +319,14 @@ public class DownloadService extends Service {
cancelNotificationUpdater();
unregisterReceiver(cancelDownloadReceiver);
+ // if this was the initial gpodder sync, i.e. we just synced the feeds successfully,
+ // it is now time to sync the episode actions
+ if(GpodnetPreferences.loggedIn() &&
+ GpodnetPreferences.getLastSubscriptionSyncTimestamp() > 0 &&
+ GpodnetPreferences.getLastEpisodeActionsSyncTimestamp() == 0) {
+ GpodnetSyncService.sendSyncActionsIntent(this);
+ }
+
// start auto download in case anything new has shown up
DBTasks.autodownloadUndownloadedItems(getApplicationContext());
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index c8df0f572..92d1e790c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -1354,14 +1354,17 @@ public class PodDBAdapter {
}
public final Cursor getFeedItemCursor(final String podcastUrl, final String episodeUrl) {
- String downloadUrl = DatabaseUtils.sqlEscapeString(podcastUrl);
- String itemIdentifier = DatabaseUtils.sqlEscapeString(episodeUrl);
+ String escapedPodcastUrl = DatabaseUtils.sqlEscapeString(podcastUrl);
+ String escapedEpisodeUrl = DatabaseUtils.sqlEscapeString(episodeUrl);
final String query = ""
+ "SELECT " + SEL_FI_SMALL_STR + " FROM " + TABLE_NAME_FEED_ITEMS
+ " INNER JOIN " + TABLE_NAME_FEEDS
+ " ON " + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + "=" + TABLE_NAME_FEEDS + "." + KEY_ID
- + " WHERE " + TABLE_NAME_FEED_ITEMS + "." + KEY_ITEM_IDENTIFIER + "=" + itemIdentifier
- + " AND " + TABLE_NAME_FEEDS + "." + KEY_DOWNLOAD_URL + "=" + downloadUrl;
+ + " INNER JOIN " + TABLE_NAME_FEED_MEDIA
+ + " ON " + TABLE_NAME_FEED_MEDIA + "." + KEY_FEEDITEM + "=" + TABLE_NAME_FEED_ITEMS + "." + KEY_ID
+ + " WHERE " + TABLE_NAME_FEED_MEDIA + "." + KEY_DOWNLOAD_URL + "=" + escapedEpisodeUrl
+ + " AND " + TABLE_NAME_FEEDS + "." + KEY_DOWNLOAD_URL + "=" + escapedPodcastUrl;
+ Log.d(TAG, "SQL: " + query);
return db.rawQuery(query, null);
}