1
0
mirror of https://github.com/flarum/core.git synced 2025-08-07 08:56:38 +02:00

fix: respect user theme preference (#4033)

This commit is contained in:
Ngô Quốc Đạt
2024-09-28 19:56:45 +07:00
committed by GitHub
parent 077363a085
commit feca3d0da6
3 changed files with 8 additions and 2 deletions

View File

@@ -377,7 +377,7 @@ export default class Application {
}
private initColorScheme(forumDefault: string | null = null): void {
forumDefault ??= document.documentElement.getAttribute('data-theme') ?? 'auto';
forumDefault ??= app.forum.attribute('colorScheme') ?? 'auto';
this.allowUserColorScheme = forumDefault === 'auto';
const userConfiguredPreference = this.session.user?.preferences()?.colorScheme;

View File

@@ -101,6 +101,8 @@ class ForumResource extends AbstractResource implements Findable
->get(fn () => $this->settings->get('theme_primary_color')),
Schema\Str::make('themeSecondaryColor')
->get(fn () => $this->settings->get('theme_secondary_color')),
Schema\Str::make('colorScheme')
->get(fn () => $this->settings->get('color_scheme')),
Schema\Str::make('logoUrl')
->get(fn () => $this->getLogoUrl()),
Schema\Str::make('faviconUrl')

View File

@@ -102,7 +102,11 @@ class FrontendServiceProvider extends AbstractServiceProvider
$settings = $container->make(SettingsRepositoryInterface::class);
// Add document classes/attributes for design use cases.
$document->extraAttributes['data-theme'] = $settings->get('color_scheme');
$document->extraAttributes['data-theme'] = function (ServerRequestInterface $request) use ($settings) {
return $settings->get('color_scheme') === 'auto'
? RequestUtil::getActor($request)->getPreference('colorScheme')
: $settings->get('color_scheme');
};
$document->extraAttributes['data-colored-header'] = $settings->get('theme_colored_header') ? 'true' : 'false';
$document->extraAttributes['class'][] = function (ServerRequestInterface $request) {
return RequestUtil::getActor($request)->isGuest() ? 'guest-user' : 'logged-in';