['name' => 'Markup', 'flux_icon_name' => 'code-bracket', 'detail_view_route' => 'plugins.markup'], 'api' => ['name' => 'API', 'flux_icon_name' => 'braces', 'detail_view_route' => 'plugins.api'], ]; protected $rules = [ 'name' => 'required|string|max:255', 'data_stale_minutes' => 'required|integer|min:1', 'data_strategy' => 'required|string|in:polling,webhook', 'polling_url' => 'required|url', 'polling_verb' => 'required|string|in:get,post', 'polling_header' => 'nullable|string|max:255', ]; public function addPlugin(): void { abort_unless(auth()->user() !== null, 403); $this->validate(); \App\Models\Plugin::create([ 'uuid' => \Illuminate\Support\Str::uuid(), 'user_id' => auth()->id(), 'name' => $this->name, 'data_stale_minutes' => $this->data_stale_minutes, 'data_strategy' => $this->data_strategy, 'polling_url' => $this->polling_url, 'polling_verb' => $this->polling_verb, 'polling_header' => $this->polling_header, ]); $this->reset(['name', 'data_stale_minutes', 'data_strategy', 'polling_url', 'polling_verb', 'polling_header']); Flux::modal('add-plugin')->close(); } public function mount(): void { $userPlugins =auth()->user()->plugins->map(function ($plugin) { return $plugin->toArray(); })->toArray(); $this->plugins = array_merge($this->native_plugins, $userPlugins); } }; ?>

Plugins

Add Plugin
Add Plugin
Create Plugin
@foreach($plugins as $plugin) @endforeach