@@ -8,23 +8,29 @@ import androidx.appcompat.app.AlertDialog
8
8
import androidx.recyclerview.widget.RecyclerView
9
9
import com.facebook.imagepipeline.request.ImageRequest
10
10
import com.facebook.imagepipeline.request.ImageRequestBuilder
11
+ import fr.free.nrw.commons.Media
12
+ import fr.free.nrw.commons.utils.MediaAttributionUtil
13
+ import fr.free.nrw.commons.MediaDataExtractor
11
14
import fr.free.nrw.commons.R
12
15
import fr.free.nrw.commons.databinding.LayoutContributionBinding
13
16
import fr.free.nrw.commons.media.MediaClient
14
17
import io.reactivex.android.schedulers.AndroidSchedulers
15
18
import io.reactivex.disposables.CompositeDisposable
16
19
import io.reactivex.schedulers.Schedulers
20
+ import timber.log.Timber
17
21
import java.io.File
18
22
19
23
class ContributionViewHolder internal constructor(
20
- private val parent : View , private val callback : ContributionsListAdapter .Callback ,
21
- private val mediaClient : MediaClient
24
+ parent : View ,
25
+ private val callback : ContributionsListAdapter .Callback ,
26
+ private val compositeDisposable : CompositeDisposable ,
27
+ private val mediaClient : MediaClient ,
28
+ private val mediaDataExtractor : MediaDataExtractor
22
29
) : RecyclerView.ViewHolder(parent) {
23
30
var binding: LayoutContributionBinding = LayoutContributionBinding .bind(parent)
24
31
25
32
private var position = 0
26
33
private var contribution: Contribution ? = null
27
- private val compositeDisposable = CompositeDisposable ()
28
34
private var isWikipediaButtonDisplayed = false
29
35
private val pausingPopUp: AlertDialog
30
36
var imageRequest: ImageRequest ? = null
@@ -54,7 +60,7 @@ an upload might take a dozen seconds. */
54
60
this .contribution = contribution
55
61
this .position = position
56
62
binding.contributionTitle.text = contribution.media.mostRelevantCaption
57
- binding.authorView.text = contribution.media.getAuthorOrUser( )
63
+ setAuthorText( contribution.media)
58
64
59
65
// Removes flicker of loading image.
60
66
binding.contributionImage.hierarchy.fadeDuration = 0
@@ -93,6 +99,30 @@ an upload might take a dozen seconds. */
93
99
checkIfMediaExistsOnWikipediaPage(contribution)
94
100
}
95
101
102
+ fun updateAttribution () {
103
+ if (contribution != null ) {
104
+ val media = contribution!! .media
105
+ if (! media.getAttributedAuthor().isNullOrEmpty()) {
106
+ return
107
+ }
108
+ compositeDisposable.addAll(
109
+ mediaDataExtractor.fetchCreatorIdsAndLabels(media)
110
+ .subscribeOn(Schedulers .io())
111
+ .observeOn(AndroidSchedulers .mainThread())
112
+ .subscribe(
113
+ { idAndLabels ->
114
+ media.creatorName = MediaAttributionUtil .getCreatorName(idAndLabels)
115
+ setAuthorText(media)
116
+ },
117
+ { t: Throwable ? -> Timber .e(t) })
118
+ )
119
+ }
120
+ }
121
+
122
+ private fun setAuthorText (media : Media ) {
123
+ binding.authorView.text = MediaAttributionUtil .getTagLine(media, itemView.context)
124
+ }
125
+
96
126
/* *
97
127
* Checks if a media exists on the corresponding Wikipedia article Currently the check is made
98
128
* for the device's current language Wikipedia
0 commit comments