Skip to content

Commit

Permalink
feat: Support for Componentes v2 (#198)
Browse files Browse the repository at this point in the history
* Support Componentes v2

* UnfurledMediaItemData require url

* ComponentData#media

* Add fields for Media Gallery items in Components

* ComponentData#accessory its single object not a list

* ComponentData#description can be null

* MediaGalleryItemData#description can be null

* more fields for UnfurledMediaItemData

* fix property for UnfurledMediaItemData#placeholderVersion
  • Loading branch information
Doc94 authored Feb 20, 2025
1 parent 275d08d commit caa71c8
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/main/java/discord4j/discordjson/json/ComponentData.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import discord4j.discordjson.Id;
import discord4j.discordjson.possible.Possible;
import java.util.Optional;
import org.immutables.value.Value;

import java.util.List;
Expand All @@ -22,6 +23,8 @@ static ImmutableComponentData.Builder builder() {

Possible<List<ComponentData>> components();

Possible<ComponentData> accessory();

Possible<Integer> style();

Possible<String> label();
Expand Down Expand Up @@ -67,4 +70,23 @@ static ImmutableComponentData.Builder builder() {

@JsonProperty("sku_id")
Possible<Id> skuId();

Possible<Integer> spacing();

Possible<Boolean> divider();

Possible<Boolean> spoiler();

@JsonProperty("accent_color")
Possible<Integer> accentColor();

Possible<Optional<String>> description();

Possible<String> content();

Possible<UnfurledMediaItemData> file();

Possible<UnfurledMediaItemData> media();

Possible<List<MediaGalleryItemData>> items();
}
22 changes: 22 additions & 0 deletions src/main/java/discord4j/discordjson/json/MediaGalleryItemData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package discord4j.discordjson.json;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import discord4j.discordjson.possible.Possible;
import java.util.Optional;
import org.immutables.value.Value;

@Value.Immutable
@JsonSerialize(as = ImmutableMediaGalleryItemData.class)
@JsonDeserialize(as = ImmutableMediaGalleryItemData.class)
public interface MediaGalleryItemData {

static ImmutableMediaGalleryItemData.Builder builder() {
return ImmutableMediaGalleryItemData.builder();
}

UnfurledMediaItemData media();
Possible<Optional<String>> description();
Possible<Boolean> spoiler();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package discord4j.discordjson.json;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import discord4j.discordjson.possible.Possible;
import java.util.Optional;
import org.immutables.value.Value;

@Value.Immutable
@JsonSerialize(as = ImmutableUnfurledMediaItemData.class)
@JsonDeserialize(as = ImmutableUnfurledMediaItemData.class)
public interface UnfurledMediaItemData {

static ImmutableUnfurledMediaItemData.Builder builder() {
return ImmutableUnfurledMediaItemData.builder();
}

String url();

@JsonProperty("proxy_url")
Possible<String> proxyUrl();

Possible<Optional<Integer>> width();

Possible<Optional<Integer>> height();

Possible<Optional<String>> placeholder();

@JsonProperty("placeholder_version")
Possible<Optional<Integer>> placeholderVersion();

@JsonProperty("content_type")
Possible<Optional<String>> contentType();

@JsonProperty("loading_state")
Possible<Optional<Integer>> loadingState();

Possible<Integer> flags();

}

0 comments on commit caa71c8

Please sign in to comment.