mirror of
https://github.com/pelican-dev/panel.git
synced 2025-11-09 18:19:27 +01:00
enable sushi caching (when not in dev mode)
This commit is contained in:
parent
93ee1cdf68
commit
445cc7c88c
@ -5,6 +5,7 @@ namespace App\Models;
|
|||||||
use App\Contracts\Plugins\HasPluginSettings;
|
use App\Contracts\Plugins\HasPluginSettings;
|
||||||
use App\Enums\PluginCategory;
|
use App\Enums\PluginCategory;
|
||||||
use App\Enums\PluginStatus;
|
use App\Enums\PluginStatus;
|
||||||
|
use App\Facades\Plugins;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Filament\Schemas\Components\Component;
|
use Filament\Schemas\Components\Component;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
@ -42,6 +43,12 @@ class Plugin extends Model implements HasPluginSettings
|
|||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'status',
|
||||||
|
'status_message',
|
||||||
|
'load_order',
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]
|
* @return string[]
|
||||||
*/
|
*/
|
||||||
@ -137,12 +144,16 @@ class Plugin extends Model implements HasPluginSettings
|
|||||||
|
|
||||||
$plugins[] = $data;
|
$plugins[] = $data;
|
||||||
} catch (Exception $exception) {
|
} catch (Exception $exception) {
|
||||||
|
if (Plugins::isDevModeActive()) {
|
||||||
|
throw ($exception);
|
||||||
|
}
|
||||||
|
|
||||||
report($exception);
|
report($exception);
|
||||||
|
|
||||||
if (!$exception instanceof JsonException) {
|
if (!$exception instanceof JsonException) {
|
||||||
$plugins[] = [
|
$plugins[] = [
|
||||||
'id' => $data['id'] ?? Str::uuid(),
|
'id' => $data['id'] ?? Str::uuid(),
|
||||||
'name' => $data['name'] ?? 'Invalid Plugin',
|
'name' => $data['name'] ?? $plugin,
|
||||||
'author' => $data['author'] ?? 'Unknown',
|
'author' => $data['author'] ?? 'Unknown',
|
||||||
'version' => '0.0.0',
|
'version' => '0.0.0',
|
||||||
'description' => 'Plugin.json is invalid!',
|
'description' => 'Plugin.json is invalid!',
|
||||||
@ -168,7 +179,7 @@ class Plugin extends Model implements HasPluginSettings
|
|||||||
|
|
||||||
protected function sushiShouldCache(): bool
|
protected function sushiShouldCache(): bool
|
||||||
{
|
{
|
||||||
return false;
|
return !Plugins::isDevModeActive();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function casts(): array
|
protected function casts(): array
|
||||||
@ -353,13 +364,14 @@ class Plugin extends Model implements HasPluginSettings
|
|||||||
*/
|
*/
|
||||||
public function saveSettings(array $data): void
|
public function saveSettings(array $data): void
|
||||||
{
|
{
|
||||||
$class = $this->fullClass();
|
try {
|
||||||
if (class_exists($class)) {
|
|
||||||
$pluginObject = filament($this->id);
|
$pluginObject = filament($this->id);
|
||||||
|
|
||||||
if ($pluginObject instanceof HasPluginSettings) {
|
if ($pluginObject instanceof HasPluginSettings) {
|
||||||
$pluginObject->saveSettings($data);
|
$pluginObject->saveSettings($data);
|
||||||
}
|
}
|
||||||
|
} catch (Exception) {
|
||||||
|
// Plugin is not loaded on the current panel, so no settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -298,8 +298,7 @@ class PluginService
|
|||||||
/** @param array<string, mixed> $data */
|
/** @param array<string, mixed> $data */
|
||||||
private function setMetaData(string|Plugin $plugin, array $data): void
|
private function setMetaData(string|Plugin $plugin, array $data): void
|
||||||
{
|
{
|
||||||
$plugin = $plugin instanceof Plugin ? $plugin->id : $plugin;
|
$path = plugin_path($plugin instanceof Plugin ? $plugin->id : $plugin, 'plugin.json');
|
||||||
$path = plugin_path($plugin, 'plugin.json');
|
|
||||||
|
|
||||||
if (File::exists($path)) {
|
if (File::exists($path)) {
|
||||||
$pluginData = File::json($path, JSON_THROW_ON_ERROR);
|
$pluginData = File::json($path, JSON_THROW_ON_ERROR);
|
||||||
@ -307,6 +306,12 @@ class PluginService
|
|||||||
$pluginData['meta'] = $metaData;
|
$pluginData['meta'] = $metaData;
|
||||||
|
|
||||||
File::put($path, json_encode($pluginData, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
File::put($path, json_encode($pluginData, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
||||||
|
|
||||||
|
if (!$this->isDevModeActive()) {
|
||||||
|
// Update model to rebuild sushi cache
|
||||||
|
$plugin = !$plugin instanceof Plugin ? Plugin::findOrFail($plugin) : $plugin;
|
||||||
|
$plugin->update($metaData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user