mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2025-10-29 19:44:40 +00:00
Use Executor instead of AsyncTask in ViewImgurMediaActivity.
This commit is contained in:
parent
0bf02daf30
commit
7628a4073d
@ -7,9 +7,9 @@ import android.content.SharedPreferences;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.Html;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@ -17,6 +17,8 @@ import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.WorkerThread;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.Fragment;
|
||||
@ -36,7 +38,6 @@ import javax.inject.Named;
|
||||
|
||||
import app.futured.hauler.DragDirection;
|
||||
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
|
||||
import ml.docilealligator.infinityforreddit.post.ImgurMedia;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SetAsWallpaperCallback;
|
||||
@ -51,6 +52,7 @@ import ml.docilealligator.infinityforreddit.font.TitleFontFamily;
|
||||
import ml.docilealligator.infinityforreddit.font.TitleFontStyle;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewImgurImageFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewImgurVideoFragment;
|
||||
import ml.docilealligator.infinityforreddit.post.ImgurMedia;
|
||||
import ml.docilealligator.infinityforreddit.services.DownloadMediaService;
|
||||
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
||||
@ -72,7 +74,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
|
||||
public Typeface typeface;
|
||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||
private ArrayList<ImgurMedia> images;
|
||||
private ArrayList<ImgurMedia> mImages;
|
||||
private boolean useBottomAppBar;
|
||||
@Inject
|
||||
@Named("imgur")
|
||||
@ -82,6 +84,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
SharedPreferences sharedPreferences;
|
||||
@Inject
|
||||
Executor executor;
|
||||
private Handler handler;
|
||||
private ActivityViewImgurMediaBinding binding;
|
||||
|
||||
@Override
|
||||
@ -118,6 +121,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
|
||||
|
||||
handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
useBottomAppBar = sharedPreferences.getBoolean(SharedPreferencesUtils.USE_BOTTOM_TOOLBAR_IN_MEDIA_VIEWER, false);
|
||||
|
||||
if (!useBottomAppBar) {
|
||||
@ -137,7 +142,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
}
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
images = savedInstanceState.getParcelableArrayList(IMGUR_IMAGES_STATE);
|
||||
mImages = savedInstanceState.getParcelableArrayList(IMGUR_IMAGES_STATE);
|
||||
}
|
||||
|
||||
if (sharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_VERTICALLY_TO_GO_BACK_FROM_MEDIA, true)) {
|
||||
@ -150,7 +155,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
binding.getRoot().setDragEnabled(false);
|
||||
}
|
||||
|
||||
if (images == null) {
|
||||
if (mImages == null) {
|
||||
fetchImgurMedia(imgurId);
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
@ -174,21 +179,20 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
new ParseImgurImagesAsyncTask(response.body(), new ParseImgurImagesAsyncTask.ParseImgurImagesAsyncTaskListener() {
|
||||
@Override
|
||||
public void success(ArrayList<ImgurMedia> images) {
|
||||
ViewImgurMediaActivity.this.images = images;
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed() {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}).execute();
|
||||
executor.execute(() -> {
|
||||
ArrayList<ImgurMedia> images = parseImgurImages(response.body());
|
||||
handler.post(() -> {
|
||||
if (images != null) {
|
||||
mImages = images;
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
@ -208,21 +212,20 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
new ParseImgurImagesAsyncTask(response.body(), new ParseImgurImagesAsyncTask.ParseImgurImagesAsyncTaskListener() {
|
||||
@Override
|
||||
public void success(ArrayList<ImgurMedia> images) {
|
||||
ViewImgurMediaActivity.this.images = images;
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed() {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}).execute();
|
||||
executor.execute(() -> {
|
||||
ArrayList<ImgurMedia> images = parseImgurImages(response.body());
|
||||
handler.post(() -> {
|
||||
if (images != null) {
|
||||
mImages = images;
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
@ -242,22 +245,21 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
new ParseImgurImageAsyncTask(response.body(), new ParseImgurImageAsyncTask.ParseImgurImageAsyncTaskListener() {
|
||||
@Override
|
||||
public void success(ImgurMedia image) {
|
||||
ViewImgurMediaActivity.this.images = new ArrayList<>();
|
||||
ViewImgurMediaActivity.this.images.add(image);
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed() {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}).execute();
|
||||
executor.execute(() -> {
|
||||
ImgurMedia image = parseImgurImage(response.body());
|
||||
handler.post(() -> {
|
||||
if (image != null) {
|
||||
mImages = new ArrayList<>();
|
||||
mImages.add(image);
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
setupViewPager();
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE);
|
||||
binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE);
|
||||
@ -290,11 +292,11 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
}
|
||||
|
||||
private void setToolbarTitle(int position) {
|
||||
if (images != null && position >= 0 && position < images.size()) {
|
||||
if (images.get(position).getType() == ImgurMedia.TYPE_VIDEO) {
|
||||
setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.view_imgur_media_activity_video_label, position + 1, images.size()) + "</font>")));
|
||||
if (mImages != null && position >= 0 && position < mImages.size()) {
|
||||
if (mImages.get(position).getType() == ImgurMedia.TYPE_VIDEO) {
|
||||
setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.view_imgur_media_activity_video_label, position + 1, mImages.size()) + "</font>")));
|
||||
} else {
|
||||
setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.view_imgur_media_activity_image_label, position + 1, images.size()) + "</font>")));
|
||||
setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.view_imgur_media_activity_image_label, position + 1, mImages.size()) + "</font>")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -315,7 +317,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.action_download_all_imgur_album_media_view_imgur_media_activity) {
|
||||
//TODO: contentEstimatedBytes
|
||||
JobInfo jobInfo = DownloadMediaService.constructImgurAlbumDownloadAllMediaJobInfo(this, 5000000L * images.size(), images);
|
||||
JobInfo jobInfo = DownloadMediaService.constructImgurAlbumDownloadAllMediaJobInfo(this, 5000000L * mImages.size(), mImages);
|
||||
((JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(jobInfo);
|
||||
|
||||
Toast.makeText(this, R.string.download_started, Toast.LENGTH_SHORT).show();
|
||||
@ -328,13 +330,13 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putParcelableArrayList(IMGUR_IMAGES_STATE, images);
|
||||
outState.putParcelableArrayList(IMGUR_IMAGES_STATE, mImages);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setToHomeScreen(int viewPagerPosition) {
|
||||
if (images != null && viewPagerPosition >= 0 && viewPagerPosition < images.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), images.get(viewPagerPosition).getLink(), WallpaperSetter.HOME_SCREEN, this,
|
||||
if (mImages != null && viewPagerPosition >= 0 && viewPagerPosition < mImages.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), mImages.get(viewPagerPosition).getLink(), WallpaperSetter.HOME_SCREEN, this,
|
||||
new WallpaperSetter.SetWallpaperListener() {
|
||||
@Override
|
||||
public void success() {
|
||||
@ -351,8 +353,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
|
||||
@Override
|
||||
public void setToLockScreen(int viewPagerPosition) {
|
||||
if (images != null && viewPagerPosition >= 0 && viewPagerPosition < images.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), images.get(viewPagerPosition).getLink(), WallpaperSetter.LOCK_SCREEN, this,
|
||||
if (mImages != null && viewPagerPosition >= 0 && viewPagerPosition < mImages.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), mImages.get(viewPagerPosition).getLink(), WallpaperSetter.LOCK_SCREEN, this,
|
||||
new WallpaperSetter.SetWallpaperListener() {
|
||||
@Override
|
||||
public void success() {
|
||||
@ -369,8 +371,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
|
||||
@Override
|
||||
public void setToBoth(int viewPagerPosition) {
|
||||
if (images != null && viewPagerPosition >= 0 && viewPagerPosition < images.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), images.get(viewPagerPosition).getLink(), WallpaperSetter.BOTH_SCREENS, this,
|
||||
if (mImages != null && viewPagerPosition >= 0 && viewPagerPosition < mImages.size()) {
|
||||
WallpaperSetter.set(executor, new Handler(), mImages.get(viewPagerPosition).getLink(), WallpaperSetter.BOTH_SCREENS, this,
|
||||
new WallpaperSetter.SetWallpaperListener() {
|
||||
@Override
|
||||
public void success() {
|
||||
@ -389,6 +391,60 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
return binding.viewPagerViewImgurMediaActivity.getCurrentItem();
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
@Nullable
|
||||
private static ArrayList<ImgurMedia> parseImgurImages(String response) {
|
||||
try {
|
||||
JSONArray jsonArray = new JSONObject(response).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.IMAGES_KEY);
|
||||
ArrayList<ImgurMedia> images = new ArrayList<>();
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
try {
|
||||
JSONObject image = jsonArray.getJSONObject(i);
|
||||
String type = image.getString(JSONUtils.TYPE_KEY);
|
||||
if (type.contains("gif")) {
|
||||
images.add(new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
"video/mp4", image.getString(JSONUtils.MP4_KEY)));
|
||||
} else {
|
||||
images.add(new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
type, image.getString(JSONUtils.LINK_KEY)));
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return images;
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
@Nullable
|
||||
private static ImgurMedia parseImgurImage(String response) {
|
||||
try {
|
||||
JSONObject image = new JSONObject(response).getJSONObject(JSONUtils.DATA_KEY);
|
||||
String type = image.getString(JSONUtils.TYPE_KEY);
|
||||
if (type.contains("gif")) {
|
||||
return new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
"video/mp4", image.getString(JSONUtils.MP4_KEY));
|
||||
} else {
|
||||
return new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
type, image.getString(JSONUtils.LINK_KEY));
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCustomFont(Typeface typeface, Typeface titleTypeface, Typeface contentTypeface) {
|
||||
this.typeface = typeface;
|
||||
@ -403,13 +459,13 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
ImgurMedia imgurMedia = images.get(position);
|
||||
ImgurMedia imgurMedia = mImages.get(position);
|
||||
if (imgurMedia.getType() == ImgurMedia.TYPE_VIDEO) {
|
||||
ViewImgurVideoFragment fragment = new ViewImgurVideoFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(ViewImgurVideoFragment.EXTRA_IMGUR_VIDEO, imgurMedia);
|
||||
bundle.putInt(ViewImgurVideoFragment.EXTRA_INDEX, position);
|
||||
bundle.putInt(ViewImgurVideoFragment.EXTRA_MEDIA_COUNT, images.size());
|
||||
bundle.putInt(ViewImgurVideoFragment.EXTRA_MEDIA_COUNT, mImages.size());
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
} else {
|
||||
@ -417,7 +473,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(ViewImgurImageFragment.EXTRA_IMGUR_IMAGES, imgurMedia);
|
||||
bundle.putInt(ViewImgurImageFragment.EXTRA_INDEX, position);
|
||||
bundle.putInt(ViewImgurImageFragment.EXTRA_MEDIA_COUNT, images.size());
|
||||
bundle.putInt(ViewImgurImageFragment.EXTRA_MEDIA_COUNT, mImages.size());
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
@ -425,113 +481,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return images.size();
|
||||
}
|
||||
}
|
||||
|
||||
private static class ParseImgurImagesAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
private final String response;
|
||||
private ArrayList<ImgurMedia> images;
|
||||
private boolean parseFailed = false;
|
||||
private final ParseImgurImagesAsyncTaskListener parseImgurImagesAsyncTaskListener;
|
||||
|
||||
interface ParseImgurImagesAsyncTaskListener {
|
||||
void success(ArrayList<ImgurMedia> images);
|
||||
|
||||
void failed();
|
||||
}
|
||||
|
||||
ParseImgurImagesAsyncTask(String response, ParseImgurImagesAsyncTaskListener parseImgurImagesAsyncTaskListener) {
|
||||
this.response = response;
|
||||
this.parseImgurImagesAsyncTaskListener = parseImgurImagesAsyncTaskListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
try {
|
||||
JSONArray jsonArray = new JSONObject(response).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.IMAGES_KEY);
|
||||
images = new ArrayList<>();
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject image = jsonArray.getJSONObject(i);
|
||||
String type = image.getString(JSONUtils.TYPE_KEY);
|
||||
if (type.contains("gif")) {
|
||||
images.add(new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
"video/mp4", image.getString(JSONUtils.MP4_KEY)));
|
||||
} else {
|
||||
images.add(new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
type, image.getString(JSONUtils.LINK_KEY)));
|
||||
}
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
parseFailed = true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
if (parseFailed) {
|
||||
parseImgurImagesAsyncTaskListener.failed();
|
||||
} else {
|
||||
parseImgurImagesAsyncTaskListener.success(images);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class ParseImgurImageAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
private final String response;
|
||||
private ImgurMedia image;
|
||||
private boolean parseFailed = false;
|
||||
private final ParseImgurImageAsyncTaskListener parseImgurImageAsyncTaskListener;
|
||||
|
||||
interface ParseImgurImageAsyncTaskListener {
|
||||
void success(ImgurMedia image);
|
||||
|
||||
void failed();
|
||||
}
|
||||
|
||||
ParseImgurImageAsyncTask(String response, ParseImgurImageAsyncTaskListener parseImgurImageAsyncTaskListener) {
|
||||
this.response = response;
|
||||
this.parseImgurImageAsyncTaskListener = parseImgurImageAsyncTaskListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
try {
|
||||
JSONObject image = new JSONObject(response).getJSONObject(JSONUtils.DATA_KEY);
|
||||
String type = image.getString(JSONUtils.TYPE_KEY);
|
||||
if (type.contains("gif")) {
|
||||
this.image = new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
"video/mp4", image.getString(JSONUtils.MP4_KEY));
|
||||
} else {
|
||||
this.image = new ImgurMedia(image.getString(JSONUtils.ID_KEY),
|
||||
image.getString(JSONUtils.TITLE_KEY), image.getString(JSONUtils.DESCRIPTION_KEY),
|
||||
type, image.getString(JSONUtils.LINK_KEY));
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
parseFailed = true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
if (parseFailed) {
|
||||
parseImgurImageAsyncTaskListener.failed();
|
||||
} else {
|
||||
parseImgurImageAsyncTaskListener.success(image);
|
||||
}
|
||||
return mImages.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user