feat: Implement read cursor activity tracking and recent activity dashboard with context
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\ActivityService;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index(Request $request, ActivityService $activityService)
|
||||
{
|
||||
$user = $request->user();
|
||||
$unreadEntities = $activityService->getUnreadEntitiesGrouped($user);
|
||||
|
||||
return Inertia::render('Dashboard', [
|
||||
'unreadEntities' => $unreadEntities,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,8 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
|
||||
use App\Services\ActivityService;
|
||||
|
||||
class DynamicController extends Controller
|
||||
{
|
||||
use AuthorizesRequests;
|
||||
@@ -44,10 +46,12 @@ class DynamicController extends Controller
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(Dynamic $dynamic)
|
||||
public function show(Dynamic $dynamic, ActivityService $activityService)
|
||||
{
|
||||
$this->authorize('view', $dynamic);
|
||||
|
||||
$activityService->updateCursor(auth()->user(), $dynamic);
|
||||
|
||||
$dynamic->load([
|
||||
'ledgers.media',
|
||||
'participants',
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use App\Http\Requests\StoreLedgerRequest;
|
||||
use App\Models\Dynamic;
|
||||
use App\Models\Ledger;
|
||||
use App\Services\ActivityService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Inertia\Inertia;
|
||||
@@ -53,10 +54,12 @@ class LedgerController extends Controller
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(Request $request, Dynamic $dynamic, Ledger $ledger)
|
||||
public function show(Request $request, Dynamic $dynamic, Ledger $ledger, ActivityService $activityService)
|
||||
{
|
||||
$this->authorize('view', $ledger);
|
||||
|
||||
$activityService->updateCursor($request->user(), $ledger);
|
||||
|
||||
$dynamic->load('chat', 'participants');
|
||||
|
||||
$ledger->load([
|
||||
|
||||
@@ -42,6 +42,14 @@ class HandleInertiaRequests extends Middleware
|
||||
'user' => $request->user(),
|
||||
],
|
||||
'sidebarOpen' => ! $request->hasCookie('sidebar_state') || $request->cookie('sidebar_state') === 'true',
|
||||
'unreadNotificationsCount' => function () use ($request) {
|
||||
if (! $request->user()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$service = app(\App\Services\ActivityService::class);
|
||||
return count($service->getUnreadEntitiesGrouped($request->user()));
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user