Picking the default theme from the user preferences on reload when it is a plugin (#923)
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
This commit is contained in:
parent
ca40dda8f8
commit
ea140ba99b
2 changed files with 35 additions and 0 deletions
|
@ -6,6 +6,7 @@ import {Provider as ReduxProvider} from 'react-redux'
|
||||||
import {useHistory} from 'mm-react-router-dom'
|
import {useHistory} from 'mm-react-router-dom'
|
||||||
|
|
||||||
import {GlobalState} from 'mattermost-redux/types/store'
|
import {GlobalState} from 'mattermost-redux/types/store'
|
||||||
|
import {getTheme} from 'mattermost-redux/selectors/entities/preferences'
|
||||||
|
|
||||||
const windowAny = (window as any)
|
const windowAny = (window as any)
|
||||||
windowAny.baseURL = '/plugins/focalboard'
|
windowAny.baseURL = '/plugins/focalboard'
|
||||||
|
@ -16,6 +17,7 @@ import App from '../../../webapp/src/app'
|
||||||
import store from '../../../webapp/src/store'
|
import store from '../../../webapp/src/store'
|
||||||
import GlobalHeader from '../../../webapp/src/components/globalHeader/globalHeader'
|
import GlobalHeader from '../../../webapp/src/components/globalHeader/globalHeader'
|
||||||
import FocalboardIcon from '../../../webapp/src/widgets/icons/logo'
|
import FocalboardIcon from '../../../webapp/src/widgets/icons/logo'
|
||||||
|
import {setMattermostTheme} from '../../../webapp/src/theme'
|
||||||
|
|
||||||
import '../../../webapp/src/styles/focalboard-variables.scss'
|
import '../../../webapp/src/styles/focalboard-variables.scss'
|
||||||
import '../../../webapp/src/styles/main.scss'
|
import '../../../webapp/src/styles/main.scss'
|
||||||
|
@ -81,6 +83,16 @@ export default class Plugin {
|
||||||
public async initialize(registry: PluginRegistry, store: Store<GlobalState, Action<Record<string, unknown>>>) {
|
public async initialize(registry: PluginRegistry, store: Store<GlobalState, Action<Record<string, unknown>>>) {
|
||||||
this.registry = registry
|
this.registry = registry
|
||||||
|
|
||||||
|
let theme = getTheme(store.getState())
|
||||||
|
setMattermostTheme(theme)
|
||||||
|
store.subscribe(() => {
|
||||||
|
const currentTheme = getTheme(store.getState())
|
||||||
|
if (currentTheme !== theme && currentTheme) {
|
||||||
|
setMattermostTheme(currentTheme)
|
||||||
|
theme = currentTheme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
if (this.registry.registerProduct) {
|
if (this.registry.registerProduct) {
|
||||||
windowAny.frontendBaseURL = '/boards'
|
windowAny.frontendBaseURL = '/boards'
|
||||||
const goToFocalboardWorkspace = () => {
|
const goToFocalboardWorkspace = () => {
|
||||||
|
|
|
@ -169,6 +169,29 @@ export function setTheme(theme: Theme | null): Theme {
|
||||||
return consolidatedTheme
|
return consolidatedTheme
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setMattermostTheme(theme: any): Theme {
|
||||||
|
document.documentElement.style.setProperty('--center-channel-bg-rgb', color(theme.centerChannelBg).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--center-channel-color-rgb', color(theme.centerChannelColor).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--button-bg-rgb', color(theme.buttonBg).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--button-color-rgb', color(theme.buttonColor).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--sidebar-bg-rgb', color(theme.sidebarBg).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--sidebar-text-rgb', color(theme.sidebarText).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--link-color-rgb', color(theme.linkColor).rgb().array().join(', '))
|
||||||
|
document.documentElement.style.setProperty('--sidebar-text-active-border', color(theme.sidebarTextActiveBorder).rgb().array().join(', '))
|
||||||
|
|
||||||
|
return setTheme({
|
||||||
|
...defaultTheme,
|
||||||
|
mainBg: color(theme.centerChannelBg).rgb().array().join(', '),
|
||||||
|
mainFg: color(theme.centerChannelColor).rgb().array().join(', '),
|
||||||
|
buttonBg: color(theme.buttonBg).rgb().array().join(', '),
|
||||||
|
buttonFg: color(theme.buttonColor).rgb().array().join(', '),
|
||||||
|
sidebarBg: color(theme.sidebarBg).rgb().array().join(', '),
|
||||||
|
sidebarFg: color(theme.sidebarColor || '#ffffff').rgb().array().join(', '),
|
||||||
|
sidebarTextActiveBorder: color(theme.sidebarTextActiveBorder).rgb().array().join(', '),
|
||||||
|
link: color(theme.linkColor).rgb().array().join(', '),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function setActiveThemeName(consolidatedTheme: Theme, theme: Theme | null) {
|
function setActiveThemeName(consolidatedTheme: Theme, theme: Theme | null) {
|
||||||
if (theme === null) {
|
if (theme === null) {
|
||||||
activeThemeName = systemThemeName
|
activeThemeName = systemThemeName
|
||||||
|
|
Loading…
Reference in a new issue