diff --git a/src/components/App.tsx b/src/components/App.tsx index 024adb82..392e7059 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -303,9 +303,11 @@ class App extends React.Component { viewModeEnabled = false, zenModeEnabled = false, gridModeEnabled = false, + theme = defaultAppState.theme, } = props; this.state = { ...defaultAppState, + theme, isLoading: true, width, height, @@ -458,6 +460,7 @@ class App extends React.Component { showExitZenModeBtn={ typeof this.props?.zenModeEnabled === "undefined" && zenModeEnabled } + showThemeBtn={typeof this.props?.theme === "undefined"} libraryReturnUrl={this.props.libraryReturnUrl} />
@@ -519,6 +522,7 @@ class App extends React.Component { let viewModeEnabled = actionResult?.appState?.viewModeEnabled || false; let zenModeEnabled = actionResult?.appState?.zenModeEnabled || false; let gridSize = actionResult?.appState?.gridSize || null; + let theme = actionResult?.appState?.theme || "light"; if (typeof this.props.viewModeEnabled !== "undefined") { viewModeEnabled = this.props.viewModeEnabled; @@ -532,6 +536,10 @@ class App extends React.Component { gridSize = this.props.gridModeEnabled ? GRID_SIZE : null; } + if (typeof this.props.theme !== "undefined") { + theme = this.props.theme; + } + this.setState( (state) => { // using Object.assign instead of spread to fool TS 4.2.2+ into @@ -547,6 +555,7 @@ class App extends React.Component { viewModeEnabled, zenModeEnabled, gridSize, + theme, }); }, () => { @@ -882,6 +891,10 @@ class App extends React.Component { this.setState({ zenModeEnabled: !!this.props.zenModeEnabled }); } + if (prevProps.theme !== this.props.theme && this.props.theme) { + this.setState({ theme: this.props.theme }); + } + if (prevProps.gridModeEnabled !== this.props.gridModeEnabled) { this.setState({ gridSize: this.props.gridModeEnabled ? GRID_SIZE : null, diff --git a/src/components/BackgroundPickerAndDarkModeToggle.tsx b/src/components/BackgroundPickerAndDarkModeToggle.tsx index 3fb03a70..a5e0e668 100644 --- a/src/components/BackgroundPickerAndDarkModeToggle.tsx +++ b/src/components/BackgroundPickerAndDarkModeToggle.tsx @@ -7,20 +7,24 @@ export const BackgroundPickerAndDarkModeToggle = ({ appState, setAppState, actionManager, + showThemeBtn, }: { actionManager: ActionManager; appState: AppState; setAppState: React.Component["setState"]; + showThemeBtn: boolean; }) => (
{actionManager.renderAction("changeViewBackgroundColor")} -
- { - setAppState({ theme }); - }} - /> -
+ {showThemeBtn && ( +
+ { + setAppState({ theme }); + }} + /> +
+ )}
); diff --git a/src/components/DarkModeToggle.tsx b/src/components/DarkModeToggle.tsx index 06d02a64..bb649870 100644 --- a/src/components/DarkModeToggle.tsx +++ b/src/components/DarkModeToggle.tsx @@ -20,7 +20,8 @@ export const DarkModeToggle = (props: { return (