Skip to content

Commit

Permalink
🎨 Add a contract for V2 components
Browse files Browse the repository at this point in the history
  • Loading branch information
Log1x committed Feb 22, 2025
1 parent 84cd998 commit 9336de5
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
*
* @since 10.4.0
*/
class Container extends Component
class Container extends Component implements Contracts\ComponentV2
{
/**
* Array of components.
Expand Down
22 changes: 22 additions & 0 deletions src/Discord/Builders/Components/Contracts/ComponentV2.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

/*
* This file is a part of the DiscordPHP project.
*
* Copyright (c) 2015-present David Cole <[email protected]>
*
* This file is subject to the MIT license that is bundled
* with this source code in the LICENSE.md file.
*/

namespace Discord\Builders\Components\Contracts;

/**
* This interface is a contract for V2 components.
*
* @since 10.4.0
*/
interface ComponentV2
{
//
}
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
*
* @since 10.4.0
*/
class File extends Component
class File extends Component implements Contracts\ComponentV2
{
/**
* The file to be displayed.
Expand Down
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/MediaGallery.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*
* @since 10.4.0
*/
class MediaGallery extends Component
class MediaGallery extends Component implements Contracts\ComponentV2
{
/**
* Array of media gallery items.
Expand Down
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/Section.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*
* @since 10.4.0
*/
class Section extends Component
class Section extends Component implements Contracts\ComponentV2
{
/**
* Array of text display components.
Expand Down
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/Separator.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
*
* @since 10.4.0
*/
class Separator extends Component
class Separator extends Component implements Contracts\ComponentV2
{
/**
* Spacing size constants.
Expand Down
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/TextDisplay.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*
* @since 10.4.0
*/
class TextDisplay extends Component
class TextDisplay extends Component implements Contracts\ComponentV2
{
/**
* Content of the text display.
Expand Down
2 changes: 1 addition & 1 deletion src/Discord/Builders/Components/Thumbnail.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*
* @since 10.4.0
*/
class Thumbnail extends Component
class Thumbnail extends Component implements Contracts\ComponentV2
{
/**
* Media item for the thumbnail.
Expand Down
13 changes: 2 additions & 11 deletions src/Discord/Builders/MessageBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use Discord\Builders\Components;
use Discord\Builders\Components\Component;
use Discord\Builders\Components\Contracts\ComponentV2;
use Discord\Exceptions\FileNotFoundException;
use Discord\Helpers\Multipart;
use Discord\Http\Exceptions\RequestFailedException;
Expand Down Expand Up @@ -379,17 +380,7 @@ public function setReplyTo(?Message $message = null): self
*/
public function addComponent(Component $component): self
{
$v2 = [
Components\Section::class,
Components\TextDisplay::class,
Components\Thumbnail::class,
Components\MediaGallery::class,
Components\File::class,
Components\Separator::class,
Components\Container::class,
];

if (in_array($component::class, $v2)) {
if ($component instanceof ComponentV2) {
if (! ($this->flags & Message::FLAG_V2_COMPONENTS)) {
$this->flags |= Message::FLAG_V2_COMPONENTS;
}
Expand Down

0 comments on commit 9336de5

Please sign in to comment.