Skip to content

Commit

Permalink
Fix archived thread getters (#1269)
Browse files Browse the repository at this point in the history
Fix archived thread not working parameters and changed from a required channel id to an instant
  • Loading branch information
Frostbyte0x70 committed Sep 9, 2023
1 parent b1ce43c commit 4a3fb3d
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.javacord.api.entity.message.Message;
import org.javacord.api.entity.server.ArchivedThreads;
import org.javacord.api.listener.channel.server.text.ServerTextChannelAttachableListenerManager;

import java.time.Instant;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
Expand Down Expand Up @@ -191,10 +193,10 @@ default CompletableFuture<ArchivedThreads> getPublicArchivedThreads() {
* Threads are ordered by archive_timestamp, in descending order.
* Requires the READ_MESSAGE_HISTORY permission.
*
* @param before Get public archived threads before the thread with this id.
* @param before Get public archived threads archived before this timestamp.
* @return The ArchivedThreads.
*/
default CompletableFuture<ArchivedThreads> getPublicArchivedThreads(long before) {
default CompletableFuture<ArchivedThreads> getPublicArchivedThreads(Instant before) {
return getPublicArchivedThreads(before, null);
}

Expand Down Expand Up @@ -223,11 +225,11 @@ default CompletableFuture<ArchivedThreads> getPublicArchivedThreads(int limit) {
* Threads are ordered by archive_timestamp, in descending order.
* Requires the READ_MESSAGE_HISTORY permission.
*
* @param before Get public archived threads before the thread with this id.
* @param before Get public archived threads archived before this timestamp.
* @param limit The maximum amount of public archived threads.
* @return The ArchivedThreads.
*/
CompletableFuture<ArchivedThreads> getPublicArchivedThreads(Long before, Integer limit);
CompletableFuture<ArchivedThreads> getPublicArchivedThreads(Instant before, Integer limit);

/**
* Gets the private archived threads.
Expand All @@ -249,10 +251,10 @@ default CompletableFuture<ArchivedThreads> getPrivateArchivedThreads() {
* Threads are ordered by archive_timestamp, in descending order.
* Requires both the READ_MESSAGE_HISTORY and MANAGE_THREADS permissions.
*
* @param before Get private archived threads before the thread with this id.
* @param before Get private archived threads archived before this timestamp.
* @return The ArchivedThreads.
*/
default CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(long before) {
default CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(Instant before) {
return getPrivateArchivedThreads(before, null);
}

Expand All @@ -277,11 +279,11 @@ default CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(int limit)
* Threads are ordered by archive_timestamp, in descending order.
* Requires both the READ_MESSAGE_HISTORY and MANAGE_THREADS permissions.
*
* @param before Get private archived threads before the thread with this id.
* @param before Get private archived threads archived before this timestamp.
* @param limit The maximum amount of private archived threads.
* @return The ArchivedThreads.
*/
CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(Long before, Integer limit);
CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(Instant before, Integer limit);

/**
* Gets the joined private archived threads.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.javacord.core.entity.channel;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.javacord.api.entity.DiscordEntity;
import org.javacord.api.entity.channel.ServerTextChannel;
import org.javacord.api.entity.server.ArchivedThreads;
Expand All @@ -14,6 +12,10 @@
import org.javacord.core.util.rest.RestMethod;
import org.javacord.core.util.rest.RestRequest;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;

Expand Down Expand Up @@ -58,52 +60,50 @@ public void setTopic(String topic) {
}

@Override
public CompletableFuture<ArchivedThreads> getPublicArchivedThreads(Long before, Integer limit) {
final ObjectNode body = JsonNodeFactory.instance.objectNode();
public CompletableFuture<ArchivedThreads> getPublicArchivedThreads(Instant before, Integer limit) {
RestRequest<ArchivedThreads> request =
new RestRequest<ArchivedThreads>(getApi(), RestMethod.GET, RestEndpoint.LIST_PUBLIC_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString());
if (before != null) {
body.put("before", before);
request.addQueryParameter("before",
DateTimeFormatter.ISO_LOCAL_DATE_TIME.withZone(ZoneId.from(ZoneOffset.UTC)).format(before));
}
if (limit != null) {
body.put("limit", limit);
request.addQueryParameter("limit", limit.toString());
}
return new RestRequest<ArchivedThreads>(getApi(), RestMethod.GET, RestEndpoint.LIST_PUBLIC_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString())
.setBody(body)
.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
return request.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
}

@Override
public CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(Long before, Integer limit) {
final ObjectNode body = JsonNodeFactory.instance.objectNode();
public CompletableFuture<ArchivedThreads> getPrivateArchivedThreads(Instant before, Integer limit) {
RestRequest<ArchivedThreads> request =
new RestRequest<ArchivedThreads>(getApi(), RestMethod.GET, RestEndpoint.LIST_PRIVATE_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString());
if (before != null) {
body.put("before", before);
request.addQueryParameter("before",
DateTimeFormatter.ISO_LOCAL_DATE_TIME.withZone(ZoneId.from(ZoneOffset.UTC)).format(before));
}
if (limit != null) {
body.put("limit", limit);
request.addQueryParameter("limit", limit.toString());
}
return new RestRequest<ArchivedThreads>(getApi(), RestMethod.GET, RestEndpoint.LIST_PRIVATE_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString())
.setBody(body)
.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
return request.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
}

@Override
public CompletableFuture<ArchivedThreads> getJoinedPrivateArchivedThreads(Long before, Integer limit) {
final ObjectNode body = JsonNodeFactory.instance.objectNode();
RestRequest<ArchivedThreads> request = new RestRequest<ArchivedThreads>(
getApi(), RestMethod.GET, RestEndpoint.LIST_JOINED_PRIVATE_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString());
if (before != null) {
body.put("before", before);
request.addQueryParameter("before", before.toString());
}
if (limit != null) {
body.put("limit", limit);
request.addQueryParameter("limit", limit.toString());
}
return new RestRequest<ArchivedThreads>(getApi(), RestMethod.GET,
RestEndpoint.LIST_JOINED_PRIVATE_ARCHIVED_THREADS)
.setUrlParameters(getIdAsString())
.setBody(body)
.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
return request.execute(result -> new ArchivedThreadsImpl((DiscordApiImpl) getApi(), (ServerImpl) getServer(),
result.getJsonBody()));
}

/**
Expand Down

0 comments on commit 4a3fb3d

Please sign in to comment.