dashboard gereparerd
Some checks failed
linter / quality (push) Failing after 1m5s
tests / ci (8.3) (push) Failing after 51s
tests / ci (8.4) (push) Failing after 1m6s
tests / ci (8.5) (push) Failing after 1m7s

This commit is contained in:
Daan Meijer 2026-07-06 15:53:30 +02:00
parent ccb3598da0
commit b2a7e2557e
4 changed files with 78 additions and 11 deletions

View File

@ -11,10 +11,10 @@ class DashboardController extends Controller
public function index(Request $request, ActivityService $activityService) public function index(Request $request, ActivityService $activityService)
{ {
$user = $request->user(); $user = $request->user();
$unreadEntities = $activityService->getUnreadEntitiesGrouped($user); $unreadDynamics = $activityService->getUnreadEntitiesGrouped($user);
return Inertia::render('Dashboard', [ return Inertia::render('Dashboard', [
'unreadEntities' => $unreadEntities, 'unreadDynamics' => $unreadDynamics,
]); ]);
} }
} }

View File

@ -0,0 +1,67 @@
<?php
namespace App\Policies;
use App\Models\Chat;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class ChatPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return false;
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Chat $chat): bool
{
$chatable = $chat->chatable;
return $user->can('view', $chatable);
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return false;
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Chat $chat): bool
{
return $this->view($user, $chat);
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Chat $chat): bool
{
return false;
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Chat $chat): bool
{
return false;
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Chat $chat): bool
{
return false;
}
}

View File

@ -14,7 +14,7 @@ defineOptions({
}); });
defineProps<{ defineProps<{
unreadEntities: Array<{ unreadDynamics: Array<{
id: number; id: number;
name: string; name: string;
url: string; url: string;
@ -50,15 +50,17 @@ function formatTime(isoString: string): string {
<div class="c-dashboard__container"> <div class="c-dashboard__container">
<h2 class="c-dashboard__title">Recent Activity</h2> <h2 class="c-dashboard__title">Recent Activity</h2>
<div v-if="unreadEntities.length > 0" class="c-dashboard__grid"> <div v-if="unreadDynamics.length > 0" class="c-dashboard__grid">
<div <div
v-for="entity in unreadEntities" v-for="dynamic in unreadDynamics"
:key="entity.id" :key="dynamic.id"
class="c-dashboard__card" class="c-dashboard__card"
> >
<div class="c-dashboard__card-header"> <div class="c-dashboard__card-header">
<div class="c-dashboard__entity-meta"> <div class="c-dashboard__entity-meta">
<span class="c-dashboard__badge-type c-dashboard__badge-type--dynamic"> <span
class="c-dashboard__badge-type c-dashboard__badge-type--dynamic"
>
Dynamic Dynamic
</span> </span>
<span class="c-dashboard__unread-count"> <span class="c-dashboard__unread-count">
@ -102,9 +104,7 @@ function formatTime(isoString: string): string {
v-if="dynamic.new_activities.length > 0" v-if="dynamic.new_activities.length > 0"
class="c-dashboard__divider" class="c-dashboard__divider"
> >
<span class="c-dashboard__divider-text" <span class="c-dashboard__divider-text">NEW</span>
>NEW</span
>
</div> </div>
<!-- New / Unread Activities --> <!-- New / Unread Activities -->

View File

@ -8,5 +8,5 @@ Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
}); });
Broadcast::channel('chats.{chat}', function ($user, Chat $chat) { Broadcast::channel('chats.{chat}', function ($user, Chat $chat) {
return $user->can('view', $chat->chatable); return $user?->can('view', $chat);
}); });