Skip to content

Commit efe995d

Browse files
Fix IMessageEditCallback#retainFiles
1 parent 2eb1341 commit efe995d

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

Diff for: src/main/java/net/dv8tion/jda/internal/requests/restaction/interactions/InteractionCallbackImpl.java

+31-18
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public abstract class InteractionCallbackImpl<T> extends RestActionImpl<T> imple
4141
{
4242
protected final List<AttachedFile> files = new ArrayList<>();
4343
protected final InteractionImpl interaction;
44+
protected boolean isFileUpdate = false;
4445

4546
public InteractionCallbackImpl(InteractionImpl interaction)
4647
{
@@ -54,30 +55,42 @@ public InteractionCallbackImpl(InteractionImpl interaction)
5455
protected RequestBody finalizeData()
5556
{
5657
DataObject json = toData();
57-
if (files.isEmpty())
58-
return getRequestBody(json);
5958

60-
MultipartBody.Builder body = AttachedFile.createMultipartBody(files, null);
59+
if (isFileUpdate || !files.isEmpty())
60+
{
61+
// Add the attachments array to the payload, as required since v10
62+
DataObject data;
63+
if (json.isNull("data"))
64+
json.put("data", data = DataObject.empty());
65+
else
66+
data = json.getObject("data");
6167

62-
// Add the attachments array to the payload, as required since v10
63-
DataObject data;
64-
if (json.isNull("data"))
65-
json.put("data", data = DataObject.empty());
66-
else
67-
data = json.getObject("data");
68+
DataArray attachments;
69+
if (data.isNull("attachments"))
70+
data.put("attachments", attachments = DataArray.empty());
71+
else
72+
attachments = data.getArray("attachments");
6873

69-
DataArray attachments;
70-
if (data.isNull("attachments"))
71-
data.put("attachments", attachments = DataArray.empty());
72-
else
73-
attachments = data.getArray("attachments");
74+
for (int i = 0; i < files.size(); i++)
75+
attachments.add(files.get(i).toAttachmentData(i));
76+
}
7477

75-
for (int i = 0; i < files.size(); i++)
76-
attachments.add(files.get(i).toAttachmentData(i));
78+
RequestBody body;
79+
// Upload files using multipart request if applicable
80+
if (files.stream().anyMatch(FileUpload.class::isInstance))
81+
{
82+
MultipartBody.Builder form = AttachedFile.createMultipartBody(files, null);
83+
form.addFormDataPart("payload_json", json.toString());
84+
body = form.build();
85+
}
86+
else
87+
{
88+
body = getRequestBody(json);
89+
}
7790

78-
body.addFormDataPart("payload_json", json.toString());
91+
isFileUpdate = false;
7992
files.clear();
80-
return body.build();
93+
return body;
8194
}
8295

8396
@Nonnull

Diff for: src/main/java/net/dv8tion/jda/internal/requests/restaction/interactions/MessageEditCallbackActionImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public MessageEditCallbackActionImpl closeResources()
7676

7777
private boolean isEmpty()
7878
{
79-
return content == null && embeds == null && components == null && files.isEmpty();
79+
return content == null && embeds == null && components == null && !isFileUpdate && files.isEmpty();
8080
}
8181

8282
@Override
@@ -152,6 +152,7 @@ public MessageEditCallbackAction addFile(@Nonnull InputStream data, @Nonnull Str
152152
name = "SPOILER_" + name;
153153

154154
files.add(FileUpload.fromData(data, name));
155+
isFileUpdate = true;
155156
return this;
156157
}
157158

@@ -167,6 +168,7 @@ public MessageEditCallbackAction retainFilesById(@Nonnull Collection<String> ids
167168
ids.stream()
168169
.map(AttachedFile::fromAttachment)
169170
.forEach(this.files::add);
171+
isFileUpdate = true;
170172
return this;
171173
}
172174

Diff for: src/main/java/net/dv8tion/jda/internal/requests/restaction/interactions/ReplyCallbackActionImpl.java

+1
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public ReplyCallbackAction addFile(@Nonnull InputStream data, @Nonnull String na
126126
name = "SPOILER_" + name;
127127

128128
files.add(FileUpload.fromData(data, name));
129+
isFileUpdate = true;
129130
return this;
130131
}
131132

0 commit comments

Comments
 (0)