X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/a593051512b716ed3cc42a1a7b69d49a459352ed..eac2a47163a07c2553fee8a0cfcdf3f1e6adafd2:/src/main/java/org/asamk/signal/json/JsonStoryMessage.java diff --git a/src/main/java/org/asamk/signal/json/JsonStoryMessage.java b/src/main/java/org/asamk/signal/json/JsonStoryMessage.java index 9fa3ea21..c1ca6144 100644 --- a/src/main/java/org/asamk/signal/json/JsonStoryMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonStoryMessage.java @@ -3,8 +3,10 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; import org.asamk.signal.manager.api.Color; +import org.asamk.signal.manager.api.GroupId; import org.asamk.signal.manager.api.MessageEnvelope; -import org.asamk.signal.manager.groups.GroupId; + +import java.util.List; record JsonStoryMessage( boolean allowsReplies, @@ -40,11 +42,20 @@ record JsonStoryMessage( textAttachment.backgroundColor().map(Color::toHexColor).orElse(null)); } - public record Gradient(String startColor, String endColor, Integer angle) { + public record Gradient( + String startColor, String endColor, List colors, List positions, Integer angle + ) { static Gradient from(MessageEnvelope.Story.TextAttachment.Gradient gradient) { - return new Gradient(gradient.startColor().map(Color::toHexColor).orElse(null), - gradient.endColor().map(Color::toHexColor).orElse(null), + final var isLegacyGradient = gradient.colors().size() == 2 + && gradient.positions().size() == 2 + && gradient.positions().get(0) == 0f + && gradient.positions().get(1) == 1f; + + return new Gradient(isLegacyGradient ? gradient.colors().get(0).toHexColor() : null, + isLegacyGradient ? gradient.colors().get(1).toHexColor() : null, + gradient.colors().stream().map(Color::toHexColor).toList(), + gradient.positions(), gradient.angle().orElse(null)); } }