Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Extract tooltip
  • Loading branch information
BrunoQuaresma committed Feb 2, 2023
commit 148eb380c25dfb85bfca0a4e332f7fc655834c5d
60 changes: 7 additions & 53 deletions site/src/components/Resources/AgentVersion.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
import { useRef, useState, FC } from "react"
import { makeStyles } from "@material-ui/core/styles"
import RefreshIcon from "@material-ui/icons/RefreshOutlined"
import {
HelpTooltipText,
HelpPopover,
HelpTooltipTitle,
HelpTooltipAction,
HelpTooltipLinksGroup,
HelpTooltipContext,
} from "components/Tooltips/HelpTooltip"
import { WorkspaceAgent } from "api/typesGenerated"
import { getDisplayVersionStatus } from "util/workspace"
import { Stack } from "components/Stack/Stack"
import { AgentOutdatedTooltip } from "components/Tooltips/AgentOutdatedTooltip"

export const AgentVersion: FC<{
agent: WorkspaceAgent
Expand Down Expand Up @@ -43,59 +34,22 @@ export const AgentVersion: FC<{
>
Agent Outdated
</span>
<HelpPopover
<AgentOutdatedTooltip
id={id}
open={isOpen}
anchorEl={anchorRef.current}
onOpen={() => setIsOpen(true)}
onClose={() => setIsOpen(false)}
>
<HelpTooltipContext.Provider
value={{ open: isOpen, onClose: () => setIsOpen(false) }}
>
<Stack spacing={1}>
<div>
<HelpTooltipTitle>Agent Outdated</HelpTooltipTitle>
<HelpTooltipText>
This agent is an older version than the Coder server. This can
happen after you update Coder with running workspaces. To fix
this, you can stop and start the workspace.
</HelpTooltipText>
</div>

<Stack spacing={0.5}>
<span className={styles.versionLabel}>Agent version</span>
<span>{agent.version}</span>
</Stack>

<Stack spacing={0.5}>
<span className={styles.versionLabel}>Server version</span>
<span>{serverVersion}</span>
</Stack>

<HelpTooltipLinksGroup>
<HelpTooltipAction
icon={RefreshIcon}
onClick={onUpdate}
ariaLabel="Update workspace"
>
Update workspace
</HelpTooltipAction>
</HelpTooltipLinksGroup>
</Stack>
</HelpTooltipContext.Provider>
</HelpPopover>
agent={agent}
serverVersion={serverVersion}
onUpdate={onUpdate}
/>
</>
)
}

const useStyles = makeStyles((theme) => ({
const useStyles = makeStyles(() => ({
trigger: {
cursor: "pointer",
},

versionLabel: {
fontWeight: 600,
color: theme.palette.text.primary,
},
}))
82 changes: 82 additions & 0 deletions site/src/components/Tooltips/AgentOutdatedTooltip.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import { ComponentProps, FC } from "react"
import { makeStyles } from "@material-ui/core/styles"
import RefreshIcon from "@material-ui/icons/RefreshOutlined"
import {
HelpTooltipText,
HelpPopover,
HelpTooltipTitle,
HelpTooltipAction,
HelpTooltipLinksGroup,
HelpTooltipContext,
} from "components/Tooltips/HelpTooltip"
import { WorkspaceAgent } from "api/typesGenerated"
import { Stack } from "components/Stack/Stack"

type AgentOutdatedTooltipProps = ComponentProps<typeof HelpPopover> & {
agent: WorkspaceAgent
serverVersion: string
onUpdate: () => void
}

export const AgentOutdatedTooltip: FC<AgentOutdatedTooltipProps> = ({
agent,
serverVersion,
onUpdate,
onOpen,
id,
open,
onClose,
anchorEl,
}) => {
const styles = useStyles()

return (
<HelpPopover
id={id}
open={open}
anchorEl={anchorEl}
onOpen={onOpen}
onClose={onClose}
>
<HelpTooltipContext.Provider value={{ open, onClose }}>
<Stack spacing={1}>
<div>
<HelpTooltipTitle>Agent Outdated</HelpTooltipTitle>
<HelpTooltipText>
This agent is an older version than the Coder server. This can
happen after you update Coder with running workspaces. To fix
this, you can stop and start the workspace.
</HelpTooltipText>
</div>

<Stack spacing={0.5}>
<span className={styles.versionLabel}>Agent version</span>
<span>{agent.version}</span>
</Stack>

<Stack spacing={0.5}>
<span className={styles.versionLabel}>Server version</span>
<span>{serverVersion}</span>
</Stack>

<HelpTooltipLinksGroup>
<HelpTooltipAction
icon={RefreshIcon}
onClick={onUpdate}
ariaLabel="Update workspace"
>
Update workspace
</HelpTooltipAction>
</HelpTooltipLinksGroup>
</Stack>
</HelpTooltipContext.Provider>
</HelpPopover>
)
}

const useStyles = makeStyles((theme) => ({
versionLabel: {
fontWeight: 600,
color: theme.palette.text.primary,
},
}))