*/ public Collection $runs; public int $overflowCount = 0; public bool $disabled = false; public bool $hasActiveRuns = false; public ?int $tenantId = null; public function mount(): void { $this->runs = collect(); $tenant = Filament::getTenant(); $this->tenantId = $tenant instanceof Tenant ? (int) $tenant->id : null; $this->refreshRuns(); } #[On(OpsUxBrowserEvents::RunEnqueued)] public function onRunEnqueued(?int $tenantId = null): void { if ($tenantId !== null) { $this->tenantId = $tenantId; } $this->refreshRuns(); } #[Computed] public function activeRuns() { return $this->runs; } public function refreshRuns(): void { $tenantId = $this->tenantId; // Best-effort: if we're mounted on a tenant page, capture it once. if ($tenantId === null) { $tenant = Filament::getTenant(); $tenantId = $tenant instanceof Tenant ? (int) $tenant->id : null; $this->tenantId = $tenantId; } if ($tenantId === null) { $this->disabled = true; $this->runs = collect(); $this->overflowCount = 0; $this->hasActiveRuns = false; return; } if (! auth()->user()?->can('viewAny', OperationRun::class)) { $this->disabled = true; $this->runs = collect(); $this->overflowCount = 0; $this->hasActiveRuns = false; return; } $this->disabled = false; $query = OperationRun::query() ->where('tenant_id', $tenantId) ->active() ->orderByDesc('created_at'); $activeCount = (clone $query)->count(); $this->runs = (clone $query)->limit(6)->get(); $this->overflowCount = max(0, $activeCount - 5); $this->hasActiveRuns = $this->runs->isNotEmpty(); } public function render(): \Illuminate\Contracts\View\View { return view('livewire.bulk-operation-progress', [ 'tenant' => Filament::getTenant(), ]); } }