package com.telerik.app.tasks;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;
import com.telerik.app.model.ImageKind;
import com.telerik.app.R;
import com.telerik.everlive.sdk.core.model.system.File;
import com.telerik.everlive.sdk.core.result.RequestResult;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.URL;
import java.util.UUID;
import com.telerik.app.model.BaseViewModel;
public class BitmapDownloadTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference<ImageView> imageViewWeakReference;
private Context context;
private ImageKind imageKind;
public BitmapDownloadTask(Context context, ImageView imageView, ImageKind imageKind) {
this.imageViewWeakReference = new WeakReference<ImageView>(imageView);
this.context = context;
this.imageKind = imageKind;
}
@Override
protected Bitmap doInBackground(String... strings) {
String pictureId = strings[0];
try {
if (pictureId != null) {
Bitmap bitmap = BaseViewModel.getInstance().getPictureById(UUID.fromString(pictureId));
if (bitmap != null) {
return bitmap;
}
String url = null;
RequestResult userImageRequest = BaseViewModel.EverliveAPP.workWith().files().getById(pictureId).executeSync();
if (userImageRequest.getSuccess()) {
url = ((File) userImageRequest.getValue()).getUri();
URL imageUrl = new URL(url);
InputStream inputStream = imageUrl.openStream();
bitmap = BitmapFactory.decodeStream(inputStream);
BaseViewModel.getInstance().addPicture(UUID.fromString(pictureId), bitmap);
return bitmap;
}
}
switch (this.imageKind) {
case User : {
return BitmapFactory.decodeResource(this.context.getResources(), R.drawable.ic_contact_picture_64);
}
default : {
return null;
}
}
} catch (Exception ex) {
Log.e("Exception when downloading image: ", ex.getMessage().toString());
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewWeakReference != null && bitmap != null) {
final ImageView imageView = imageViewWeakReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}