Skip to content

Commit aefa13e

Browse files
authored
Merge pull request #227 from Muetze42/development
chore(portal): integrate media support for user avatars in admin views
2 parents ebaf2b0 + 05b9bb2 commit aefa13e

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

app/Livewire/Portal/Admin/ApiUsage.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use App\Livewire\AbstractComponent;
66
use App\Models\PersonalAccessToken;
77
use App\Models\PersonalAccessTokenUsage;
8+
use App\Models\User;
89
use Illuminate\Contracts\View\View;
910
use Illuminate\Database\Eloquent\Builder;
1011
use Illuminate\Pagination\LengthAwarePaginator;
@@ -98,18 +99,19 @@ public function topEndpoints(): Collection
9899
/**
99100
* Get the most active users.
100101
*
101-
* @return Collection<int, stdClass>
102+
* @return Collection<int, User>
102103
*/
103104
#[Computed]
104105
public function topUsers(): Collection
105106
{
106107
$startDate = $this->getStartDate();
107108

108-
return DB::table('personal_access_token_usages')
109-
->join('users', 'personal_access_token_usages.user_id', '=', 'users.id')
110-
->select('users.id', 'users.name', 'users.email', DB::raw('COUNT(*) as request_count'))
109+
return User::with('media')
110+
->select('users.*')
111+
->selectRaw('COUNT(personal_access_token_usages.id) as request_count')
112+
->join('personal_access_token_usages', 'users.id', '=', 'personal_access_token_usages.user_id')
111113
->where('personal_access_token_usages.created_at', '>=', $startDate)
112-
->groupBy('users.id', 'users.name', 'users.email')
114+
->groupBy('users.id')
113115
->orderByDesc('request_count')
114116
->limit(10)
115117
->get();
@@ -143,7 +145,7 @@ public function usageLogs(): LengthAwarePaginator
143145
{
144146
$startDate = $this->getStartDate();
145147

146-
return PersonalAccessTokenUsage::with(['user', 'token'])
148+
return PersonalAccessTokenUsage::with(['user.media', 'token'])
147149
->where('created_at', '>=', $startDate)
148150
->latest('created_at')
149151
->when($this->search !== '', function (Builder $query): void {

app/Livewire/Portal/Admin/UserIndex.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ public function stats(): array
8181
#[Computed]
8282
public function users(): LengthAwarePaginator
8383
{
84-
return User::withCount('tokens')
84+
return User::with('media')
85+
->withCount('tokens')
8586
->when($this->search !== '', function (Builder $query): void {
8687
$query->where(function (Builder $query): void {
8788
$query->whereLike('name', sprintf('%%%s%%', $this->search))

resources/views/portal/livewire/admin/api-usage.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
@foreach($this->topUsers as $topUser)
6868
<div wire:key="top-user-{{ $topUser->id }}" class="flex items-center justify-between">
6969
<div class="flex items-center gap-ui flex-1 min-w-0">
70-
<flux:avatar name="{{ $topUser->name }}" size="sm" />
70+
<flux:avatar :src="$topUser->getFirstMediaUrl('avatar', 'sm')" name="{{ $topUser->name }}" size="sm" />
7171
<div class="min-w-0 flex-1">
7272
<div class="font-medium truncate">{{ $topUser->name }}</div>
7373
<flux:text variant="subtle" size="sm" class="truncate">{{ $topUser->email }}</flux:text>
@@ -157,7 +157,7 @@ class="w-full sm:w-64"
157157
<flux:table.cell>
158158
@if($log->user)
159159
<div class="flex items-center gap-ui">
160-
<flux:avatar name="{{ $log->user->name }}" size="xs" />
160+
<flux:avatar :src="$log->user->getFirstMediaUrl('avatar', 'sm')" name="{{ $log->user->name }}" size="xs" />
161161
<span>{{ $log->user->name }}</span>
162162
</div>
163163
@else

resources/views/portal/livewire/admin/user-index.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class="flex-1"
7272
</flux:table.cell>
7373
<flux:table.cell>
7474
<div class="flex items-center gap-ui">
75-
<flux:avatar name="{{ $user->name }}" size="sm" />
75+
<flux:avatar :src="$user->getFirstMediaUrl('avatar', 'sm')" name="{{ $user->name }}" size="sm" />
7676
<div>
7777
<div class="font-medium flex items-center gap-ui">
7878
{{ $user->name }}

0 commit comments

Comments
 (0)