getXfUser( $user_id ); if( !$user ){ return response()->json(['error' => 'User not found'], 404); } return [ 'user_id' => $user_id, 'username' => $user->username, 'avatar_url' => $user->getAvatarUrl(), 'avatar_color' => XenForoHelpers::getAvatarColor( $user ), 'avatar_letter' => XenForoHelpers::getAvatarLetter( $user ), 'group_name' => $service->getXfUserGroup( $user?->user_group_id ?? 0 )?->title ?? 'Guest', 'joined' => \DateTimeImmutable::createFromTimestamp( $user->register_date ?? 0 )->format('Y-m-d'), 'last_seen' => \DateTimeImmutable::createFromTimestamp( $user->last_activity ?? 0 )->format('Y-m-d'), 'message_count' => $user->message_count, 'reaction_score' => $user->reaction_score, 'trophy_points' => $user->trophy_points, 'entries_count' => $user->rhpz_entry_count, ]; }); return response()->json( ['user' => $data] ); } public function getNotifications( Request $request ){ $service = app(XenforoApiService::class); $data = $service->getUserAlerts(\Auth::user()->user_id); return response()->json( $data ); } public function markAllRead( Request $request ){ $service = app(XenforoApiService::class); $service->markAllNotificationsRead(\Auth::user()->user_id); return response()->json( ['success' => true] ); } public function getConversations( Request $request ){ $service = app(XenforoApiService::class); $data = $service->getConversations(\Auth::user()->user_id); return response()->json( $data ); } public function activityFeed(Request $request): JsonResponse { $availableFilters = ['entries', 'news', 'messages', 'threads', 'clubs']; $requested = $request->query('filters') ? explode(',', $request->query('filters')) : []; $activeFilters = !empty($requested) ? array_intersect($requested, $availableFilters) : $availableFilters; $service = app(ActivityService::class); $items = $service->getActivities(array_values($activeFilters)); return response()->json([ 'html' => view('activity.timeline', compact('items'))->render(), ]); } }