Commit 79c38746 authored by Thomas's avatar Thomas
Browse files

Fix issue #99 - Add retry when media failed to load and if 3 retries fail the...

Fix issue #99 - Add retry when media failed to load and if 3 retries fail the message is kept in drafts but not send
parent 8aad0fd2
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -66,9 +66,7 @@ import androidx.navigation.ui.NavigationUI;
import androidx.preference.PreferenceManager;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.snackbar.Snackbar;
+29 −15
Original line number Diff line number Diff line
@@ -170,21 +170,16 @@ public class PostMessageService extends IntentService {
                            } else {
                                fileMultipartBody = Helper.getMultipartBody("file", attachment);
                            }
                            Call<Attachment> attachmentCall = mastodonStatusesService.postMedia(dataPost.token, fileMultipartBody, null, attachment.description, null);

                            if (attachmentCall != null) {
                                try {
                                    Response<Attachment> attachmentResponse = attachmentCall.execute();
                                    if (attachmentResponse.isSuccessful()) {
                                        Attachment attachmentReply = attachmentResponse.body();
                                        if (attachmentReply != null) {
                                            attachmentIds.add(attachmentReply.id);
                            String replyId = null;
                            int retry = 0;
                            while (replyId == null && retry < 3) {
                                replyId = postAttachment(mastodonStatusesService, dataPost, fileMultipartBody, attachment);
                                retry++;
                            }
                                    }
                                } catch (IOException e) {
                            if (replyId == null) {
                                error = true;
                                    e.printStackTrace();
                                }
                            } else {
                                attachmentIds.add(replyId);
                            }
                        }

@@ -296,6 +291,25 @@ public class PostMessageService extends IntentService {
        }
    }

    private static String postAttachment(MastodonStatusesService mastodonStatusesService, DataPost dataPost, MultipartBody.Part fileMultipartBody, Attachment attachment) {
        Call<Attachment> attachmentCall = mastodonStatusesService.postMedia(dataPost.token, fileMultipartBody, null, attachment.description, null);

        if (attachmentCall != null) {
            try {
                Response<Attachment> attachmentResponse = attachmentCall.execute();
                if (attachmentResponse.isSuccessful()) {
                    Attachment attachmentReply = attachmentResponse.body();
                    if (attachmentReply != null) {
                        return attachmentReply.id;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();