diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 358e6d5..138d77a 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace OCA\MinimalProfile\AppInfo; -use OCA\MinimalProfile\Service\Config; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; @@ -24,56 +23,39 @@ class Application extends App implements IBootstrap { } public function register(IRegistrationContext $context): void { - $context->registerService(Config::class, function($c) { - return new Config($c->get(IConfig::class)); - }); - $context->registerEventListener( - TemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS, - TemplateListener::class + TemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN, + function(Event $event) { + if ($event instanceof TemplateResponse) { + $config = $event->getAppContainer()->query(IConfig::class); + $value = $config->getAppValue('minimalprofile', 'hidden_fields', ''); + $hidden = ($value !== '') ? json_decode($value, true) ?? [] : []; + + $css = ''; + if (!empty($hidden)) { + $selectors = [ + 'pronouns' => '#account-property-pronouns', + 'role' => '#account-property-role', + 'headline' => '#account-property-headline', + ]; + foreach ($hidden as $field) { + if (isset($selectors[$field])) { + $css .= $selectors[$field] . ' { display: none !important; }' . "\n"; + $css .= '.personal-settings-setting-box:has(' . $selectors[$field] . ') { display: none !important; }' . "\n"; + } + } + } + + if ($css) { + Util::addInlineStyle($css); + } + + file_put_contents('/tmp/minimalprofile.log', date('Y-m-d H:i:s') . ' EVENT fired, hidden: ' . print_r($hidden, true) . "\n", FILE_APPEND); + } + } ); } public function boot(IBootContext $context): void { } -} - -class TemplateListener implements IEventListener { - - private Config $config; - - public function __construct(Config $config) { - $this->config = $config; - } - - public function handle(Event $event): void { - if (!($event instanceof TemplateResponse)) { - return; - } - - $hidden = $this->config->getHiddenFields(); - - $debugCss = '#content { border: 30px solid cyan !important; }'; - Util::addInlineStyle($debugCss); - - $css = ''; - if (!empty($hidden)) { - $selectors = [ - 'pronouns' => '#account-property-pronouns', - 'role' => '#account-property-role', - 'headline' => '#account-property-headline', - ]; - foreach ($hidden as $field) { - if (isset($selectors[$field])) { - $css .= $selectors[$field] . ' { display: none !important; }' . "\n"; - } - } - } - - if ($css) { - Util::addInlineStyle($css); - } - - file_put_contents('/tmp/minimalprofile_debug.log', date('Y-m-d H:i:s') . ' TemplateListener ran, hidden: ' . print_r($hidden, true) . "\n", FILE_APPEND); - } } \ No newline at end of file