['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 ?? []); } public function seedExamplePlugins(): void { // \Artisan::call('db:seed', ['--class' => 'ExampleReceiptsSeeder']); \Artisan::call(\App\Console\Commands\ExampleReceiptsSeederCommand::class, ['user_id' => auth()->id()]); } }; ?>

Plugins

Add Plugin Seed Example Plugins {{-- --}} {{-- --}} {{-- Import Receipt ZIP File--}} {{-- --}} {{-- --}} {{-- --}} {{-- New Native Plugin--}} {{-- --}}
Add Plugin
Create Plugin
@foreach($plugins as $plugin) @endforeach