diff --git a/site/.storybook/preview.jsx b/site/.storybook/preview.jsx index dce12e9ca603c..b84e9d25caa48 100644 --- a/site/.storybook/preview.jsx +++ b/site/.storybook/preview.jsx @@ -5,7 +5,6 @@ import { HelmetProvider } from "react-helmet-async" import { dark } from "../src/theme" import "../src/theme/globalFonts" import "../src/i18n" -import { LocalPreferencesProvider } from "../src/contexts/LocalPreferencesContext" export const decorators = [ (Story) => ( @@ -24,13 +23,6 @@ export const decorators = [ ) }, - (Story) => { - return ( - - - - ) - }, ] export const parameters = { diff --git a/site/src/app.tsx b/site/src/app.tsx index 1b14863e6b3f9..af58e5641b2b0 100644 --- a/site/src/app.tsx +++ b/site/src/app.tsx @@ -9,7 +9,6 @@ import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar" import { dark } from "./theme" import "./theme/globalFonts" import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles" -import { LocalPreferencesProvider } from "contexts/LocalPreferencesContext" const queryClient = new QueryClient({ defaultOptions: { @@ -26,19 +25,17 @@ export const AppProviders: FC = ({ children }) => { return ( - - - - - - - {children} - - - - - - + + + + + + {children} + + + + + ) diff --git a/site/src/components/Workspace/Workspace.tsx b/site/src/components/Workspace/Workspace.tsx index dae6ab8545132..63effb681752e 100644 --- a/site/src/components/Workspace/Workspace.tsx +++ b/site/src/components/Workspace/Workspace.tsx @@ -71,8 +71,6 @@ export interface WorkspaceProps { quota_budget?: number handleBuildRetry: () => void buildLogs?: React.ReactNode - canChangeBuildLogsVisibility: boolean - isWorkspaceBuildLogsUIActive: boolean } /** @@ -106,8 +104,6 @@ export const Workspace: FC> = ({ handleBuildRetry, templateWarnings, buildLogs, - canChangeBuildLogsVisibility, - isWorkspaceBuildLogsUIActive, }) => { const styles = useStyles() const navigate = useNavigate() @@ -211,8 +207,6 @@ export const Workspace: FC> = ({ canChangeVersions={canChangeVersions} isUpdating={isUpdating} isRestarting={isRestarting} - canChangeBuildLogsVisibility={canChangeBuildLogsVisibility} - isWorkspaceBuildLogsUIActive={isWorkspaceBuildLogsUIActive} /> diff --git a/site/src/components/WorkspaceActions/WorkspaceActions.tsx b/site/src/components/WorkspaceActions/WorkspaceActions.tsx index 248ed96fe71bf..f874b606658ff 100644 --- a/site/src/components/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/components/WorkspaceActions/WorkspaceActions.tsx @@ -22,10 +22,6 @@ import SettingsOutlined from "@mui/icons-material/SettingsOutlined" import HistoryOutlined from "@mui/icons-material/HistoryOutlined" import DeleteOutlined from "@mui/icons-material/DeleteOutlined" import IconButton from "@mui/material/IconButton" -import Divider from "@mui/material/Divider" -import VisibilityOffOutlined from "@mui/icons-material/VisibilityOffOutlined" -import VisibilityOutlined from "@mui/icons-material/VisibilityOutlined" -import { useLocalPreferences } from "contexts/LocalPreferencesContext" export interface WorkspaceActionsProps { workspaceStatus: WorkspaceStatus @@ -42,8 +38,6 @@ export interface WorkspaceActionsProps { isRestarting: boolean children?: ReactNode canChangeVersions: boolean - canChangeBuildLogsVisibility: boolean - isWorkspaceBuildLogsUIActive: boolean } export const WorkspaceActions: FC = ({ @@ -60,8 +54,6 @@ export const WorkspaceActions: FC = ({ isUpdating, isRestarting, canChangeVersions, - canChangeBuildLogsVisibility, - isWorkspaceBuildLogsUIActive, }) => { const styles = useStyles() const { @@ -72,9 +64,6 @@ export const WorkspaceActions: FC = ({ const canBeUpdated = isOutdated && canAcceptJobs const menuTriggerRef = useRef(null) const [isMenuOpen, setIsMenuOpen] = useState(false) - const localPreferences = useLocalPreferences() - const isBuildLogsVisible = - localPreferences.getPreference("buildLogsVisibility") === "visible" // A mapping of button type to the corresponding React component const buttonMapping: ButtonMapping = { @@ -151,39 +140,6 @@ export const WorkspaceActions: FC = ({ Delete - - {isWorkspaceBuildLogsUIActive && ( - <> - theme.palette.divider }} /> - {isBuildLogsVisible ? ( - { - localPreferences.setPreference( - "buildLogsVisibility", - "hide", - ) - })} - > - - Hide build logs - - ) : ( - { - localPreferences.setPreference( - "buildLogsVisibility", - "visible", - ) - })} - > - - Show build logs - - )} - - )} diff --git a/site/src/contexts/LocalPreferencesContext.tsx b/site/src/contexts/LocalPreferencesContext.tsx deleted file mode 100644 index 164fff495fdfd..0000000000000 --- a/site/src/contexts/LocalPreferencesContext.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { - ReactNode, - createContext, - useCallback, - useContext, - useEffect, - useState, -} from "react" - -const LOCAL_PREFERENCES_KEY = "local-preferences" - -const defaultValues = { - buildLogsVisibility: "visible" as "visible" | "hide", -} - -type LocalPreferencesValues = typeof defaultValues -type LocalPreference = keyof LocalPreferencesValues -type LocalPreferenceContextValues = { - values: LocalPreferencesValues - getPreference: ( - name: LocalPreference, - ) => LocalPreferencesValues[LocalPreference] - setPreference: ( - name: LocalPreference, - value: LocalPreferencesValues[LocalPreference], - ) => void -} - -const LocalPreferencesContext = createContext< - LocalPreferenceContextValues | undefined ->(undefined) - -export const LocalPreferencesProvider = ({ - children, -}: { - children: ReactNode -}) => { - const [state, setState] = useState<{ - ready: boolean - values: LocalPreferencesValues - }>({ ready: false, values: defaultValues }) - - useEffect(() => { - const preferencesStr = window.localStorage.getItem(LOCAL_PREFERENCES_KEY) - if (preferencesStr) { - try { - const values = JSON.parse(preferencesStr) - setState({ ...values, ready: true }) - return - } catch (error) { - console.warn( - "Error on parsing local preferences. Default values are used.", - ) - } - } - - setState((state) => ({ ...state, ready: true })) - }, []) - - const getPreference: LocalPreferenceContextValues["getPreference"] = - useCallback( - (name) => { - return state.values[name] - }, - [state.values], - ) - - const setPreference: LocalPreferenceContextValues["setPreference"] = - useCallback((name, value) => { - setState((state) => { - const newState = { - ...state, - values: { - ...state.values, - [name]: value, - }, - } - window.localStorage.setItem( - LOCAL_PREFERENCES_KEY, - JSON.stringify(newState), - ) - return newState - }) - }, []) - - return ( - - {children} - - ) -} - -export const useLocalPreferences = () => { - const context = useContext(LocalPreferencesContext) - if (context === undefined) { - throw new Error( - "useLocalPreference must be used within a LocalPreferenceProvider", - ) - } - return context -} diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx index acc5208093213..8d02ed36ca46d 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx @@ -1,7 +1,4 @@ -import CloseOutlined from "@mui/icons-material/CloseOutlined" import Box from "@mui/material/Box" -import IconButton from "@mui/material/IconButton" -import Tooltip from "@mui/material/Tooltip" import { ProvisionerJobLog } from "api/typesGenerated" import { Loader } from "components/Loader/Loader" import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs" @@ -9,10 +6,8 @@ import { useRef, useEffect } from "react" export const WorkspaceBuildLogsSection = ({ logs, - onHide, }: { logs: ProvisionerJobLog[] | undefined - onHide?: () => void }) => { const scrollRef = useRef(null) @@ -43,24 +38,6 @@ export const WorkspaceBuildLogsSection = ({ })} > Build logs - {onHide && ( - - - ({ - color: theme.palette.text.secondary, - "&:hover": { - color: theme.palette.text.primary, - }, - })} - > - - - - - )} { - if (canChangeBuildLogsVisibility) { - localPreferences.setPreference("buildLogsVisibility", "hide") - } - }} - /> + ) } />