*/ class TemplateLoader implements IEventListener { use TInitialState; public function __construct( IInitialState $initialState, ICacheFactory $memcacheFactory, Config $talkConfig, IConfig $serverConfig, IGroupManager $groupManager, LoggerInterface $logger, ) { $this->initialState = $initialState; $this->talkConfig = $talkConfig; $this->memcacheFactory = $memcacheFactory; $this->serverConfig = $serverConfig; $this->groupManager = $groupManager; $this->logger = $logger; } /** * Load the "Talk sidebar" UI in the public share page for the given share. * @param Event $event */ #[\Override] public function handle(Event $event): void { if (!$event instanceof BeforeTemplateRenderedEvent) { return; } if ($event->getScope() !== null) { // If the event has a scope, it's not the default share page, but e.g. authentication return; } if ($this->serverConfig->getAppValue('spreed', 'conversations_files', '1') !== '1' || $this->serverConfig->getAppValue('spreed', 'conversations_files_public_shares', '1') !== '1') { return; } $share = $event->getShare(); if ($share->getNodeType() !== FileInfo::TYPE_FILE) { return; } Util::addStyle(Application::APP_ID, 'talk-icons'); Util::addScript(Application::APP_ID, 'talk-public-share-sidebar'); Util::addStyle(Application::APP_ID, 'talk-public-share-sidebar'); $this->publishInitialStateForGuest(); } }