Add callback_id to BlockActions, fix block::sections can also only have an accessory

This commit is contained in:
Deon George 2022-06-27 22:25:57 +10:00
parent 1e5281de29
commit bb5539f158
3 changed files with 17 additions and 3 deletions

View File

@ -9,6 +9,7 @@ final class Button extends Element
{
protected const LIMITS = [
'action_id' => 255,
'callback_id' => 255,
'text' => 75,
'url' => 3000,
'value' => 2000,
@ -40,6 +41,13 @@ final class Button extends Element
/* OPTIONAL ITEMS */
public function callback_id(string $string): self
{
$this->callback_id = $string;
return $this;
}
public function confirm(Confirm $confirm): self
{
$this->confirm = $confirm;

View File

@ -43,8 +43,8 @@ final class Section extends Blocks
public function jsonSerialize()
{
if (! $this->text && ! $this->fields)
throw new Exception('Must define text or fields');
if (! $this->text && ! $this->fields && ! $this->accessory)
throw new Exception('Must define text, accessory or fields');
return parent::jsonSerialize();
}

View File

@ -74,7 +74,13 @@ class BlockActions extends Base
return object_get($this->_data,$key);
case 'callback_id':
return object_get($this->_data,'view.callback_id');
switch (object_get($this->_data,'type')) {
case 'block_actions':
return object_get(Arr::get(object_get($this->_data,'actions'),$this->index),$key);
// @todo Dont assume this is a view
default:
return object_get($this->_data,'view.callback_id');
}
case 'channel_id':
return object_get($this->_data,'channel.id') ?: Channel::findOrFail($this->action('value'))->channel_id;