mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Changed to data classes, and added immutability (#5905)
Co-authored-by: Jinniu Du <127721018+Donutcheese@users.noreply.github.com>
This commit is contained in:
parent
cf88f9b796
commit
088dd2479e
3 changed files with 104 additions and 153 deletions
|
|
@ -1,104 +1,45 @@
|
|||
package fr.free.nrw.commons.profile.achievements
|
||||
|
||||
/**
|
||||
* Represents Achievements class and stores all the parameters
|
||||
* Represents Achievements data class and stores all the parameters.
|
||||
* Immutable version with default values for optional properties.
|
||||
*/
|
||||
class Achievements {
|
||||
data class Achievements(
|
||||
val uniqueUsedImages: Int = 0,
|
||||
val articlesUsingImages: Int = 0,
|
||||
val thanksReceived: Int = 0,
|
||||
val featuredImages: Int = 0,
|
||||
val qualityImages: Int = 0,
|
||||
val imagesUploaded: Int = 0,
|
||||
val revertCount: Int = 0
|
||||
) {
|
||||
/**
|
||||
* The count of unique images used by the wiki.
|
||||
* @return The count of unique images used.
|
||||
* @param uniqueUsedImages The count to set for unique images used.
|
||||
*/
|
||||
var uniqueUsedImages = 0
|
||||
private var articlesUsingImages = 0
|
||||
|
||||
/**
|
||||
* The count of thanks received.
|
||||
* @return The count of thanks received.
|
||||
* @param thanksReceived The count to set for thanks received.
|
||||
*/
|
||||
var thanksReceived = 0
|
||||
|
||||
/**
|
||||
* The count of featured images.
|
||||
* @return The count of featured images.
|
||||
* @param featuredImages The count to set for featured images.
|
||||
*/
|
||||
var featuredImages = 0
|
||||
|
||||
/**
|
||||
* The count of quality images.
|
||||
* @return The count of quality images.
|
||||
* @param qualityImages The count to set for quality images.
|
||||
*/
|
||||
var qualityImages = 0
|
||||
|
||||
/**
|
||||
* The count of images uploaded.
|
||||
* @return The count of images uploaded.
|
||||
* @param imagesUploaded The count to set for images uploaded.
|
||||
*/
|
||||
var imagesUploaded = 0
|
||||
private var revertCount = 0
|
||||
|
||||
constructor() {}
|
||||
|
||||
/**
|
||||
* constructor for achievements class to set its data members
|
||||
* @param uniqueUsedImages
|
||||
* @param articlesUsingImages
|
||||
* @param thanksReceived
|
||||
* @param featuredImages
|
||||
* @param imagesUploaded
|
||||
* @param revertCount
|
||||
*/
|
||||
constructor(
|
||||
uniqueUsedImages: Int,
|
||||
articlesUsingImages: Int,
|
||||
thanksReceived: Int,
|
||||
featuredImages: Int,
|
||||
qualityImages: Int,
|
||||
imagesUploaded: Int,
|
||||
revertCount: Int,
|
||||
) {
|
||||
this.uniqueUsedImages = uniqueUsedImages
|
||||
this.articlesUsingImages = articlesUsingImages
|
||||
this.thanksReceived = thanksReceived
|
||||
this.featuredImages = featuredImages
|
||||
this.qualityImages = qualityImages
|
||||
this.imagesUploaded = imagesUploaded
|
||||
this.revertCount = revertCount
|
||||
}
|
||||
|
||||
/**
|
||||
* used to calculate the percentages of images that haven't been reverted
|
||||
* @return
|
||||
* Used to calculate the percentages of images that haven't been reverted.
|
||||
* Returns 100 if imagesUploaded is 0 to avoid division by zero.
|
||||
*/
|
||||
val notRevertPercentage: Int
|
||||
get() =
|
||||
try {
|
||||
get() = if (imagesUploaded > 0) {
|
||||
(imagesUploaded - revertCount) * 100 / imagesUploaded
|
||||
} catch (divideByZero: ArithmeticException) {
|
||||
} else {
|
||||
100
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Get Achievements object from FeedbackResponse
|
||||
* Get Achievements object from FeedbackResponse.
|
||||
*
|
||||
* @param response
|
||||
* @return
|
||||
* @param response The feedback response to convert.
|
||||
* @return An Achievements object with values from the response.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun from(response: FeedbackResponse): Achievements =
|
||||
Achievements(
|
||||
response.uniqueUsedImages,
|
||||
response.articlesUsingImages,
|
||||
response.thanksReceived,
|
||||
response.featuredImages.featuredPicturesOnWikimediaCommons,
|
||||
response.featuredImages.qualityImages,
|
||||
0,
|
||||
response.deletedUploads,
|
||||
fun from(response: FeedbackResponse): Achievements = Achievements(
|
||||
uniqueUsedImages = response.uniqueUsedImages,
|
||||
articlesUsingImages = response.articlesUsingImages,
|
||||
thanksReceived = response.thanksReceived,
|
||||
featuredImages = response.featuredImages.featuredPicturesOnWikimediaCommons,
|
||||
qualityImages = response.featuredImages.qualityImages,
|
||||
imagesUploaded = 0, // Assuming imagesUploaded should be 0
|
||||
revertCount = response.deletedUploads
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -295,8 +295,18 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment {
|
|||
* @param uploadCount
|
||||
*/
|
||||
private void setAchievementsUploadCount(Achievements achievements, int uploadCount) {
|
||||
achievements.setImagesUploaded(uploadCount);
|
||||
hideProgressBar(achievements);
|
||||
// Create a new instance of Achievements with updated imagesUploaded
|
||||
Achievements updatedAchievements = new Achievements(
|
||||
achievements.getUniqueUsedImages(),
|
||||
achievements.getArticlesUsingImages(),
|
||||
achievements.getThanksReceived(),
|
||||
achievements.getFeaturedImages(),
|
||||
achievements.getQualityImages(),
|
||||
uploadCount, // Update imagesUploaded with new value
|
||||
achievements.getRevertCount()
|
||||
);
|
||||
|
||||
hideProgressBar(updatedAchievements);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import com.google.gson.annotations.SerializedName
|
|||
* Represents Featured Images on WikiMedia Commons platform
|
||||
* Used by Achievements and FeedbackResponse (objects) of the user
|
||||
*/
|
||||
class FeaturedImages(
|
||||
data class FeaturedImages(
|
||||
@field:SerializedName("Quality_images") val qualityImages: Int,
|
||||
@field:SerializedName("Featured_pictures_on_Wikimedia_Commons") val featuredPicturesOnWikimediaCommons: Int,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue