Make sure your retry logic works

This commit is contained in:
neslihanturan 2018-12-13 17:27:58 +03:00
parent c7f6849cef
commit bfd30e9435
4 changed files with 56 additions and 13 deletions

View file

@ -17,6 +17,7 @@ class ContributionViewHolder {
final ProgressBar progressView;
final ImageButton retryButton;
final ImageButton cancelButton;
int position;
ContributionViewHolder(View parent) {
imageView = parent.findViewById(R.id.contributionImage);
@ -26,5 +27,6 @@ class ContributionViewHolder {
progressView = parent.findViewById(R.id.contributionProgress);
retryButton = parent.findViewById(R.id.retryButton);
cancelButton = parent.findViewById(R.id.cancelButton);
position = 0;
}
}

View file

@ -291,6 +291,8 @@ public class ContributionsFragment
contributionsListFragment.clearSyncMessage();
notifyAndMigrateDataSetObservers();
((ContributionsListAdapter)contributionsListFragment.getAdapter()).setUploadService(allContributions, uploadService);
}
}

View file

@ -9,16 +9,27 @@ import android.view.View;
import android.view.ViewGroup;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.upload.UploadService;
import timber.log.Timber;
import static fr.free.nrw.commons.contributions.Contribution.STATE_FAILED;
class ContributionsListAdapter extends CursorAdapter {
private final ContributionDao contributionDao;
private Cursor allContributions;
private UploadService uploadService;
public ContributionsListAdapter(Context context, Cursor c, int flags, ContributionDao contributionDao) {
super(context, c, flags);
this.contributionDao = contributionDao;
}
public void setUploadService(Cursor allContributions, UploadService uploadService) {
this.allContributions = allContributions;
this.uploadService = uploadService;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
View parent = LayoutInflater.from(context)
@ -37,20 +48,8 @@ class ContributionsListAdapter extends CursorAdapter {
views.seqNumView.setText(String.valueOf(cursor.getPosition() + 1));
views.seqNumView.setVisibility(View.VISIBLE);
views.position = cursor.getPosition();
views.retryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("deneme","Retry button is clicked");
}
});
views.cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("deneme","Cancel button is clicked");
}
});
switch (contribution.getState()) {
case Contribution.STATE_COMPLETED:
@ -86,7 +85,45 @@ class ContributionsListAdapter extends CursorAdapter {
views.progressView.setVisibility(View.GONE);
views.retryButton.setVisibility(View.VISIBLE);
views.cancelButton.setVisibility(View.VISIBLE);
views.retryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("deneme","contex:"+context);
Log.d("deneme","Retry button is clicked");
retryUpload(cursor);
}
});
views.cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("deneme","Cancel button is clicked");
}
});
break;
}
}
/**
* Retry upload when it is failed
* @param cursor position of upload which will be retried
*/
public void retryUpload(Cursor cursor) {
// TODO: first check for internet connection, if not display a message and do nothing.
Log.d("deneme","Retrying i:"+cursor.getColumnName(1));
Contribution c = contributionDao.fromCursor(cursor);
if (c.getState() == STATE_FAILED) {
uploadService.queue(UploadService.ACTION_UPLOAD_FILE, c);
Timber.d("Restarting for %s", c.toString());
Log.d("deneme","Restarting for %s"+ c.getFilename());
} else {
Timber.d("Skipping re-upload for non-failed %s", c.toString());
Log.d("deneme","Skipping re-upload for non-failed %s"+ c.getFilename());
}
}
}

View file

@ -10,6 +10,7 @@ import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.webkit.MimeTypeMap;
import android.widget.Toast;
@ -330,6 +331,7 @@ public class UploadService extends HandlerService<Contribution> {
contribution.setState(Contribution.STATE_FAILED);
contributionDao.save(contribution);
Log.d("deneme","failed and contrib saved, contribution name is"+contribution.getFilename());
}
private String findUniqueFilename(String fileName) throws IOException {