Skip to content

Commit c004e47

Browse files
maskaravivekashishkumar468
authored andcommitted
Fix loading of images in contributions list (#2932)
1 parent ee3f4d4 commit c004e47

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@
66
import android.widget.ProgressBar;
77
import android.widget.TextView;
88

9+
import androidx.collection.LruCache;
10+
911
import com.facebook.drawee.view.SimpleDraweeView;
1012

13+
import org.apache.commons.lang3.StringUtils;
14+
1115
import javax.inject.Inject;
16+
import javax.inject.Named;
1217

1318
import butterknife.BindView;
1419
import butterknife.ButterKnife;
@@ -18,6 +23,7 @@
1823
import fr.free.nrw.commons.ViewHolder;
1924
import fr.free.nrw.commons.contributions.model.DisplayableContribution;
2025
import fr.free.nrw.commons.di.ApplicationlessInjection;
26+
import io.reactivex.android.schedulers.AndroidSchedulers;
2127
import io.reactivex.disposables.CompositeDisposable;
2228
import io.reactivex.disposables.Disposable;
2329
import io.reactivex.schedulers.Schedulers;
@@ -35,6 +41,10 @@ public class ContributionViewHolder implements ViewHolder<DisplayableContributio
3541
@Inject
3642
MediaDataExtractor mediaDataExtractor;
3743

44+
@Inject
45+
@Named("thumbnail-cache")
46+
LruCache<String, String> thumbnailCache;
47+
3848
private DisplayableContribution contribution;
3949
private CompositeDisposable compositeDisposable = new CompositeDisposable();
4050

@@ -89,15 +99,21 @@ public void bindModel(Context context, DisplayableContribution contribution) {
8999

90100
/**
91101
* This method fetches the thumbnail url from file name
102+
* If the thumbnail url is present in cache, then it is used otherwise API call is made to fetch the thumbnail
92103
* This can be removed once #2904 is in place and contribution contains all metadata beforehand
93104
* @param contribution
94105
*/
95106
private void fetchAndDisplayThumbnail(DisplayableContribution contribution) {
107+
if (!StringUtils.isBlank(thumbnailCache.get(contribution.getFilename()))) {
108+
imageView.setImageURI(thumbnailCache.get(contribution.getFilename()));
109+
return;
110+
}
96111
Timber.d("Fetching thumbnail for %s", contribution.getFilename());
97112
Disposable disposable = mediaDataExtractor.getMediaFromFileName(contribution.getFilename())
98113
.subscribeOn(Schedulers.io())
99-
.observeOn(Schedulers.io())
114+
.observeOn(AndroidSchedulers.mainThread())
100115
.subscribe(media -> {
116+
thumbnailCache.put(contribution.getFilename(), media.getThumbUrl());
101117
imageView.setImageURI(media.getThumbUrl());
102118
});
103119
compositeDisposable.add(disposable);

app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ public DBOpenHelper provideDBOpenHelper(Context context) {
150150

151151
@Provides
152152
@Singleton
153+
@Named("thumbnail-cache")
153154
public LruCache<String, String> provideLruCache() {
154155
return new LruCache<>(1024);
155156
}

0 commit comments

Comments
 (0)