Skip to content

Commit 4f4035b

Browse files
committed
fixing memory leak in users index crud
1 parent 9715c0d commit 4f4035b

File tree

5 files changed

+26
-7
lines changed

5 files changed

+26
-7
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
.env
1010
.env.backup
1111
.env.production
12+
.env.testing
1213
.phpactor.json
1314
.phpunit.result.cache
1415
Homestead.json

app/Livewire/Users/Update.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
use App\Models\User;
77
use Illuminate\Contracts\View\View;
88
use Illuminate\Validation\Rule;
9+
use Livewire\Attributes\On;
910
use Livewire\Component;
1011

1112
class Update extends Component
1213
{
1314
use Alert;
1415

15-
public User $user;
16+
public ?User $user;
1617

1718
public ?string $password = null;
1819

@@ -25,6 +26,14 @@ public function render(): View
2526
return view('livewire.users.update');
2627
}
2728

29+
#[On('load::user')]
30+
public function load(User $user): void
31+
{
32+
$this->user = $user;
33+
34+
$this->modal = true;
35+
}
36+
2837
public function rules(): array
2938
{
3039
return [

resources/views/livewire/users/index.blade.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
@endinteract
1414
@interact('column_action', $row)
1515
<div class="flex gap-1">
16-
<livewire:users.update :user="$row" :key="uniqid()" @updated="$refresh" />
16+
<x-button.circle icon="pencil" wire:click="$dispatch('load::user', { 'user' : '{{ $row->id }}'})" />
1717
<livewire:users.delete :user="$row" :key="uniqid()" @deleted="$refresh" />
1818
</div>
1919
@endinteract
2020
</x-table>
21+
22+
<livewire:users.update @updated="$refresh" />
2123
</div>

resources/views/livewire/users/update.blade.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<div>
2-
<x-button.circle icon="pencil" wire:click="$toggle('modal')" />
3-
4-
<x-modal :title="__('Update User: #:id', ['id' => $user->id])" wire>
5-
<form id="user-update-{{ $user->id }}" wire:submit="save" class="space-y-4">
2+
<x-modal :title="__('Update User: #:id', ['id' => $user?->id])" wire>
3+
<form id="user-update-{{ $user?->id }}" wire:submit="save" class="space-y-4">
64
<div>
75
<x-input label="Name *" wire:model="user.name" required />
86
</div>
@@ -25,7 +23,7 @@
2523
</div>
2624
</form>
2725
<x-slot:footer>
28-
<x-button type="submit" form="user-update-{{ $user->id }}">
26+
<x-button type="submit" form="user-update-{{ $user?->id }}">
2927
Save
3028
</x-button>
3129
</x-slot:footer>

tests/Feature/Livewire/Users/UpdateTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@
2525
->assertSet('password_confirmation', null);
2626
});
2727

28+
it('load the correct use', function () {
29+
Livewire::test(Update::class)
30+
->call('load', $this->original)
31+
->assertSet('user.name', 'Original Name')
32+
->assertSet('user.email', '[email protected]')
33+
->assertSet('password', null)
34+
->assertSet('password_confirmation', null);
35+
});
36+
2837
it('updates user name and email', function () {
2938
Livewire::test(Update::class, ['user' => $this->original])
3039
->set('user.name', 'Updated Name')

0 commit comments

Comments
 (0)