summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-07-18 12:38:49 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-07-18 12:38:49 +0200
commit664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0 (patch)
treed17e1f8ecf5eb6ef71b334b85324ad74fd0b0139 /src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
parent1bc9285aa52b687a35968573fd2d598f2720c8f2 (diff)
downloadAntennaPod-664a6ccf8ca3d2803bcfe4a8558bb6dbe14015c0.zip
Moved clicking action to main thread
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java')
-rw-r--r--src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
new file mode 100644
index 000000000..339bf18d8
--- /dev/null
+++ b/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
@@ -0,0 +1,83 @@
+package de.danoeh.antennapod.asynctask;
+
+import org.shredzone.flattr4j.exception.FlattrException;
+import org.shredzone.flattr4j.oauth.AccessToken;
+
+import android.content.Context;
+import android.os.AsyncTask;
+import android.util.Log;
+import android.widget.Toast;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.util.FlattrUtils;
+
+/** Performs a click action in a background thread. */
+public class FlattrClickWorker extends AsyncTask<Void, Void, Void> {
+ protected static final String TAG = "FlattrClickWorker";
+ protected Context context;
+ protected String url;
+ protected String errorMsg;
+ protected int exitCode;
+
+ protected final static int SUCCESS = 0;
+ protected final static int NO_TOKEN = 1;
+ protected final static int FLATTR_ERROR = 2;
+
+ public FlattrClickWorker(Context context, String url) {
+ super();
+ this.context = context;
+ this.url = url;
+ exitCode = SUCCESS;
+ errorMsg = "";
+ }
+
+ protected void onNoAccessToken() {
+ Log.w(TAG, "No access token was available");
+ FlattrUtils.showNoTokenDialog(context, url);
+ }
+
+ protected void onFlattrError() {
+ FlattrUtils.showErrorDialog(context, errorMsg);
+ }
+
+ protected void onSuccess() {
+ Toast toast = Toast.makeText(context.getApplicationContext(),
+ R.string.flattr_click_success, Toast.LENGTH_LONG);
+ toast.show();
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ Log.d(TAG, "Exit code was " + exitCode);
+ switch (exitCode) {
+ case NO_TOKEN:
+ onNoAccessToken();
+ break;
+ case FLATTR_ERROR:
+ onFlattrError();
+ break;
+ case SUCCESS:
+ onSuccess();
+ break;
+ }
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ Log.d(TAG, "Starting background work");
+ AccessToken token = FlattrUtils.retrieveToken();
+ if (token != null) {
+ try {
+ FlattrUtils.clickUrl(token, context, url);
+ } catch (FlattrException e) {
+ e.printStackTrace();
+ exitCode = FLATTR_ERROR;
+ errorMsg = e.getMessage();
+ }
+ } else {
+ exitCode = NO_TOKEN;
+ }
+ return null;
+ }
+
+}
+