remove "is" methods from plugin model

This commit is contained in:
Boy132 2025-11-08 23:22:53 +01:00
parent 889daf2fab
commit 09fc3ed59b
5 changed files with 18 additions and 40 deletions

View File

@ -2,6 +2,7 @@
namespace App\Console\Commands\Plugin; namespace App\Console\Commands\Plugin;
use App\Enums\PluginStatus;
use App\Facades\Plugins; use App\Facades\Plugins;
use App\Models\Plugin; use App\Models\Plugin;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@ -24,7 +25,7 @@ class InstallPluginCommand extends Command
return; return;
} }
if ($plugin->isInstalled()) { if ($plugin->status !== PluginStatus::NotInstalled) {
$this->error('Plugin is already installed!'); $this->error('Plugin is already installed!');
return; return;

View File

@ -2,6 +2,7 @@
namespace App\Console\Commands\Plugin; namespace App\Console\Commands\Plugin;
use App\Enums\PluginStatus;
use App\Facades\Plugins; use App\Facades\Plugins;
use App\Models\Plugin; use App\Models\Plugin;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@ -24,7 +25,7 @@ class UninstallPluginCommand extends Command
return; return;
} }
if (!$plugin->isInstalled()) { if ($plugin->status === PluginStatus::NotInstalled) {
$this->error('Plugin is not installed!'); $this->error('Plugin is not installed!');
return; return;

View File

@ -2,6 +2,7 @@
namespace App\Filament\Admin\Resources\Plugins; namespace App\Filament\Admin\Resources\Plugins;
use App\Enums\PluginStatus;
use App\Facades\Plugins; use App\Facades\Plugins;
use App\Filament\Admin\Resources\Plugins\Pages\ListPlugins; use App\Filament\Admin\Resources\Plugins\Pages\ListPlugins;
use App\Models\Plugin; use App\Models\Plugin;
@ -106,7 +107,7 @@ class PluginResource extends Resource
->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin))
->icon('tabler-settings') ->icon('tabler-settings')
->color('primary') ->color('primary')
->visible(fn (Plugin $plugin) => $plugin->isEnabled() && $plugin->hasSettings()) ->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::Enabled && $plugin->hasSettings())
->schema(fn (Plugin $plugin) => $plugin->getSettingsForm()) ->schema(fn (Plugin $plugin) => $plugin->getSettingsForm())
->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data)) ->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data))
->slideOver(), ->slideOver(),
@ -116,7 +117,7 @@ class PluginResource extends Resource
->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin))
->icon('tabler-terminal') ->icon('tabler-terminal')
->color('success') ->color('success')
->hidden(fn (Plugin $plugin) => $plugin->isInstalled()) ->hidden(fn (Plugin $plugin) => $plugin->status !== PluginStatus::NotInstalled)
->action(function (Plugin $plugin, $livewire) { ->action(function (Plugin $plugin, $livewire) {
Plugins::installPlugin($plugin, !$plugin->isTheme() || !Plugins::hasThemePluginEnabled()); Plugins::installPlugin($plugin, !$plugin->isTheme() || !Plugins::hasThemePluginEnabled());
@ -132,7 +133,7 @@ class PluginResource extends Resource
->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin))
->icon('tabler-download') ->icon('tabler-download')
->color('success') ->color('success')
->visible(fn (Plugin $plugin) => $plugin->isInstalled() && $plugin->isUpdateAvailable()) ->visible(fn (Plugin $plugin) => $plugin->status !== PluginStatus::NotInstalled && $plugin->isUpdateAvailable())
->action(function (Plugin $plugin, $livewire) { ->action(function (Plugin $plugin, $livewire) {
Plugins::updatePlugin($plugin); Plugins::updatePlugin($plugin);
@ -184,7 +185,7 @@ class PluginResource extends Resource
->icon('tabler-trash') ->icon('tabler-trash')
->color('danger') ->color('danger')
->requiresConfirmation() ->requiresConfirmation()
->hidden(fn (Plugin $plugin) => $plugin->isInstalled()) ->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::NotInstalled)
->action(function (Plugin $plugin, $livewire) { ->action(function (Plugin $plugin, $livewire) {
Plugins::deletePlugin($plugin); Plugins::deletePlugin($plugin);
@ -201,7 +202,7 @@ class PluginResource extends Resource
->icon('tabler-terminal') ->icon('tabler-terminal')
->color('danger') ->color('danger')
->requiresConfirmation() ->requiresConfirmation()
->visible(fn (Plugin $plugin) => $plugin->isInstalled()) ->hidden(fn (Plugin $plugin) => $plugin->status === PluginStatus::NotInstalled)
->action(function (Plugin $plugin, $livewire) { ->action(function (Plugin $plugin, $livewire) {
Plugins::uninstallPlugin($plugin); Plugins::uninstallPlugin($plugin);

View File

@ -192,42 +192,17 @@ class Plugin extends Model implements HasPluginSettings
public function shouldLoad(?string $panelId = null): bool public function shouldLoad(?string $panelId = null): bool
{ {
return !$this->isDisabled() && $this->isInstalled() && !$this->isIncompatible() && (is_null($panelId) || !$this->panels || in_array($panelId, explode(',', $this->panels))); return ($this->status === PluginStatus::Enabled || $this->status === PluginStatus::Errored) && (is_null($panelId) || !$this->panels || in_array($panelId, explode(',', $this->panels)));
} }
public function canEnable(): bool public function canEnable(): bool
{ {
return $this->isDisabled() && $this->isInstalled() && $this->isCompatible(); return $this->status === PluginStatus::Disabled && $this->isCompatible();
} }
public function canDisable(): bool public function canDisable(): bool
{ {
return $this->isEnabled() && $this->isInstalled() && $this->isCompatible(); return $this->status !== PluginStatus::Disabled && $this->status !== PluginStatus::NotInstalled && $this->isCompatible();
}
public function isEnabled(): bool
{
return $this->status === PluginStatus::Enabled;
}
public function isDisabled(): bool
{
return $this->status === PluginStatus::Disabled;
}
public function isInstalled(): bool
{
return $this->status !== PluginStatus::NotInstalled;
}
public function hasErrored(): bool
{
return $this->status === PluginStatus::Errored;
}
public function isIncompatible(): bool
{
return $this->status === PluginStatus::Incompatible;
} }
public function isCompatible(): bool public function isCompatible(): bool

View File

@ -44,7 +44,7 @@ class PluginService
continue; continue;
} else { } else {
// Make sure to update the status if a plugin is no longer incompatible (e.g. because the user changed their panel version) // Make sure to update the status if a plugin is no longer incompatible (e.g. because the user changed their panel version)
if ($plugin->isIncompatible()) { if ($plugin->status === PluginStatus::Incompatible) {
$this->disablePlugin($plugin); $this->disablePlugin($plugin);
} }
} }
@ -141,7 +141,7 @@ class PluginService
$panel->plugin(new $pluginClass()); $panel->plugin(new $pluginClass());
if ($plugin->hasErrored()) { if ($plugin->status === PluginStatus::Errored) {
$this->enablePlugin($plugin); $this->enablePlugin($plugin);
} }
} catch (Exception $exception) { } catch (Exception $exception) {
@ -243,7 +243,7 @@ class PluginService
if ($enable) { if ($enable) {
$this->enablePlugin($plugin); $this->enablePlugin($plugin);
} else { } else {
if (!$plugin->isInstalled()) { if ($plugin->status === PluginStatus::NotInstalled) {
$this->disablePlugin($plugin); $this->disablePlugin($plugin);
} }
} }
@ -393,7 +393,7 @@ class PluginService
{ {
$plugins = Plugin::query()->orderBy('load_order')->get(); $plugins = Plugin::query()->orderBy('load_order')->get();
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
if ($plugin->isTheme() && $plugin->isEnabled()) { if ($plugin->isTheme() && $plugin->status === PluginStatus::Enabled) {
return true; return true;
} }
} }
@ -408,7 +408,7 @@ class PluginService
$plugins = Plugin::query()->orderBy('load_order')->get(); $plugins = Plugin::query()->orderBy('load_order')->get();
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
if (!$plugin->isEnabled() || !$plugin->isLanguage()) { if ($plugin->status !== PluginStatus::Enabled || !$plugin->isLanguage()) {
continue; continue;
} }