@@ -348,6 +348,60 @@ trait DiscordProtocol {
348
348
)
349
349
}
350
350
351
+ implicit val textDisplayCodec : Codec [TextDisplay ] = {
352
+ val base : Codec [TextDisplay ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
353
+
354
+ Codec .from(
355
+ base,
356
+ (a : TextDisplay ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
357
+ )
358
+ }
359
+
360
+ implicit val thumbnailCodec : Codec [Thumbnail ] = {
361
+ val base : Codec [Thumbnail ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
362
+
363
+ Codec .from(
364
+ base,
365
+ (a : Thumbnail ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
366
+ )
367
+ }
368
+
369
+ implicit val mediaGalleryCodec : Codec [MediaGallery ] = {
370
+ val base : Codec [MediaGallery ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
371
+
372
+ Codec .from(
373
+ base,
374
+ (a : MediaGallery ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
375
+ )
376
+ }
377
+
378
+ implicit val fileCodec : Codec [File ] = {
379
+ val base : Codec [File ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
380
+
381
+ Codec .from(
382
+ base,
383
+ (a : File ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
384
+ )
385
+ }
386
+
387
+ implicit val separatorCodec : Codec [Separator ] = {
388
+ val base : Codec [Separator ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
389
+
390
+ Codec .from(
391
+ base,
392
+ (a : Separator ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
393
+ )
394
+ }
395
+
396
+ implicit val containerCodec : Codec [Container ] = {
397
+ val base : Codec [Container ] = derivation.deriveCodec(derivation.renaming.snakeCase, false , None )
398
+
399
+ Codec .from(
400
+ base,
401
+ (a : Container ) => base(a).deepMerge(Json .obj(" type" := a.tpe))
402
+ )
403
+ }
404
+
351
405
implicit val actionRowContentCodec : Codec [ActionRowContent ] = Codec .from(
352
406
(c : HCursor ) =>
353
407
c.get[ComponentType ](" type" ).flatMap {
0 commit comments