summaryrefslogtreecommitdiff
path: root/src/de
diff options
context:
space:
mode:
Diffstat (limited to 'src/de')
-rw-r--r--src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java19
-rw-r--r--src/de/danoeh/antennapod/asynctask/FlattrTokenFetcher.java2
-rw-r--r--src/de/danoeh/antennapod/util/FlattrServiceCreator.java7
-rw-r--r--src/de/danoeh/antennapod/util/FlattrUtils.java38
4 files changed, 48 insertions, 18 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
index 6bfb46451..195a25b02 100644
--- a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
+++ b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
@@ -1,9 +1,9 @@
package de.danoeh.antennapod.asynctask;
import org.shredzone.flattr4j.exception.FlattrException;
-import org.shredzone.flattr4j.oauth.AccessToken;
import android.annotation.SuppressLint;
+import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
@@ -18,6 +18,7 @@ public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
protected String url;
protected String errorMsg;
protected int exitCode;
+ protected ProgressDialog progDialog;
protected final static int SUCCESS = 0;
protected final static int NO_TOKEN = 1;
@@ -50,9 +51,20 @@ public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
toast.show();
}
+ protected void onSetupProgDialog() {
+ progDialog = new ProgressDialog(context);
+ progDialog.setMessage(context.getString(R.string.flattring_label));
+ progDialog.setIndeterminate(true);
+ progDialog.setCancelable(false);
+ progDialog.show();
+ }
+
@Override
protected void onPostExecute(Void result) {
Log.d(TAG, "Exit code was " + exitCode);
+ if (progDialog != null) {
+ progDialog.dismiss();
+ }
switch (exitCode) {
case NO_TOKEN:
onNoAccessToken();
@@ -67,6 +79,11 @@ public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
}
@Override
+ protected void onPreExecute() {
+ onSetupProgDialog();
+ }
+
+ @Override
protected Void doInBackground(Void... params) {
Log.d(TAG, "Starting background work");
if (FlattrUtils.hasToken()) {
diff --git a/src/de/danoeh/antennapod/asynctask/FlattrTokenFetcher.java b/src/de/danoeh/antennapod/asynctask/FlattrTokenFetcher.java
index 86928c901..5c6797c71 100644
--- a/src/de/danoeh/antennapod/asynctask/FlattrTokenFetcher.java
+++ b/src/de/danoeh/antennapod/asynctask/FlattrTokenFetcher.java
@@ -4,6 +4,7 @@ import org.shredzone.flattr4j.exception.FlattrException;
import org.shredzone.flattr4j.oauth.AccessToken;
import org.shredzone.flattr4j.oauth.AndroidAuthenticator;
+import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
@@ -79,6 +80,7 @@ public class FlattrTokenFetcher extends AsyncTask<Void, Void, AccessToken> {
}
}
+ @SuppressLint("NewApi")
public void executeAsync() {
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
diff --git a/src/de/danoeh/antennapod/util/FlattrServiceCreator.java b/src/de/danoeh/antennapod/util/FlattrServiceCreator.java
index a6505c16b..50e2c531c 100644
--- a/src/de/danoeh/antennapod/util/FlattrServiceCreator.java
+++ b/src/de/danoeh/antennapod/util/FlattrServiceCreator.java
@@ -10,7 +10,7 @@ import android.util.Log;
public class FlattrServiceCreator {
public static final String TAG = "FlattrServiceCreator";
- private static FlattrService flattrService;
+ private static volatile FlattrService flattrService;
public static FlattrService getService(AccessToken token) {
if (flattrService == null) {
@@ -20,4 +20,9 @@ public class FlattrServiceCreator {
}
return flattrService;
}
+
+ public static void deleteFlattrService() {
+ Log.d(TAG, "Deleting service instance");
+ flattrService = null;
+ }
}
diff --git a/src/de/danoeh/antennapod/util/FlattrUtils.java b/src/de/danoeh/antennapod/util/FlattrUtils.java
index 1b28db8bf..54872f07a 100644
--- a/src/de/danoeh/antennapod/util/FlattrUtils.java
+++ b/src/de/danoeh/antennapod/util/FlattrUtils.java
@@ -39,12 +39,13 @@ public class FlattrUtils {
private static final String PREF_ACCESS_TOKEN = "de.danoeh.antennapod.preference.flattrAccessToken";
/** Flattr URL for this app. */
- public static final String APP_URL = "http://antennapod.com";
+ public static final String APP_URL = "http://antennapod.com";
/** Human-readable flattr-page. */
public static final String APP_LINK = "https://flattr.com/thing/745609/";
public static final String APP_THING_ID = "745609";
-
-
+
+ private static volatile AccessToken cachedToken;
+
private static AndroidAuthenticator createAuthenticator() {
return new AndroidAuthenticator(HOST_NAME, APP_KEY, APP_SECRET);
}
@@ -61,16 +62,21 @@ public class FlattrUtils {
* was saved before.
*/
private static AccessToken retrieveToken() {
- Log.d(TAG, "Retrieving access token");
- String token = PreferenceManager.getDefaultSharedPreferences(
- PodcastApp.getInstance()).getString(PREF_ACCESS_TOKEN, null);
- if (token != null) {
- Log.d(TAG, "Found access token");
- return new AccessToken(token);
- } else {
- Log.d(TAG, "No access token found");
- return null;
+ if (cachedToken == null) {
+ Log.d(TAG, "Retrieving access token");
+ String token = PreferenceManager.getDefaultSharedPreferences(
+ PodcastApp.getInstance())
+ .getString(PREF_ACCESS_TOKEN, null);
+ if (token != null) {
+ Log.d(TAG, "Found access token. Caching.");
+ cachedToken = new AccessToken(token);
+ } else {
+ Log.d(TAG, "No access token found");
+ return null;
+ }
}
+ return cachedToken;
+
}
/** Returns true if the application has saved an access token */
@@ -89,13 +95,14 @@ public class FlattrUtils {
editor.putString(PREF_ACCESS_TOKEN, null);
}
editor.commit();
+ cachedToken = null;
}
public static void deleteToken() {
Log.d(TAG, "Deleting flattr token");
storeToken(null);
}
-
+
/** Get the thing that represents this app */
public static Thing getAppThing(Context context) {
FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
@@ -127,6 +134,7 @@ public class FlattrUtils {
public static void revokeAccessToken(Context context) {
Log.d(TAG, "Revoking access token");
deleteToken();
+ FlattrServiceCreator.deleteFlattrService();
showRevokeDialog(context);
}
@@ -146,8 +154,7 @@ public class FlattrUtils {
builder.create().show();
}
- public static void showNoTokenDialog(final Context context,
- final String url) {
+ public static void showNoTokenDialog(final Context context, final String url) {
Log.d(TAG, "Creating showNoTokenDialog");
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.no_flattr_token_title);
@@ -218,6 +225,5 @@ public class FlattrUtils {
});
builder.create().show();
}
-
}