Skip to content

Commit

Permalink
fix: refactor dark mode
Browse files Browse the repository at this point in the history
  • Loading branch information
shanejonas committed Aug 19, 2019
1 parent 637d47f commit 4c1e947
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 21 deletions.
14 changes: 4 additions & 10 deletions src/containers/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,15 @@ import { lightTheme, darkTheme } from "../themes/openrpcTheme";
import useDarkMode from "use-dark-mode";
import Inspector from "./Inspector";

interface IProps {
url?: string;
request?: any;
darkMode?: boolean;
hideToggleTheme?: boolean;
}

const App: React.FC<IProps> = (props) => {
const darkMode = useDarkMode(props.darkMode);
const App: React.FC = () => {
const darkMode = useDarkMode();
const theme = darkMode.value ? darkTheme : lightTheme;
const reactJsonTheme = darkMode.value ? "summerfruit" : "summerfruit:inverted";

return (
<MuiThemeProvider theme={theme}>
<CssBaseline />
<Inspector />
<Inspector onToggleDarkMode={darkMode.toggle} darkMode={darkMode.value} reactJsonTheme={reactJsonTheme}/>
</MuiThemeProvider>
);
};
Expand Down
23 changes: 14 additions & 9 deletions src/containers/Inspector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import JSONRPCRequest from "./JSONRPCRequest";
import PlayCircle from "@material-ui/icons/PlayCircleFilled";
import { IconButton, AppBar, Toolbar, Typography, Button, InputBase } from "@material-ui/core";
import { Client, RequestManager, HTTPTransport, WebSocketTransport } from "@open-rpc/client-js";
import ReactJson from "react-json-view";
import useDarkMode from "use-dark-mode";
import ReactJson, { ReactJsonViewProps } from "react-json-view";
import Brightness3Icon from "@material-ui/icons/Brightness3";
import WbSunnyIcon from "@material-ui/icons/WbSunny";

Expand All @@ -14,6 +13,8 @@ interface IProps {
request?: any;
darkMode?: boolean;
hideToggleTheme?: boolean;
onToggleDarkMode?: () => void;
reactJsonTheme?: ReactJsonViewProps["theme"];
}

const useClient = (url: string): [Client] => {
Expand Down Expand Up @@ -51,8 +52,6 @@ function useCounter(defaultValue: number): [number, () => void] {
}

const Inspector: React.FC<IProps> = (props) => {
const darkMode = useDarkMode(props.darkMode);
const reactJsonTheme = darkMode.value ? "summerfruit" : "summerfruit:inverted";

const [id, incrementId] = useCounter(0);
const [json, setJson] = useState(props.request || {
Expand Down Expand Up @@ -81,9 +80,15 @@ const Inspector: React.FC<IProps> = (props) => {
setResults(undefined);
};

const handleToggleDarkMode = () => {
if (props.onToggleDarkMode) {
props.onToggleDarkMode();
}
};

return (
<div style={{ height: "100%" }}>
<AppBar position="static" elevation={0}>
<AppBar position="static" elevation={0} color="default">
<Toolbar>
<img
height="30"
Expand All @@ -107,8 +112,8 @@ const Inspector: React.FC<IProps> = (props) => {
{
props.hideToggleTheme
? null
: <IconButton onClick={darkMode.toggle}>
{darkMode.value ? <Brightness3Icon /> : <WbSunnyIcon />}
: <IconButton onClick={handleToggleDarkMode}>
{props.darkMode ? <Brightness3Icon /> : <WbSunnyIcon />}
</IconButton>
}
</Toolbar>
Expand All @@ -119,7 +124,7 @@ const Inspector: React.FC<IProps> = (props) => {
<JSONRPCRequest
json={{ ...json, id: id.toString() }}
onChange={setJson}
reactJsonTheme={reactJsonTheme}
reactJsonTheme={props.reactJsonTheme || "summerfruit:inverted"}
/>
</div>
<div style={{ height: "100%", padding: "10px", overflowY: "auto", paddingBottom: "80px" }}>
Expand All @@ -136,7 +141,7 @@ const Inspector: React.FC<IProps> = (props) => {
name={false}
displayDataTypes={false}
displayObjectSize={false}
theme={reactJsonTheme}
theme={props.reactJsonTheme || "summerfruit:inverted"}
/>}
</div>
</SplitPane >
Expand Down
4 changes: 2 additions & 2 deletions src/containers/JSONRPCRequest.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { useState } from "react";
import ReactJson from "react-json-view";
import ReactJson, { ReactJsonViewProps } from "react-json-view";

interface IProps {
json?: any;
reactJsonTheme: string;
reactJsonTheme: ReactJsonViewProps["theme"];
onChange?: (newValue: any) => void;
}

Expand Down

0 comments on commit 4c1e947

Please sign in to comment.