lastfmService = $lastfmService; $this->youTubeService = $youTubeService; $this->iTunesService = $iTunesService; $this->mediaCacheService = $mediaCacheService; $this->settingRepository = $settingRepository; $this->playlistRepository = $playlistRepository; $this->interactionRepository = $interactionRepository; $this->userRepository = $userRepository; $this->applicationInformationService = $applicationInformationService; } /** * Get a set of application data. * * @return JsonResponse */ public function index(Request $request) { return response()->json($this->mediaCacheService->get() + [ 'settings' => $request->user()->is_admin ? $this->settingRepository->getAllAsKeyValueArray() : [], 'playlists' => $this->playlistRepository->getAllByCurrentUser(), 'interactions' => $this->interactionRepository->getAllByCurrentUser(), 'recentlyPlayed' => $this->interactionRepository->getRecentlyPlayed( $request->user(), self::RECENTLY_PLAYED_EXCERPT_COUNT ), 'users' => $request->user()->is_admin ? $this->userRepository->getAll() : [], 'currentUser' => $request->user(), 'useLastfm' => $this->lastfmService->used(), 'useYouTube' => $this->youTubeService->enabled(), 'useiTunes' => $this->iTunesService->used(), 'allowDownload' => config('koel.download.allow'), 'supportsTranscoding' => config('koel.streaming.ffmpeg_path') && is_executable(config('koel.streaming.ffmpeg_path')), 'cdnUrl' => app()->staticUrl(), 'currentVersion' => Application::KOEL_VERSION, 'latestVersion' => $request->user()->is_admin ? $this->applicationInformationService->getLatestVersionNumber() : Application::KOEL_VERSION, ]); } }