mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
* Fixed #4908 : Thumbnail image is grey during upload * Test Added and minor changes
This commit is contained in:
parent
4ba463c6b2
commit
e58322ed63
2 changed files with 54 additions and 4 deletions
|
|
@ -3,6 +3,7 @@ package fr.free.nrw.commons.contributions;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.webkit.URLUtil;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
|
|
@ -23,6 +24,7 @@ import fr.free.nrw.commons.media.MediaClient;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public class ContributionViewHolder extends RecyclerView.ViewHolder {
|
public class ContributionViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
|
@ -58,6 +60,7 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder {
|
||||||
private boolean isWikipediaButtonDisplayed;
|
private boolean isWikipediaButtonDisplayed;
|
||||||
private AlertDialog pausingPopUp;
|
private AlertDialog pausingPopUp;
|
||||||
private View parent;
|
private View parent;
|
||||||
|
private ImageRequest imageRequest;
|
||||||
|
|
||||||
ContributionViewHolder(final View parent, final Callback callback,
|
ContributionViewHolder(final View parent, final Callback callback,
|
||||||
final MediaClient mediaClient) {
|
final MediaClient mediaClient) {
|
||||||
|
|
@ -96,11 +99,18 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder {
|
||||||
final String imageSource = chooseImageSource(contribution.getMedia().getThumbUrl(),
|
final String imageSource = chooseImageSource(contribution.getMedia().getThumbUrl(),
|
||||||
contribution.getLocalUri());
|
contribution.getLocalUri());
|
||||||
if (!TextUtils.isEmpty(imageSource)) {
|
if (!TextUtils.isEmpty(imageSource)) {
|
||||||
final ImageRequest imageRequest =
|
if (URLUtil.isHttpsUrl(imageSource)) {
|
||||||
ImageRequestBuilder.newBuilderWithSource(Uri.parse(imageSource))
|
imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(imageSource))
|
||||||
.setProgressiveRenderingEnabled(true)
|
.setProgressiveRenderingEnabled(true)
|
||||||
.build();
|
.build();
|
||||||
imageView.setImageRequest(imageRequest);
|
} else if(imageSource != null) {
|
||||||
|
final File file = new File(imageSource);
|
||||||
|
imageRequest = ImageRequest.fromFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(imageRequest != null){
|
||||||
|
imageView.setImageRequest(imageRequest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
seqNumView.setText(String.valueOf(position + 1));
|
seqNumView.setText(String.valueOf(position + 1));
|
||||||
|
|
@ -280,4 +290,8 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder {
|
||||||
pauseResumeButton.setImageResource(R.drawable.play_icon);
|
pauseResumeButton.setImageResource(R.drawable.play_icon);
|
||||||
pauseResumeButton.setTag(parent.getContext().getString(R.string.resume));
|
pauseResumeButton.setTag(parent.getContext().getString(R.string.resume));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ImageRequest getImageRequest() {
|
||||||
|
return imageRequest;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,9 @@ import android.widget.RelativeLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.drawee.view.SimpleDraweeView
|
import com.facebook.drawee.view.SimpleDraweeView
|
||||||
|
import com.facebook.imagepipeline.request.ImageRequest
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
|
@ -22,7 +24,8 @@ import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito
|
||||||
|
import org.mockito.Mockito.*
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
|
@ -31,6 +34,7 @@ import org.robolectric.RuntimeEnvironment
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
|
import java.io.File
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -324,4 +328,36 @@ class ContributionViewHolderUnitTests {
|
||||||
contributionViewHolder.init(0, contribution)
|
contributionViewHolder.init(0, contribution)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testInitCaseImageSource_HttpURL() {
|
||||||
|
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||||
|
`when`(contribution.media).thenReturn(media)
|
||||||
|
`when`(contribution.media.thumbUrl).thenReturn("https://demo/sample.png")
|
||||||
|
`when`(contribution.localUri).thenReturn(null)
|
||||||
|
contributionViewHolder.init(0, contribution)
|
||||||
|
Assert.assertNotNull(contributionViewHolder.imageRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testInitCaseImageSource_NULL() {
|
||||||
|
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||||
|
`when`(contribution.media).thenReturn(media)
|
||||||
|
`when`(contribution.media.thumbUrl).thenReturn(null)
|
||||||
|
`when`(contribution.localUri).thenReturn(null)
|
||||||
|
contributionViewHolder.init(0, contribution)
|
||||||
|
Assert.assertNull(contributionViewHolder.imageRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testInitCaseImageSource_LocalUri() {
|
||||||
|
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||||
|
`when`(contribution.media).thenReturn(media)
|
||||||
|
`when`(contribution.media.thumbUrl).thenReturn(null)
|
||||||
|
`when`(contribution.localUri).thenReturn(Uri.parse("/data/android/demo.png"))
|
||||||
|
contributionViewHolder.init(0, contribution)
|
||||||
|
Assert.assertNotNull(contributionViewHolder.imageRequest)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue