diff --git a/src/main/java/it/auties/whatsapp/api/Whatsapp.java b/src/main/java/it/auties/whatsapp/api/Whatsapp.java index b8c05869..bc3c9de1 100644 --- a/src/main/java/it/auties/whatsapp/api/Whatsapp.java +++ b/src/main/java/it/auties/whatsapp/api/Whatsapp.java @@ -503,8 +503,7 @@ public CompletableFuture sendNewsletterMessage(JidProvide * @return a CompletableFuture */ public CompletableFuture sendMessage(JidProvider chat, ContextualMessage message, MessageInfo quotedMessage) { - var contextInfo = ContextInfo.of(quotedMessage); - message.setContextInfo(contextInfo); + message.contextInfo().ifPresentOrElse(contextInfo -> message.setContextInfo(ContextInfo.of(contextInfo, quotedMessage)), () -> message.setContextInfo(ContextInfo.of(quotedMessage))); return sendMessage(chat, MessageContainer.of(message)); } @@ -517,8 +516,7 @@ public CompletableFuture sendMessage(JidProvider chat, Co * @return a CompletableFuture */ public CompletableFuture sendChatMessage(JidProvider chat, ContextualMessage message, MessageInfo quotedMessage) { - var contextInfo = ContextInfo.of(quotedMessage); - message.setContextInfo(contextInfo); + message.contextInfo().ifPresentOrElse(contextInfo -> message.setContextInfo(ContextInfo.of(contextInfo, quotedMessage)), () -> message.setContextInfo(ContextInfo.of(quotedMessage))); return sendChatMessage(chat, MessageContainer.of(message)); } @@ -532,8 +530,7 @@ public CompletableFuture sendChatMessage(JidProvider chat, Cont * @return a CompletableFuture */ public CompletableFuture sendNewsletterMessage(JidProvider chat, ContextualMessage message, MessageInfo quotedMessage) { - var contextInfo = ContextInfo.of(quotedMessage); - message.setContextInfo(contextInfo); + message.contextInfo().ifPresentOrElse(contextInfo -> message.setContextInfo(ContextInfo.of(contextInfo, quotedMessage)), () -> message.setContextInfo(ContextInfo.of(quotedMessage))); return sendNewsletterMessage(chat, MessageContainer.of(message)); } diff --git a/src/main/java/it/auties/whatsapp/model/info/ContextInfo.java b/src/main/java/it/auties/whatsapp/model/info/ContextInfo.java index 09f19437..fd55367c 100644 --- a/src/main/java/it/auties/whatsapp/model/info/ContextInfo.java +++ b/src/main/java/it/auties/whatsapp/model/info/ContextInfo.java @@ -226,6 +226,24 @@ public static ContextInfo of(MessageInfo quotedMessage) { .build(); } + public static ContextInfo of(ContextInfo contextInfo, MessageInfo quotedMessage) { + var newContext = of(quotedMessage); + var fields = contextInfo.getClass().getFields(); + try { + for (var field : fields) { + field.setAccessible(true); + var value = field.get(contextInfo); + if (value != null) { + field.set(newContext, value); + } + } + return newContext; + } catch (IllegalAccessException e) { + System.err.println("Failed to merge context info"); + return ContextInfo.of(quotedMessage); + } + } + public static ContextInfo empty() { return new ContextInfoBuilder() .mentions(new ArrayList<>()) @@ -401,4 +419,4 @@ public Optional trustBannerType() { public int trustBannerAction() { return trustBannerAction; } -} \ No newline at end of file +}