mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 14:53:59 +01:00 
			
		
		
		
	change the ReviewHelper for api called
This commit is contained in:
		
							parent
							
								
									66f917b189
								
							
						
					
					
						commit
						55e59b8ec7
					
				
					 1 changed files with 60 additions and 20 deletions
				
			
		|  | @ -23,13 +23,17 @@ class ReviewHelper | |||
|         @JvmField @Inject | ||||
|         var dao: ReviewDao? = null | ||||
| 
 | ||||
|         /** | ||||
|          * Fetches recent changes from MediaWiki API | ||||
|          * Calls the API to get the latest 50 changes | ||||
|          * When more results are available, the query gets continued beyond this range | ||||
|          * | ||||
|          * @return | ||||
|          */ | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * Gets multiple random media items for review. | ||||
|      * - Fetches recent changes and filters them | ||||
|      * - Checks if files are nominated for deletion | ||||
|      * - Filters out already reviewed images | ||||
|      * | ||||
|      * @param count Number of media items to fetch | ||||
|      * @return Observable of Media items | ||||
|      */ | ||||
|         private fun getRecentChanges() = | ||||
|             reviewInterface | ||||
|                 .getRecentChanges() | ||||
|  | @ -38,19 +42,40 @@ class ReviewHelper | |||
|                 .flatMapIterable { changes: List<MwQueryPage>? -> changes } | ||||
|                 .filter { isChangeReviewable(it) } | ||||
| 
 | ||||
|         /** | ||||
|          * Gets a random file change for review.  Checks if the image has already been shown to the user | ||||
|          * - Picks a random file from those changes | ||||
|          * - Checks if the file is nominated for deletion | ||||
|          * - Retries upto 5 times for getting a file which is not nominated for deletion | ||||
|          * | ||||
|          * @return Random file change | ||||
|          */ | ||||
|         fun getRandomMedia(): Single<Media> = | ||||
|             getRecentChanges() | ||||
|                 .flatMapSingle(::getRandomMediaFromRecentChange) | ||||
|                 .filter { !it.filename.isNullOrBlank() && !getReviewStatus(it.pageId) } | ||||
|                 .firstOrError() | ||||
|     /** | ||||
|      * Gets multiple random media items for review. | ||||
|      * - Fetches recent changes and filters them | ||||
|      * - Checks if files are nominated for deletion | ||||
|      * - Filters out already reviewed images | ||||
|      * | ||||
|      * @param count Number of media items to fetch | ||||
|      * @return Observable of Media items | ||||
|      */ | ||||
|     fun getRandomMediaBatch(count: Int): Observable<Media> = | ||||
|         getRecentChanges() | ||||
|             .flatMapSingle(::getRandomMediaFromRecentChange) | ||||
|             .filter { media -> | ||||
|                 !media.filename.isNullOrBlank() && | ||||
|                         !getReviewStatus(media.pageId) | ||||
|             } | ||||
|             .take(count.toLong()) | ||||
|             .onErrorResumeNext { error: Throwable -> | ||||
|                 Timber.e(error, "Error getting random media batch") | ||||
|                 Observable.empty() | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * Gets a random file change for review. | ||||
|      * | ||||
|      * @return Random file change | ||||
|      */ | ||||
|     fun getRandomMedia(): Single<Media> = | ||||
|         getRandomMediaBatch(1) | ||||
|             .firstOrError() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /** | ||||
|          * Returns a proper Media object if the file is not already nominated for deletion | ||||
|  | @ -108,6 +133,20 @@ class ReviewHelper | |||
|                 .getGlobalUsageInfo(filename) | ||||
|                 .map { it.query()?.firstPage()?.checkWhetherFileIsUsedInWikis() } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     fun checkFileUsageBatch(filenames: List<String>): Observable<Pair<String, Boolean>> = | ||||
|         Observable.fromIterable(filenames) | ||||
|             .flatMap { filename -> | ||||
|                 checkFileUsage(filename) | ||||
|                     .map { isUsed -> Pair(filename, isUsed) } | ||||
|             } | ||||
|             .onErrorResumeNext { error: Throwable -> | ||||
|                 Timber.e(error, "Error checking file usage batch") | ||||
|                 Observable.empty() | ||||
|             } | ||||
| 
 | ||||
|         /** | ||||
|          * Checks if the change is reviewable or not. | ||||
|          * - checks the type and revisionId of the change | ||||
|  | @ -145,5 +184,6 @@ class ReviewHelper | |||
| 
 | ||||
|         companion object { | ||||
|             private val imageExtensions = arrayOf(".jpg", ".jpeg", ".png") | ||||
|             private const val MAX_RETRIES = 3 | ||||
|         } | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 24-S2-2-C-Interactive
						24-S2-2-C-Interactive