*/ class TemplateLoader implements IEventListener { use TInitialState; public function __construct( IInitialState $initialState, ICacheFactory $memcacheFactory, Config $talkConfig, IConfig $serverConfig, private IAppManager $appManager, private IRootFolder $rootFolder, private IUserSession $userSession, IGroupManager $groupManager, protected IRequest $request, LoggerInterface $logger, ) { $this->initialState = $initialState; $this->memcacheFactory = $memcacheFactory; $this->talkConfig = $talkConfig; $this->serverConfig = $serverConfig; $this->groupManager = $groupManager; $this->logger = $logger; } /** * Loads the Talk UI in the sidebar of the Files app. * * This method should be called when handling the LoadSidebar event of the * Files app. * * @param Event $event */ #[\Override] public function handle(Event $event): void { if (!($event instanceof LoadSidebar)) { return; } if ($this->serverConfig->getAppValue('spreed', 'conversations_files', '1') !== '1') { return; } $user = $this->userSession->getUser(); if ($user instanceof IUser && $this->talkConfig->isDisabledForUser($user)) { return; } Util::addStyle(Application::APP_ID, 'talk-icons'); if (!str_starts_with($this->request->getPathInfo(), '/apps/maps')) { Util::addScript(Application::APP_ID, 'talk-files-sidebar'); Util::addStyle(Application::APP_ID, 'talk-files-sidebar'); } if ($user instanceof IUser) { $this->publishInitialStateForUser($user, $this->rootFolder, $this->appManager); } else { $this->publishInitialStateForGuest(); } } }