Properly calculate primary element based on background luminance

Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
pull/32681/head
John Molakvoæ 2 years ago committed by backportbot-nextcloud[bot]
parent 75df236ed0
commit 3d9e84fd3a

@ -248,7 +248,7 @@ class AccessibilityController extends Controller {
return $this->injectedVariables; return $this->injectedVariables;
} }
$variables = ''; $variables = '';
foreach ($this->defaults->getScssVariables() as $key => $value) { foreach ($this->defaults->getScssVariables(!$this->isDarkThemeEnabled()) as $key => $value) {
$variables .= '$' . $key . ': ' . $value . ';'; $variables .= '$' . $key . ': ' . $value . ';';
} }
@ -267,4 +267,18 @@ class AccessibilityController extends Controller {
} }
return $variables; return $variables;
} }
/**
* Return true if the dark theme is enabled for the current user
*/
private function isDarkThemeEnabled(): bool {
if (!$this->userSession->isLoggedIn()) {
return false;
}
$user = $this->userSession->getUser();
if (!$user) {
return false;
}
return $this->config->getUserValue($user->getUID(), $this->appName, 'theme', false) === 'dark';
}
} }

@ -301,7 +301,7 @@ class ThemingDefaults extends \OC_Defaults {
/** /**
* @return array scss variables to overwrite * @return array scss variables to overwrite
*/ */
public function getScssVariables() { public function getScssVariables(bool $brightBackground = true) {
$cacheBuster = $this->config->getAppValue('theming', 'cachebuster', '0'); $cacheBuster = $this->config->getAppValue('theming', 'cachebuster', '0');
$cache = $this->cacheFactory->createDistributed('theming-' . $cacheBuster . '-' . $this->urlGenerator->getBaseUrl()); $cache = $this->cacheFactory->createDistributed('theming-' . $cacheBuster . '-' . $this->urlGenerator->getBaseUrl());
if ($value = $cache->get('getScssVariables')) { if ($value = $cache->get('getScssVariables')) {
@ -325,7 +325,7 @@ class ThemingDefaults extends \OC_Defaults {
if ($this->config->getAppValue('theming', 'color', '') !== '') { if ($this->config->getAppValue('theming', 'color', '') !== '') {
$variables['color-primary'] = $this->getColorPrimary(); $variables['color-primary'] = $this->getColorPrimary();
$variables['color-primary-text'] = $this->getTextColorPrimary(); $variables['color-primary-text'] = $this->getTextColorPrimary();
$variables['color-primary-element'] = $this->util->elementColor($this->getColorPrimary()); $variables['color-primary-element'] = $this->util->elementColor($this->getColorPrimary(), $brightBackground);
} }
if ($this->config->getAppValue('theming', 'backgroundMime', '') === 'backgroundColor') { if ($this->config->getAppValue('theming', 'backgroundMime', '') === 'backgroundColor') {

@ -297,9 +297,9 @@ class OC_Defaults {
/** /**
* @return array scss variables to overwrite * @return array scss variables to overwrite
*/ */
public function getScssVariables() { public function getScssVariables(bool $brightBackground = true) {
if ($this->themeExist('getScssVariables')) { if ($this->themeExist('getScssVariables')) {
return $this->theme->getScssVariables(); return $this->theme->getScssVariables($brightBackground);
} }
return []; return [];
} }

@ -119,7 +119,7 @@ class OC_Theme {
* Returns variables to overload defaults from core/css/variables.scss * Returns variables to overload defaults from core/css/variables.scss
* @return array * @return array
*/ */
public function getScssVariables() { public function getScssVariables(bool $brightBackground) {
return [ return [
'color-primary' => '#745bca' 'color-primary' => '#745bca'
]; ];

Loading…
Cancel
Save