Fixes for interactive messages, we use block_id to determine what needs to be done
This commit is contained in:
parent
1b55d7ab52
commit
145e322317
@ -65,15 +65,18 @@ abstract class Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Separate out an callback command to the id that the command relates to
|
* Separate out a callback command to the id that the command relates to
|
||||||
*
|
*
|
||||||
* @param string $key
|
* @param string $key
|
||||||
* @param string $item
|
* @param string|null $item
|
||||||
* @return string|null
|
* @return string|null
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
final protected function keyitem(string $key,string $item): ?string
|
final protected function keyitem(string $key,string $item=NULL): ?string
|
||||||
{
|
{
|
||||||
|
if (! $item)
|
||||||
|
return $item;
|
||||||
|
|
||||||
$regex = '/^([a-z_]+)\|([0-9]+)$/';
|
$regex = '/^([a-z_]+)\|([0-9]+)$/';
|
||||||
$id = NULL;
|
$id = NULL;
|
||||||
$value = NULL;
|
$value = NULL;
|
||||||
|
@ -11,9 +11,9 @@ use Slack\Exceptions\SlackSyntaxException;
|
|||||||
* Class BlockKit - Slack Blockit Objects
|
* Class BlockKit - Slack Blockit Objects
|
||||||
*
|
*
|
||||||
* @notes
|
* @notes
|
||||||
* + callback_id is used to identify the source of any action (modal). (Message blocks do not have a callback_id, accept in attachments).
|
* + callback_id is used to identify the source of any action (modal). (Message blocks do not have a callback_id, accept in legacy attachments).
|
||||||
* eg: hometab, add_product, ask_modal
|
* eg: hometab, add_product, ask_modal
|
||||||
* + block_id is used to identify the sub action(s) of any action (modal)
|
* + block_id is used to identify the sub action(s) of any action (modal). (Messages with blocks can have a block_id, we need to use this to determine what to do.)
|
||||||
* eg: multiple blocks (list of something)
|
* eg: multiple blocks (list of something)
|
||||||
* + action_id is used to identify the action that was initiated
|
* + action_id is used to identify the action that was initiated
|
||||||
* eg: view, edit, review
|
* eg: view, edit, review
|
||||||
|
@ -3,18 +3,51 @@
|
|||||||
namespace Slack\Blockkit\Blocks\Elements;
|
namespace Slack\Blockkit\Blocks\Elements;
|
||||||
|
|
||||||
use Slack\Blockkit\Element;
|
use Slack\Blockkit\Element;
|
||||||
|
use Slack\Exceptions\SlackSyntaxException;
|
||||||
|
|
||||||
final class Confirm extends Element
|
final class Confirm extends Element
|
||||||
{
|
{
|
||||||
public function __construct()
|
protected const LIMITS = [
|
||||||
|
'title' => 100,
|
||||||
|
'text' => 300,
|
||||||
|
'confirm' => 30,
|
||||||
|
'deny' => 30,
|
||||||
|
];
|
||||||
|
|
||||||
|
public function __construct(Text $title,Text $text,Text $confirm,Text $deny)
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
abort(500,'Not Implememted');
|
if ($title->type != 'plain_text')
|
||||||
|
throw new SlackSyntaxException(sprintf('Title must be plain_text not %s',$title->type));
|
||||||
|
|
||||||
|
if ($confirm->type != 'plain_text')
|
||||||
|
throw new SlackSyntaxException(sprintf('Title must be plain_text not %s',$confirm->type));
|
||||||
|
|
||||||
|
if ($deny->type != 'plain_text')
|
||||||
|
throw new SlackSyntaxException(sprintf('Title must be plain_text not %s',$deny->type));
|
||||||
|
|
||||||
|
$this->title = $this->validate('title',$title->text) ? $title : NULL;
|
||||||
|
|
||||||
|
$this->text = $this->validate('text',$text->text) ? $text : NULL;
|
||||||
|
|
||||||
|
$this->confirm = $this->validate('confirm',$confirm->text) ? $confirm : NULL;
|
||||||
|
|
||||||
|
$this->deny = $this->validate('deny',$deny->text) ? $deny : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function item(): self
|
public static function item(Text $title,Text $text,Text $confirm,Text $deny): self
|
||||||
{
|
{
|
||||||
return new self();
|
return new self($title,$text,$confirm,$deny);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function style(string $string): self
|
||||||
|
{
|
||||||
|
if (! in_array($string,['default','primary','danger']))
|
||||||
|
throw new SlackSyntaxException(sprintf('Unknown style %s',$string));
|
||||||
|
|
||||||
|
$this->style = $string;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -64,20 +64,25 @@ final class BlockActions extends Base
|
|||||||
case 'action':
|
case 'action':
|
||||||
return Arr::get(object_get($this->_data,'actions'),$this->index);
|
return Arr::get(object_get($this->_data,'actions'),$this->index);
|
||||||
|
|
||||||
case 'action_id':
|
|
||||||
return object_get(Arr::get($this->actions,$this->index),$key);
|
|
||||||
|
|
||||||
// An event can have more than 1 action, each action can have 1 value.
|
// An event can have more than 1 action, each action can have 1 value.
|
||||||
case 'action_key':
|
case 'action_key':
|
||||||
return $this->keyitem('id',object_get($this->action,'action_id'));
|
return $this->keyitem('id',$this->action_id);
|
||||||
|
|
||||||
case 'action_value':
|
case 'action_value':
|
||||||
return $this->keyitem('value',object_get($this->action,'action_id'));
|
return $this->keyitem('value',$this->action_id);
|
||||||
|
|
||||||
|
// Interactive Messages have a block_id.
|
||||||
|
case 'block_key':
|
||||||
|
return $this->keyitem('id',$this->block_id);
|
||||||
|
|
||||||
|
case 'block_value':
|
||||||
|
return $this->keyitem('value',$this->block_id);
|
||||||
|
|
||||||
case 'actions':
|
case 'actions':
|
||||||
case 'response_url':
|
case 'response_url':
|
||||||
return object_get($this->_data,$key);
|
return object_get($this->_data,$key);
|
||||||
|
|
||||||
|
case 'action_id':
|
||||||
case 'block_id':
|
case 'block_id':
|
||||||
return object_get($this->action,$key);
|
return object_get($this->action,$key);
|
||||||
|
|
||||||
|
@ -165,10 +165,10 @@ final class Message extends BlockKit
|
|||||||
if ($this->_data->get('blocks') && $this->_data->get('attachments'))
|
if ($this->_data->get('blocks') && $this->_data->get('attachments'))
|
||||||
throw new SlackSyntaxException('Message cannot have blocks and attachments.');
|
throw new SlackSyntaxException('Message cannot have blocks and attachments.');
|
||||||
|
|
||||||
if ((! isset($this->o)) || (! $this->o->team))
|
if ((! isset($this->o)) || ((! $this->o->team) && (! $this->o->user_team)))
|
||||||
throw new SlackSyntaxException('Message needs to have a user or a channel to work out the team.');
|
throw new SlackSyntaxException('Message needs to have a user or a channel to work out the team.');
|
||||||
|
|
||||||
$api = $this->o->team->slackAPI();
|
$api = $this->o->team ? $this->o->team->slackAPI() : $this->o->user_team->slackAPI();
|
||||||
|
|
||||||
if ($this->ephemeral) {
|
if ($this->ephemeral) {
|
||||||
$response = $api->postEphemeral($this);
|
$response = $api->postEphemeral($this);
|
||||||
|
@ -8,7 +8,7 @@ use Slack\Exceptions\SlackSyntaxException;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MessageAttachmentAction - Slack Message Attachments Actions
|
* Class MessageAttachmentAction - Slack Message Attachments Actions
|
||||||
* Represents an Single Action for a Slack Message Attachment
|
* Represents a Single Action for a Slack Message Attachment
|
||||||
*
|
*
|
||||||
* @package App\Slack\Message
|
* @package App\Slack\Message
|
||||||
* @note These are now legacy - use blocks instead
|
* @note These are now legacy - use blocks instead
|
||||||
|
@ -61,8 +61,6 @@ class User extends Model
|
|||||||
*/
|
*/
|
||||||
public function getUserTeamAttribute(): ?Team
|
public function getUserTeamAttribute(): ?Team
|
||||||
{
|
{
|
||||||
Log::debug(sprintf('%s:User [%s], Team [%s], Enterprise [%s]',self::LOGKEY,$this->id,$this->team_id,$this->enterprise_id),['m'=>__METHOD__]);
|
|
||||||
|
|
||||||
return $this->team_id ? $this->team : (($x=$this->enterprise->teams) ? $x->first() : NULL);
|
return $this->team_id ? $this->team : (($x=$this->enterprise->teams) ? $x->first() : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user