Merge pull request #678 from LucasGGamerM/mastodon-android

fix: fix alt texts not being able to be edited
This commit is contained in:
Gregory K 2023-08-31 20:31:39 +03:00 committed by GitHub
commit 16ef577a7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 1 deletions

View File

@ -17,6 +17,7 @@ public class CreateStatus extends MastodonAPIRequest<Status>{
public static class Request{ public static class Request{
public String status; public String status;
public List<MediaAttribute> mediaAttributes;
public List<String> mediaIds; public List<String> mediaIds;
public Poll poll; public Poll poll;
public String inReplyToId; public String inReplyToId;
@ -32,5 +33,17 @@ public class CreateStatus extends MastodonAPIRequest<Status>{
public boolean multiple; public boolean multiple;
public boolean hideTotals; public boolean hideTotals;
} }
public static class MediaAttribute{
public String id;
public String description;
public String focus;
public MediaAttribute(String id, String description, String focus){
this.id=id;
this.description=description;
this.focus=focus;
}
}
} }
} }

View File

@ -691,6 +691,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
req.visibility=statusVisibility; req.visibility=statusVisibility;
if(!mediaViewController.isEmpty()){ if(!mediaViewController.isEmpty()){
req.mediaIds=mediaViewController.getAttachmentIDs(); req.mediaIds=mediaViewController.getAttachmentIDs();
if(editingStatus != null){
req.mediaAttributes=mediaViewController.getAttachmentAttributes();
}
} }
if(replyTo!=null){ if(replyTo!=null){
req.inReplyToId=replyTo.id; req.inReplyToId=replyTo.id;

View File

@ -27,10 +27,14 @@ import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.joinmastodon.android.MastodonApp; import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.R; import org.joinmastodon.android.R;
import org.joinmastodon.android.api.MastodonAPIController; import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.api.ProgressListener; import org.joinmastodon.android.api.ProgressListener;
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
import org.joinmastodon.android.api.requests.statuses.GetAttachmentByID; import org.joinmastodon.android.api.requests.statuses.GetAttachmentByID;
import org.joinmastodon.android.api.requests.statuses.UpdateAttachment; import org.joinmastodon.android.api.requests.statuses.UpdateAttachment;
import org.joinmastodon.android.api.requests.statuses.UploadAttachment; import org.joinmastodon.android.api.requests.statuses.UploadAttachment;
@ -47,8 +51,11 @@ import org.parceler.Parcel;
import org.parceler.Parcels; import org.parceler.Parcels;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.ListIterator;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -540,6 +547,14 @@ public class ComposeMediaViewController{
public List<String> getAttachmentIDs(){ public List<String> getAttachmentIDs(){
return attachments.stream().map(a->a.serverAttachment.id).collect(Collectors.toList()); return attachments.stream().map(a->a.serverAttachment.id).collect(Collectors.toList());
} }
public List<CreateStatus.Request.MediaAttribute> getAttachmentAttributes(){
List<CreateStatus.Request.MediaAttribute> mediaAttributes = new ArrayList<>();
for (DraftMediaAttachment att:attachments){
mediaAttributes.add(new CreateStatus.Request.MediaAttribute(att.serverAttachment.id, att.description, null));
}
return mediaAttributes;
}
public boolean isEmpty(){ public boolean isEmpty(){
return attachments.isEmpty(); return attachments.isEmpty();
@ -582,7 +597,7 @@ public class ComposeMediaViewController{
public void saveAltTextsBeforePublishing(Runnable onSuccess, Consumer<ErrorResponse> onError){ public void saveAltTextsBeforePublishing(Runnable onSuccess, Consumer<ErrorResponse> onError){
ArrayList<UpdateAttachment> updateAltTextRequests=new ArrayList<>(); ArrayList<UpdateAttachment> updateAltTextRequests=new ArrayList<>();
for(DraftMediaAttachment att:attachments){ for(DraftMediaAttachment att:attachments){
if(!att.descriptionSaved){ if(!att.descriptionSaved && att.serverAttachment.description == null){
UpdateAttachment req=new UpdateAttachment(att.serverAttachment.id, att.description); UpdateAttachment req=new UpdateAttachment(att.serverAttachment.id, att.description);
req.setCallback(new Callback<>(){ req.setCallback(new Callback<>(){
@Override @Override