summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java22
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java28
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java4
-rw-r--r--core/src/main/res/values/colors.xml2
-rw-r--r--core/src/main/res/values/strings.xml11
10 files changed, 72 insertions, 32 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 6b93723a0..2acb7108d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -292,7 +292,8 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
}
public void updateFromOther(Feed other) {
- super.updateFromOther(other);
+ // don't update feed's download_url, we do that manually if redirected
+ // see AntennapodHttpClient
if (other.title != null) {
title = other.title;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index 591451e17..abb5f1f99 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -525,7 +525,7 @@ public class UserPreferences {
* @return The data folder that has been requested or null if the folder
* could not be created.
*/
- public static File getDataFolder(Context context, String type) {
+ public static File getDataFolder(String type) {
String strDir = prefs.getString(PREF_DATA_FOLDER, null);
if (strDir == null) {
Log.d(TAG, "Using default data folder");
@@ -547,7 +547,7 @@ public class UserPreferences {
for (int i = 0; i < dirs.length; i++) {
if (dirs.length > 0) {
if (i < dirs.length - 1) {
- dataDir = getDataFolder(context, dirs[i]);
+ dataDir = getDataFolder(dirs[i]);
if (dataDir == null) {
return null;
}
@@ -598,7 +598,7 @@ public class UserPreferences {
* available
*/
private static void createImportDirectory() {
- File importDir = getDataFolder(context, IMPORT_DIR);
+ File importDir = getDataFolder(IMPORT_DIR);
if (importDir != null) {
if (importDir.exists()) {
Log.d(TAG, "Import directory already exists");
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index 5deb5e501..0e79fbf7b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -5,10 +5,14 @@ import android.support.annotation.NonNull;
import android.util.Log;
import com.squareup.okhttp.OkHttpClient;
+import com.squareup.okhttp.Request;
+import com.squareup.okhttp.Response;
+import com.squareup.okhttp.internal.http.StatusLine;
import java.io.IOException;
import java.net.CookieManager;
import java.net.CookiePolicy;
+import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.Socket;
import java.security.GeneralSecurityException;
@@ -18,6 +22,8 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
+import de.danoeh.antennapod.core.storage.DBWriter;
+
/**
* Provides access to a HttpClient singleton.
*/
@@ -58,6 +64,22 @@ public class AntennapodHttpClient {
OkHttpClient client = new OkHttpClient();
+ // detect 301 Moved permanently and 308 Permanent Redirect
+ client.networkInterceptors().add(chain -> {
+ Request request = chain.request();
+ Response response = chain.proceed(request);
+ if(response.code() == HttpURLConnection.HTTP_MOVED_PERM ||
+ response.code() == StatusLine.HTTP_PERM_REDIRECT) {
+ String location = response.header("Location");
+ try {
+ DBWriter.updateFeedDownloadURL(request.urlString(), location).get();
+ } catch (Exception e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ }
+ }
+ return response;
+ });
+
// set cookie handler
CookieManager cm = new CookieManager();
cm.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index a8aee1961..157e6d28c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -6,7 +6,6 @@ import android.database.Cursor;
import android.util.Log;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
@@ -258,7 +257,7 @@ public final class DBTasks {
*/
public static void refreshFeed(Context context, Feed feed)
throws DownloadRequestException {
- Log.d(TAG, "id " + feed.getId());
+ Log.d(TAG, "refreshFeed(feed.id: " + feed.getId() +")");
refreshFeed(context, feed, false);
}
@@ -431,7 +430,7 @@ public final class DBTasks {
return queue.contains(feedItemId);
}
- private static Feed searchFeedByIdentifyingValueOrID(Context context, PodDBAdapter adapter,
+ private static Feed searchFeedByIdentifyingValueOrID(PodDBAdapter adapter,
Feed feed) {
if (feed.getId() != 0) {
return DBReader.getFeed(feed.getId(), adapter);
@@ -486,7 +485,7 @@ public final class DBTasks {
final Feed newFeed = newFeeds[feedIdx];
// Look up feed in the feedslist
- final Feed savedFeed = searchFeedByIdentifyingValueOrID(context, adapter,
+ final Feed savedFeed = searchFeedByIdentifyingValueOrID(adapter,
newFeed);
if (savedFeed == null) {
Log.d(TAG, "Found no existing Feed with title "
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index 49a62da8c..efc0c882a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -19,12 +19,10 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import de.danoeh.antennapod.core.BuildConfig;
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.asynctask.FlattrClickWorker;
import de.danoeh.antennapod.core.event.FavoritesEvent;
@@ -382,7 +380,7 @@ public class DBWriter {
events.add(QueueEvent.added(item, 0 + i));
} else {
queue.add(item);
- events.add(QueueEvent.added(item, queue.size()-1));
+ events.add(QueueEvent.added(item, queue.size() - 1));
}
queueModified = true;
if (item.isNew()) {
@@ -393,7 +391,7 @@ public class DBWriter {
}
if (queueModified) {
adapter.setQueue(queue);
- for(QueueEvent event : events) {
+ for (QueueEvent event : events) {
EventBus.getDefault().post(event);
}
if (markAsUnplayedIds.size() > 0) {
@@ -786,19 +784,14 @@ public class DBWriter {
}
/**
- * Updates download URLs of feeds from a given Map. The key of the Map is the original URL of the feed
- * and the value is the updated URL
+ * Updates download URL of a feed
*/
- public static Future<?> updateFeedDownloadURLs(final Map<String, String> urls) {
+ public static Future<?> updateFeedDownloadURL(final String original, final String updated) {
+ Log.d(TAG, "updateFeedDownloadURL(original: " + original + ", updated: " + updated +")");
return dbExec.submit(() -> {
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
- for (String key : urls.keySet()) {
- if (BuildConfig.DEBUG)
- Log.d(TAG, "Replacing URL " + key + " with url " + urls.get(key));
-
- adapter.setFeedDownloadUrl(key, urls.get(key));
- }
+ adapter.setFeedDownloadUrl(original, updated);
adapter.close();
});
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
index 318060abc..ee079c068 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
@@ -334,7 +334,7 @@ public class DownloadRequester {
private File getExternalFilesDirOrThrowException(Context context,
String type) throws DownloadRequestException {
- File result = UserPreferences.getDataFolder(context, type);
+ File result = UserPreferences.getDataFolder(type);
if (result == null) {
throw new DownloadRequestException(
"Failed to access external storage");
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 c67fb956a..bf324c9d1 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
@@ -264,6 +264,20 @@ public class PodDBAdapter {
};
/**
+ * All the tables in the database
+ */
+ private static final String[] ALL_TABLES = {
+ TABLE_NAME_FEEDS,
+ TABLE_NAME_FEED_ITEMS,
+ TABLE_NAME_FEED_IMAGES,
+ TABLE_NAME_FEED_MEDIA,
+ TABLE_NAME_DOWNLOAD_LOG,
+ TABLE_NAME_QUEUE,
+ TABLE_NAME_SIMPLECHAPTERS,
+ TABLE_NAME_FAVORITES
+ };
+
+ /**
* Contains FEEDITEM_SEL_FI_SMALL as comma-separated list. Useful for raw queries.
*/
private static final String SEL_FI_SMALL_STR;
@@ -325,15 +339,13 @@ public class PodDBAdapter {
}
public static boolean deleteDatabase() {
- if(dbHelper != null) {
- dbHelper.close();
- dbHelper = null;
- }
- if(context != null) { // may not have been initialized
- return context.deleteDatabase(PodDBAdapter.DATABASE_NAME);
- } else {
- return false;
+ PodDBAdapter adapter = getInstance();
+ adapter.open();
+ for (String tableName : ALL_TABLES) {
+ db.delete(tableName, "1", null);
}
+ adapter.close();
+ return true;
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
index dea380937..248f2bf32 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java
@@ -19,7 +19,7 @@ public class StorageUtils {
private static final String TAG = "StorageUtils";
public static boolean storageAvailable(Context context) {
- File dir = UserPreferences.getDataFolder(context, null);
+ File dir = UserPreferences.getDataFolder(null);
if (dir != null) {
return dir.exists() && dir.canRead() && dir.canWrite();
} else {
@@ -52,7 +52,7 @@ public class StorageUtils {
*/
public static long getFreeSpaceAvailable() {
StatFs stat = new StatFs(UserPreferences.getDataFolder(
- ClientConfig.applicationCallbacks.getApplicationInstance(), null).getAbsolutePath());
+ null).getAbsolutePath());
long availableBlocks;
long blockSize;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index 72897ed07..ff061be4c 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -28,5 +28,7 @@
<!-- Theme colors -->
<color name="primary_light">#FFFFFF</color>
+ <color name="highlight_light">#DDDDDD</color>
+ <color name="highlight_dark">#414141</color>
</resources>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 5bf33c90c..ed818e09a 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -366,6 +366,9 @@
<string name="pref_smart_mark_as_played_disabled">Disabled</string>
<string name="pref_image_cache_size_title">Image Cache Size</string>
<string name="pref_image_cache_size_sum">Size of the disk cache for images.</string>
+ <string name="crash_report_title">Crash Report</string>
+ <string name="crash_report_sum">Send the latest crash report via e-mail</string>
+ <string name="send_email">Send e-mail</string>
<string name="experimental_pref">Experimental</string>
<string name="pref_sonic_title">Sonic media player</string>
<string name="pref_sonic_message">Use built-in sonic media player as a replacement for Prestissimo</string>
@@ -544,4 +547,12 @@
<string name="sort_date_old_new">Date (Old \u2192 New)</string>
<string name="sort_duration_short_long">Duration (Short \u2192 Long)</string>
<string name="sort_duration_long_short">Duration (Long \u2192 Short)</string>
+
+ <!-- Rating dialog -->
+ <string name="rating_title">Like AntennaPod?</string>
+ <string name="rating_message">We would appreciate it if you take the time to rate AntennaPod.</string>
+ <string name="rating_never_label">Leave me alone</string>
+ <string name="rating_later_label">Remind me later</string>
+ <string name="rating_now_label">Sure, let\'s do this!</string>
+
</resources>