Skip to content

Commit 6bad832

Browse files
authored
Merge pull request #39 from rafaucau/fix/soft-deleted-models
fix: Support soft-deleted subjects in `ActivityLogLivewire`
2 parents 65c248e + 7dbf401 commit 6bad832

4 files changed

Lines changed: 33 additions & 1 deletion

File tree

src/Filament/Livewire/ActivityLogLivewire.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Carbon\CarbonImmutable;
88
use Illuminate\Database\Eloquent\Model;
9+
use Illuminate\Database\Eloquent\SoftDeletingScope;
910
use Illuminate\View\View;
1011
use Livewire\Attributes\Url;
1112
use Livewire\Component;
@@ -94,7 +95,12 @@ private function resolveSubject(): Model
9495
/** @var class-string<Model> $class */
9596
$class = $this->subjectClass;
9697

97-
return $class::query()->findOrFail($this->subjectKey);
98+
return $class::query()
99+
->when(
100+
config('activitylog.include_soft_deleted_subjects'),
101+
fn ($query) => $query->withoutGlobalScope(SoftDeletingScope::class)
102+
)
103+
->findOrFail($this->subjectKey);
98104
}
99105

100106
private function builderFor(Model $subject): TimelineBuilder
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Relaticle\ActivityLog\Filament\Livewire\ActivityLogLivewire;
6+
use Relaticle\ActivityLog\Tests\Fixtures\Models\Person;
7+
8+
it('renders when the subject has been soft deleted', function (): void {
9+
config()->set('activitylog.include_soft_deleted_subjects', true);
10+
11+
$person = Person::factory()->create(['name' => 'Soft Deleted Person']);
12+
$person->delete();
13+
14+
expect($person->trashed())->toBeTrue();
15+
16+
$component = new ActivityLogLivewire;
17+
$component->subjectClass = $person::class;
18+
$component->subjectKey = $person->getKey();
19+
20+
$view = $component->render();
21+
22+
expect($view->name())->toBe('activity-log::timeline');
23+
});

tests/Fixtures/Models/Person.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Database\Eloquent\Factories\HasFactory;
88
use Illuminate\Database\Eloquent\Model;
99
use Illuminate\Database\Eloquent\Relations\HasMany;
10+
use Illuminate\Database\Eloquent\SoftDeletes;
1011
use Relaticle\ActivityLog\Concerns\InteractsWithTimeline;
1112
use Relaticle\ActivityLog\Contracts\HasTimeline;
1213
use Relaticle\ActivityLog\Tests\Fixtures\database\factories\PersonFactory;
@@ -22,6 +23,7 @@ final class Person extends Model implements HasTimeline
2223

2324
use InteractsWithTimeline;
2425
use LogsActivity;
26+
use SoftDeletes;
2527

2628
protected $fillable = ['name'];
2729

tests/Fixtures/database/migrations/0001_01_01_000000_create_fixture_tables.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public function up(): void
1414
$table->id();
1515
$table->string('name');
1616
$table->timestamps();
17+
$table->softDeletes();
1718
});
1819

1920
Schema::create('emails', function (Blueprint $table): void {

0 commit comments

Comments
 (0)