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

View File

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

View File

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

View File

@ -192,42 +192,17 @@ class Plugin extends Model implements HasPluginSettings
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
{
return $this->isDisabled() && $this->isInstalled() && $this->isCompatible();
return $this->status === PluginStatus::Disabled && $this->isCompatible();
}
public function canDisable(): bool
{
return $this->isEnabled() && $this->isInstalled() && $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;
return $this->status !== PluginStatus::Disabled && $this->status !== PluginStatus::NotInstalled && $this->isCompatible();
}
public function isCompatible(): bool

View File

@ -44,7 +44,7 @@ class PluginService
continue;
} else {
// 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);
}
}
@ -141,7 +141,7 @@ class PluginService
$panel->plugin(new $pluginClass());
if ($plugin->hasErrored()) {
if ($plugin->status === PluginStatus::Errored) {
$this->enablePlugin($plugin);
}
} catch (Exception $exception) {
@ -243,7 +243,7 @@ class PluginService
if ($enable) {
$this->enablePlugin($plugin);
} else {
if (!$plugin->isInstalled()) {
if ($plugin->status === PluginStatus::NotInstalled) {
$this->disablePlugin($plugin);
}
}
@ -393,7 +393,7 @@ class PluginService
{
$plugins = Plugin::query()->orderBy('load_order')->get();
foreach ($plugins as $plugin) {
if ($plugin->isTheme() && $plugin->isEnabled()) {
if ($plugin->isTheme() && $plugin->status === PluginStatus::Enabled) {
return true;
}
}
@ -408,7 +408,7 @@ class PluginService
$plugins = Plugin::query()->orderBy('load_order')->get();
foreach ($plugins as $plugin) {
if (!$plugin->isEnabled() || !$plugin->isLanguage()) {
if ($plugin->status !== PluginStatus::Enabled || !$plugin->isLanguage()) {
continue;
}