mirror of
https://github.com/nextcloud/server.git
synced 2026-04-20 22:00:39 -04:00
fix(theming): Conitionally disable blur filter for performance
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
parent
9972589cad
commit
697a963243
7 changed files with 42 additions and 27 deletions
|
|
@ -7,6 +7,7 @@ declare(strict_types=1);
|
|||
*/
|
||||
namespace OCA\Theming\Themes;
|
||||
|
||||
use OC\AppFramework\Http\Request;
|
||||
use OCA\Theming\ImageManager;
|
||||
use OCA\Theming\ITheme;
|
||||
use OCA\Theming\ThemingDefaults;
|
||||
|
|
@ -14,41 +15,27 @@ use OCA\Theming\Util;
|
|||
use OCP\App\IAppManager;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class DefaultTheme implements ITheme {
|
||||
use CommonThemeTrait;
|
||||
|
||||
public Util $util;
|
||||
public ThemingDefaults $themingDefaults;
|
||||
public IUserSession $userSession;
|
||||
public IURLGenerator $urlGenerator;
|
||||
public ImageManager $imageManager;
|
||||
public IConfig $config;
|
||||
public IL10N $l;
|
||||
public IAppManager $appManager;
|
||||
|
||||
public string $defaultPrimaryColor;
|
||||
public string $primaryColor;
|
||||
|
||||
public function __construct(Util $util,
|
||||
ThemingDefaults $themingDefaults,
|
||||
IUserSession $userSession,
|
||||
IURLGenerator $urlGenerator,
|
||||
ImageManager $imageManager,
|
||||
IConfig $config,
|
||||
IL10N $l,
|
||||
IAppManager $appManager) {
|
||||
$this->util = $util;
|
||||
$this->themingDefaults = $themingDefaults;
|
||||
$this->userSession = $userSession;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
$this->imageManager = $imageManager;
|
||||
$this->config = $config;
|
||||
$this->l = $l;
|
||||
$this->appManager = $appManager;
|
||||
|
||||
public function __construct(
|
||||
public Util $util,
|
||||
public ThemingDefaults $themingDefaults,
|
||||
public IUserSession $userSession,
|
||||
public IURLGenerator $urlGenerator,
|
||||
public ImageManager $imageManager,
|
||||
public IConfig $config,
|
||||
public IL10N $l,
|
||||
public IAppManager $appManager,
|
||||
private ?IRequest $request,
|
||||
) {
|
||||
$this->defaultPrimaryColor = $this->themingDefaults->getDefaultColorPrimary();
|
||||
$this->primaryColor = $this->themingDefaults->getColorPrimary();
|
||||
}
|
||||
|
|
@ -96,12 +83,29 @@ class DefaultTheme implements ITheme {
|
|||
$colorSuccess = '#2d7b41';
|
||||
$colorInfo = '#0071ad';
|
||||
|
||||
$user = $this->userSession->getUser();
|
||||
// Chromium based browsers currently (2024) have huge performance issues with blur filters
|
||||
$isChromium = $this->request !== null && $this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_MS_EDGE]);
|
||||
// Ignore MacOS because they always have hardware accelartion
|
||||
$isChromium = $isChromium && !$this->request->isUserAgent(['/Macintosh/']);
|
||||
// Allow to force the blur filter
|
||||
$forceEnableBlur = $user === null ? false : $this->config->getUserValue(
|
||||
$user->getUID(),
|
||||
'theming',
|
||||
'force_enable_blur_filter',
|
||||
);
|
||||
$workingBlur = match($forceEnableBlur) {
|
||||
'yes' => true,
|
||||
'no' => false,
|
||||
default => !$isChromium
|
||||
};
|
||||
|
||||
$variables = [
|
||||
'--color-main-background' => $colorMainBackground,
|
||||
'--color-main-background-rgb' => $colorMainBackgroundRGB,
|
||||
'--color-main-background-translucent' => 'rgba(var(--color-main-background-rgb), .97)',
|
||||
'--color-main-background-blur' => 'rgba(var(--color-main-background-rgb), .8)',
|
||||
'--filter-background-blur' => 'blur(25px)',
|
||||
'--filter-background-blur' => $workingBlur ? 'blur(25px)' : 'none',
|
||||
|
||||
// to use like this: background-image: linear-gradient(0, var('--gradient-main-background));
|
||||
'--gradient-main-background' => 'var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%',
|
||||
|
|
|
|||
|
|
@ -315,6 +315,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
'light' => new LightTheme(
|
||||
$util,
|
||||
|
|
@ -325,6 +326,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
'dark' => new DarkTheme(
|
||||
$util,
|
||||
|
|
@ -335,6 +337,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
'light-highcontrast' => new HighContrastTheme(
|
||||
$util,
|
||||
|
|
@ -345,6 +348,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
'dark-highcontrast' => new DarkHighContrastTheme(
|
||||
$util,
|
||||
|
|
@ -355,6 +359,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
'opendyslexic' => new DyslexiaFont(
|
||||
$util,
|
||||
|
|
@ -365,6 +370,7 @@ class ThemesServiceTest extends TestCase {
|
|||
$this->config,
|
||||
$l10n,
|
||||
$appManager,
|
||||
null,
|
||||
),
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ class DarkHighContrastThemeTest extends AccessibleThemeTestCase {
|
|||
$this->config,
|
||||
$this->l10n,
|
||||
$this->appManager,
|
||||
null,
|
||||
);
|
||||
|
||||
parent::setUp();
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ class DarkThemeTest extends AccessibleThemeTestCase {
|
|||
$this->config,
|
||||
$this->l10n,
|
||||
$this->appManager,
|
||||
null,
|
||||
);
|
||||
|
||||
parent::setUp();
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ class DefaultThemeTest extends AccessibleThemeTestCase {
|
|||
$this->config,
|
||||
$this->l10n,
|
||||
$this->appManager,
|
||||
null,
|
||||
);
|
||||
|
||||
parent::setUp();
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ class DyslexiaFontTest extends TestCase {
|
|||
$this->config,
|
||||
$this->l10n,
|
||||
$this->appManager,
|
||||
null,
|
||||
);
|
||||
|
||||
parent::setUp();
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ class HighContrastThemeTest extends AccessibleThemeTestCase {
|
|||
$this->config,
|
||||
$this->l10n,
|
||||
$this->appManager,
|
||||
null,
|
||||
);
|
||||
|
||||
parent::setUp();
|
||||
|
|
|
|||
Loading…
Reference in a new issue