mirror of
https://github.com/pelican-dev/panel.git
synced 2025-11-08 10:39: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\Enums\PluginCategory;
|
||||
use App\Enums\PluginStatus;
|
||||
use App\Facades\Plugins;
|
||||
use Exception;
|
||||
use Filament\Schemas\Components\Component;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@ -42,6 +43,12 @@ class Plugin extends Model implements HasPluginSettings
|
||||
|
||||
public $incrementing = false;
|
||||
|
||||
protected $fillable = [
|
||||
'status',
|
||||
'status_message',
|
||||
'load_order',
|
||||
];
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
@ -137,12 +144,16 @@ class Plugin extends Model implements HasPluginSettings
|
||||
|
||||
$plugins[] = $data;
|
||||
} catch (Exception $exception) {
|
||||
if (Plugins::isDevModeActive()) {
|
||||
throw ($exception);
|
||||
}
|
||||
|
||||
report($exception);
|
||||
|
||||
if (!$exception instanceof JsonException) {
|
||||
$plugins[] = [
|
||||
'id' => $data['id'] ?? Str::uuid(),
|
||||
'name' => $data['name'] ?? 'Invalid Plugin',
|
||||
'name' => $data['name'] ?? $plugin,
|
||||
'author' => $data['author'] ?? 'Unknown',
|
||||
'version' => '0.0.0',
|
||||
'description' => 'Plugin.json is invalid!',
|
||||
@ -168,7 +179,7 @@ class Plugin extends Model implements HasPluginSettings
|
||||
|
||||
protected function sushiShouldCache(): bool
|
||||
{
|
||||
return false;
|
||||
return !Plugins::isDevModeActive();
|
||||
}
|
||||
|
||||
protected function casts(): array
|
||||
@ -353,13 +364,14 @@ class Plugin extends Model implements HasPluginSettings
|
||||
*/
|
||||
public function saveSettings(array $data): void
|
||||
{
|
||||
$class = $this->fullClass();
|
||||
if (class_exists($class)) {
|
||||
try {
|
||||
$pluginObject = filament($this->id);
|
||||
|
||||
if ($pluginObject instanceof HasPluginSettings) {
|
||||
$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 */
|
||||
private function setMetaData(string|Plugin $plugin, array $data): void
|
||||
{
|
||||
$plugin = $plugin instanceof Plugin ? $plugin->id : $plugin;
|
||||
$path = plugin_path($plugin, 'plugin.json');
|
||||
$path = plugin_path($plugin instanceof Plugin ? $plugin->id : $plugin, 'plugin.json');
|
||||
|
||||
if (File::exists($path)) {
|
||||
$pluginData = File::json($path, JSON_THROW_ON_ERROR);
|
||||
@ -307,6 +306,12 @@ class PluginService
|
||||
$pluginData['meta'] = $metaData;
|
||||
|
||||
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