summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java5
-rw-r--r--src/de/danoeh/antennapod/util/FlattrServiceCreator.java23
-rw-r--r--src/de/danoeh/antennapod/util/FlattrUtils.java13
3 files changed, 31 insertions, 10 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
index 339bf18d8..63e7f67ef 100644
--- a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
+++ b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
@@ -64,10 +64,9 @@ public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
Log.d(TAG, "Starting background work");
- AccessToken token = FlattrUtils.retrieveToken();
- if (token != null) {
+ if (FlattrUtils.hasToken()) {
try {
- FlattrUtils.clickUrl(token, context, url);
+ FlattrUtils.clickUrl(context, url);
} catch (FlattrException e) {
e.printStackTrace();
exitCode = FLATTR_ERROR;
diff --git a/src/de/danoeh/antennapod/util/FlattrServiceCreator.java b/src/de/danoeh/antennapod/util/FlattrServiceCreator.java
new file mode 100644
index 000000000..a6505c16b
--- /dev/null
+++ b/src/de/danoeh/antennapod/util/FlattrServiceCreator.java
@@ -0,0 +1,23 @@
+package de.danoeh.antennapod.util;
+
+import org.shredzone.flattr4j.FlattrFactory;
+import org.shredzone.flattr4j.FlattrService;
+import org.shredzone.flattr4j.oauth.AccessToken;
+
+import android.util.Log;
+
+/** Ensures that only one instance of the FlattrService class exists at a time */
+public class FlattrServiceCreator {
+ public static final String TAG = "FlattrServiceCreator";
+
+ private static FlattrService flattrService;
+
+ public static FlattrService getService(AccessToken token) {
+ if (flattrService == null) {
+ Log.d(TAG, "Creating new instance of Flattr Service");
+ FlattrFactory factory = FlattrFactory.getInstance();
+ flattrService = factory.createFlattrService(token);
+ }
+ return flattrService;
+ }
+}
diff --git a/src/de/danoeh/antennapod/util/FlattrUtils.java b/src/de/danoeh/antennapod/util/FlattrUtils.java
index 6f009698a..7002ec2ad 100644
--- a/src/de/danoeh/antennapod/util/FlattrUtils.java
+++ b/src/de/danoeh/antennapod/util/FlattrUtils.java
@@ -42,6 +42,7 @@ public class FlattrUtils {
public static final String APP_URL = "http://flattr.com/thing/745609";
public static final String APP_THING_ID = "745609";
+
private static AndroidAuthenticator createAuthenticator() {
return new AndroidAuthenticator(HOST_NAME, APP_KEY, APP_SECRET);
}
@@ -57,7 +58,7 @@ public class FlattrUtils {
* Returns the access token from the preferences or null if no access token
* was saved before.
*/
- public static AccessToken retrieveToken() {
+ private static AccessToken retrieveToken() {
Log.d(TAG, "Retrieving access token");
String token = PreferenceManager.getDefaultSharedPreferences(
PodcastApp.getInstance()).getString(PREF_ACCESS_TOKEN, null);
@@ -95,8 +96,7 @@ public class FlattrUtils {
/** Get the thing that represents this app */
public static Thing getAppThing(Context context) {
- FlattrFactory factory = FlattrFactory.getInstance();
- FlattrService fs = factory.createFlattrService(retrieveToken());
+ FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
try {
return fs.getThing(Thing.withId(APP_THING_ID));
} catch (FlattrException e) {
@@ -106,11 +106,10 @@ public class FlattrUtils {
}
}
- public static void clickUrl(AccessToken token, Context context, String url)
+ public static void clickUrl(Context context, String url)
throws FlattrException {
- FlattrFactory factory = FlattrFactory.getInstance();
- if (token != null) {
- FlattrService fs = factory.createFlattrService(retrieveToken());
+ if (hasToken()) {
+ FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
fs.click(url);
} else {
Log.e(TAG, "clickUrl was called with null access token");