$request->userAgent(), 'ip_address' => get_current_ip(), 'platform' => 'web', // Default for now, can be enhanced for mobile detection ]; } /** * Generate a device ID from request */ public function generateDeviceId(): string { $request = request(); // Generate a consistent device ID based on session or create new one if ($request->session()->has('device_id')) { return $request->session()->get('device_id'); } $deviceId = str()->uuid()->toString(); $request->session()->put('device_id', $deviceId); return $deviceId; } /** * Track methods with auto device context */ public function trackSearch(string $searchType, string $searchQuery, ?array $searchFilters = null): void { $context = $this->getDeviceContext(); $deviceId = $this->generateDeviceId(); $this->trackSearchWithContext( $deviceId, $searchType, $searchQuery, $searchFilters, null, $context['user_agent'], $context['ip_address'], $context['platform'] ); } public function trackContentSelection(string $contentType, int $contentId, string $contentName, string $selectionMethod): void { $context = $this->getDeviceContext(); $deviceId = $this->generateDeviceId(); $this->trackContentSelectionWithContext( $deviceId, $contentType, $contentId, $contentName, $selectionMethod, null, $context['user_agent'], $context['ip_address'], $context['platform'] ); } public function trackExport(?int $memeId, ?int $memeMediaId, ?int $backgroundMediaId, array $captionTexts): void { $context = $this->getDeviceContext(); $deviceId = $this->generateDeviceId(); $this->trackExportWithContext( $deviceId, $memeId, $memeMediaId, $backgroundMediaId, $captionTexts, null, $context['user_agent'], $context['ip_address'], $context['platform'] ); } public function trackSave(?int $memeId, ?int $memeMediaId, ?int $backgroundMediaId, array $captionTexts, bool $isPremiumExport = false): void { $context = $this->getDeviceContext(); $deviceId = $this->generateDeviceId(); $this->trackSaveWithContext( $deviceId, $memeId, $memeMediaId, $backgroundMediaId, $captionTexts, $isPremiumExport, null, $context['user_agent'], $context['ip_address'], $context['platform'] ); } }