Skip to content

Commit 57f7fc9

Browse files
committed
style: Refactor ButtonsResolver for cleariy
1 parent 0021141 commit 57f7fc9

1 file changed

Lines changed: 45 additions & 14 deletions

File tree

Ui/Button/ButtonsResolver.php

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
namespace Loki\AdminComponents\Ui\Button;
55

6+
use Loki\AdminComponents\Component\Form\FormRepository;
7+
use Loki\AdminComponents\Component\Grid\GridRepository;
68
use Loki\AdminComponents\Provider\FormProviderInterface;
79
use Magento\Framework\DataObject;
810
use Magento\Framework\View\Element\AbstractBlock;
@@ -18,30 +20,54 @@ public function __construct(
1820
* @return Button[]
1921
*/
2022
public function resolve(
23+
FormRepository|GridRepository $repository,
2124
AbstractBlock $block,
22-
object $provider,
23-
mixed $item
2425
): array {
26+
$provider = $repository->getProvider();
2527
if ($provider instanceof FormProviderInterface) {
2628
return $provider->getForm()->getButtons();
2729
}
2830

31+
$buttons = $this->getButtonsFromBlock($block);
32+
if (!empty($buttons)) {
33+
return $buttons;
34+
}
35+
36+
if ($repository instanceof FormRepository) {
37+
return $this->getDefaultFormButtons($repository);
38+
}
39+
40+
if ($repository instanceof GridRepository) {
41+
return $this->getDefaultGridButtons($repository);
42+
}
43+
44+
return [];
45+
}
46+
47+
private function getButtonsFromBlock(AbstractBlock $block): array
48+
{
2949
$buttonDefinitions = $block->getButtons();
30-
if (!empty($buttonDefinitions)) {
31-
$buttons = [];
32-
foreach ($buttonDefinitions as $buttonDefinition) {
33-
$buttons[] = $this->buttonFactory->create(
34-
method: (string)$buttonDefinition['method'],
35-
label: (string)$buttonDefinition['label'],
36-
cssClass: isset($buttonDefinition['cssClass']) ? (string)$buttonDefinition['cssClass'] : '',
37-
url: isset($buttonDefinition['url']) ? (string)$buttonDefinition['url'] : '',
38-
primary: $buttonDefinition['primary'] ?? false,
39-
);
40-
}
50+
if (empty($buttonDefinitions)) {
51+
return [];
52+
}
4153

42-
return $buttons;
54+
$buttons = [];
55+
foreach ($buttonDefinitions as $buttonDefinition) {
56+
$buttons[] = $this->buttonFactory->create(
57+
method: (string)$buttonDefinition['method'],
58+
label: (string)$buttonDefinition['label'],
59+
cssClass: isset($buttonDefinition['cssClass']) ? (string)$buttonDefinition['cssClass'] : '',
60+
url: isset($buttonDefinition['url']) ? (string)$buttonDefinition['url'] : '',
61+
primary: $buttonDefinition['primary'] ?? false,
62+
);
4363
}
4464

65+
return $buttons;
66+
}
67+
68+
private function getDefaultFormButtons(FormRepository $repository): array
69+
{
70+
$item = $repository->getItem();
4571
if ($item instanceof DataObject && $item->getId() > 0) {
4672
return [
4773
$this->buttonFactory->createCloseAction(),
@@ -59,4 +85,9 @@ public function resolve(
5985
//$this->buttonFactory->createSaveContinueAction(),
6086
];
6187
}
88+
89+
private function getDefaultGridButtons(GridRepository $repository): array
90+
{
91+
return [];
92+
}
6293
}

0 commit comments

Comments
 (0)