summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask/FlattrClickWorker.java
blob: 339bf18d81a585f82469fb7a91399cb0dcd456ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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;
	}

}