mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 06:43:56 +01:00 
			
		
		
		
	Show the upload count for contributions by the user
This commit is contained in:
		
							parent
							
								
									a6ea218149
								
							
						
					
					
						commit
						82c0d24f37
					
				
					 8 changed files with 306 additions and 13 deletions
				
			
		|  | @ -11,6 +11,7 @@ import android.database.DataSetObserver; | |||
| import android.os.Bundle; | ||||
| import android.os.IBinder; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.v4.app.FragmentManager; | ||||
| import android.support.v4.app.LoaderManager; | ||||
| import android.support.v4.content.CursorLoader; | ||||
|  | @ -22,8 +23,11 @@ import android.view.View; | |||
| import android.widget.Adapter; | ||||
| import android.widget.AdapterView; | ||||
| 
 | ||||
| import com.google.common.util.concurrent.FutureCallback; | ||||
| import com.google.common.util.concurrent.Futures; | ||||
| import com.google.common.util.concurrent.ListenableFuture; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Locale; | ||||
| 
 | ||||
| import butterknife.ButterKnife; | ||||
| import fr.free.nrw.commons.CommonsApplication; | ||||
|  | @ -35,6 +39,7 @@ import fr.free.nrw.commons.hamburger.HamburgerMenuContainer; | |||
| import fr.free.nrw.commons.media.MediaDetailPagerFragment; | ||||
| import fr.free.nrw.commons.settings.Prefs; | ||||
| import fr.free.nrw.commons.upload.UploadService; | ||||
| import fr.free.nrw.commons.utils.ExecutorUtils; | ||||
| import timber.log.Timber; | ||||
| 
 | ||||
| public  class       ContributionsActivity | ||||
|  | @ -234,18 +239,7 @@ public  class       ContributionsActivity | |||
|             ((CursorAdapter)contributionsList.getAdapter()).swapCursor(cursor); | ||||
|         } | ||||
| 
 | ||||
|         if (cursor.getCount() == 0 | ||||
|                 && Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language())) { | ||||
|             //cursor count is zero and language is english - | ||||
|             // we need to set the message for 0 case explicitly. | ||||
|             getSupportActionBar().setSubtitle(getResources() | ||||
|                     .getString(R.string.contributions_subtitle_zero)); | ||||
|         } else { | ||||
|             getSupportActionBar().setSubtitle(getResources() | ||||
|                     .getQuantityString(R.plurals.contributions_subtitle, | ||||
|                             cursor.getCount(), | ||||
|                             cursor.getCount())); | ||||
|         } | ||||
|         setUploadCount(); | ||||
| 
 | ||||
|         contributionsList.clearSyncMessage(); | ||||
|         notifyAndMigrateDataSetObservers(); | ||||
|  | @ -275,6 +269,27 @@ public  class       ContributionsActivity | |||
|         return contributionsList.getAdapter().getCount(); | ||||
|     } | ||||
| 
 | ||||
|     private void setUploadCount() { | ||||
|         UploadCountClient uploadCountClient = new UploadCountClient(); | ||||
|         CommonsApplication application = CommonsApplication.getInstance(); | ||||
|         ListenableFuture<Integer> future = uploadCountClient | ||||
|                 .getUploadCount(application.getCurrentAccount().name); | ||||
|         Futures.addCallback(future, new FutureCallback<Integer>() { | ||||
|             @Override | ||||
|             public void onSuccess(Integer uploadCount) { | ||||
|                 getSupportActionBar().setSubtitle(getResources() | ||||
|                         .getQuantityString(R.plurals.contributions_subtitle, | ||||
|                                 uploadCount, | ||||
|                                 uploadCount)); | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public void onFailure(@NonNull Throwable t) { | ||||
|                 Timber.e(t, "Fetching upload count failed"); | ||||
|             } | ||||
|         }, ExecutorUtils.uiExecutor()); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void notifyDatasetChanged() { | ||||
|         // Do nothing for now | ||||
|  |  | |||
|  | @ -0,0 +1,56 @@ | |||
| package fr.free.nrw.commons.contributions; | ||||
| 
 | ||||
| import com.google.common.util.concurrent.ListenableFuture; | ||||
| import com.google.common.util.concurrent.SettableFuture; | ||||
| 
 | ||||
| import java.io.BufferedReader; | ||||
| import java.io.InputStreamReader; | ||||
| import java.net.HttpURLConnection; | ||||
| import java.net.URL; | ||||
| import java.util.Locale; | ||||
| 
 | ||||
| import fr.free.nrw.commons.CommonsApplication; | ||||
| import fr.free.nrw.commons.concurrency.BackgroundPoolExceptionHandler; | ||||
| import fr.free.nrw.commons.concurrency.ThreadPoolExecutorService; | ||||
| import timber.log.Timber; | ||||
| 
 | ||||
| public class UploadCountClient { | ||||
|     private ThreadPoolExecutorService threadPoolExecutor; | ||||
| 
 | ||||
|     public UploadCountClient() { | ||||
|         threadPoolExecutor = new ThreadPoolExecutorService.Builder("bg-pool") | ||||
|                 .setPoolSize(Runtime.getRuntime().availableProcessors()) | ||||
|                 .setExceptionHandler(new BackgroundPoolExceptionHandler()) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
|     private static final String UPLOAD_COUNT_URL_TEMPLATE = | ||||
|             "https://tools.wmflabs.org/urbanecmbot/uploadsbyuser/uploadsbyuser.py?user=%s"; | ||||
| 
 | ||||
|     public ListenableFuture<Integer> getUploadCount(final String userName) { | ||||
|         final SettableFuture<Integer> future = SettableFuture.create(); | ||||
|         threadPoolExecutor.schedule(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 URL url; | ||||
|                 try { | ||||
|                     url = new URL(String.format(Locale.ENGLISH, UPLOAD_COUNT_URL_TEMPLATE, userName)); | ||||
|                     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); | ||||
|                     try { | ||||
|                         BufferedReader bufferedReader = new BufferedReader(new | ||||
|                                 InputStreamReader(urlConnection.getInputStream())); | ||||
|                         String uploadCount = bufferedReader.readLine(); | ||||
|                         bufferedReader.close(); | ||||
|                         future.set(Integer.parseInt(uploadCount)); | ||||
|                     } finally { | ||||
|                         urlConnection.disconnect(); | ||||
|                     } | ||||
|                 } catch (Exception e) { | ||||
|                     Timber.e("Error getting upload count Error", e); | ||||
|                     future.setException(e); | ||||
|                 } | ||||
|             } | ||||
|         }); | ||||
|         return future; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 maskara
						maskara