
* wip * wip * wip * wip * fix * wip * wip * fix * fix * cs fix * #116 - fix * #116 - changed home-office icon * Apply suggestions from code review Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com> * #116 - cr fix * #116 - cs fix * #116 - cs fix * Apply suggestions from code review Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com> * #5 - bump codestyle Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl> Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com> Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>
47 lines
1.6 KiB
PHP
47 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Toby\Infrastructure\Slack\Traits;
|
|
|
|
use Illuminate\Support\Collection;
|
|
use Illuminate\Support\Str;
|
|
use Spatie\SlashCommand\AttachmentField;
|
|
use Spatie\SlashCommand\Handlers\BaseHandler;
|
|
use Spatie\SlashCommand\Handlers\SignatureHandler;
|
|
use Spatie\SlashCommand\Handlers\SignatureParts;
|
|
use Spatie\SlashCommand\HandlesSlashCommand;
|
|
|
|
trait ListsHandlers
|
|
{
|
|
protected function findAvailableHandlers(): Collection
|
|
{
|
|
return collect(config("laravel-slack-slash-command.handlers"))
|
|
->map(fn(string $handlerClassName): BaseHandler => new $handlerClassName($this->request))
|
|
->filter(fn(HandlesSlashCommand $handler): bool => $handler instanceof SignatureHandler)
|
|
->filter(function (SignatureHandler $handler) {
|
|
$signatureParts = new SignatureParts($handler->getSignature());
|
|
|
|
return Str::is($signatureParts->getSlashCommandName(), $this->request->command);
|
|
});
|
|
}
|
|
|
|
protected function mapHandlersToAttachments(Collection $handlers): array
|
|
{
|
|
return $handlers
|
|
->sort(
|
|
fn(SignatureHandler $handlerA, SignatureHandler $handlerB): int => strcmp(
|
|
$handlerA->getFullCommand(),
|
|
$handlerB->getFullCommand(),
|
|
),
|
|
)
|
|
->map(
|
|
fn(SignatureHandler $handler): AttachmentField => AttachmentField::create(
|
|
$handler->getDescription(),
|
|
"`/{$handler->getSignature()}`",
|
|
),
|
|
)
|
|
->all();
|
|
}
|
|
}
|