Skip to content

Commit 2a34e1b

Browse files
MichaelDeBoeySaraVieira
authored andcommitted
🔨 Switch Navigation to use useOvermind (codesandbox#2550)
1 parent d7aebd1 commit 2a34e1b

File tree

1 file changed

+65
-70
lines changed

1 file changed

+65
-70
lines changed
Lines changed: 65 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import React from 'react';
2-
import { inject, hooksObserver } from 'app/componentConnectors';
3-
import PlusIcon from 'react-icons/lib/go/plus';
41
import Tooltip from '@codesandbox/common/lib/components/Tooltip';
2+
import React, { FunctionComponent } from 'react';
3+
import PlusIcon from 'react-icons/lib/go/plus';
4+
5+
import { useOvermind } from 'app/overmind';
56
import getWorkspaceItems, {
67
getDisabledItems,
78
INavigationItem,
89
} from 'app/store/modules/workspace/items';
10+
911
// @ts-ignore
1012
// eslint-disable-next-line import/no-unresolved
1113
import InfoIcon from '-!svg-react-loader!@codesandbox/common/lib/icons/sandbox.svg';
@@ -24,6 +26,7 @@ import RocketIcon from '-!svg-react-loader!@codesandbox/common/lib/icons/rocket.
2426
// @ts-ignore
2527
// eslint-disable-next-line import/no-unresolved
2628
import ConfigurationIcon from '-!svg-react-loader!@codesandbox/common/lib/icons/cog.svg';
29+
2730
import { Container, IconContainer, Separator } from './elements';
2831
import ServerIcon from './ServerIcon';
2932

@@ -39,78 +42,70 @@ const IDS_TO_ICONS = {
3942
server: ServerIcon,
4043
};
4144

42-
interface IconProps {
45+
type IconProps = {
4346
item: INavigationItem;
4447
isDisabled?: boolean;
45-
store: any;
46-
signals: any;
47-
}
48+
};
49+
const IconComponent: FunctionComponent<IconProps> = ({
50+
item: { id, name },
51+
isDisabled,
52+
}) => {
53+
const {
54+
actions: {
55+
workspace: { setWorkspaceHidden, setWorkspaceItem },
56+
},
57+
state: {
58+
workspace: { openedWorkspaceItem, workspaceHidden },
59+
},
60+
} = useOvermind();
4861

49-
const IconComponent = inject('store', 'signals')(
50-
hooksObserver(
51-
({
52-
item,
53-
isDisabled,
54-
store,
55-
signals: {
56-
workspace: { setWorkspaceHidden, setWorkspaceItem },
57-
},
58-
}: IconProps) => {
59-
const { id, name } = item;
62+
const Icon = IDS_TO_ICONS[id];
63+
const selected = !workspaceHidden && id === openedWorkspaceItem;
6064

61-
const Icon = IDS_TO_ICONS[id];
62-
const selected =
63-
!store.workspace.workspaceHidden &&
64-
id === store.workspace.openedWorkspaceItem;
65-
return (
66-
<Tooltip key={id} placement="right" content={name}>
67-
<IconContainer
68-
isDisabled={isDisabled}
69-
selected={selected}
70-
onClick={() => {
71-
if (selected) {
72-
setWorkspaceHidden({ hidden: true });
73-
} else {
74-
setWorkspaceHidden({ hidden: false });
75-
setWorkspaceItem({ item: id });
76-
}
77-
}}
78-
>
79-
<Icon />
80-
</IconContainer>
81-
</Tooltip>
82-
);
83-
}
84-
)
85-
);
65+
return (
66+
<Tooltip placement="right" content={name}>
67+
<IconContainer
68+
isDisabled={isDisabled}
69+
selected={selected}
70+
onClick={() => {
71+
if (selected) {
72+
setWorkspaceHidden({ hidden: true });
73+
} else {
74+
setWorkspaceHidden({ hidden: false });
75+
setWorkspaceItem({ item: id });
76+
}
77+
}}
78+
>
79+
<Icon />
80+
</IconContainer>
81+
</Tooltip>
82+
);
83+
};
8684

87-
export const Navigation = inject('store')(
88-
hooksObserver(
89-
({
90-
topOffset,
91-
bottomOffset,
92-
store,
93-
}: {
94-
topOffset: number;
95-
bottomOffset: number;
96-
store: any;
97-
}) => {
98-
const shownItems = getWorkspaceItems(store);
99-
const disabledItems = getDisabledItems(store);
85+
type Props = {
86+
topOffset: number;
87+
bottomOffset: number;
88+
};
89+
export const Navigation: FunctionComponent<Props> = ({
90+
topOffset,
91+
bottomOffset,
92+
}) => {
93+
const { state } = useOvermind();
10094

101-
return (
102-
<Container topOffset={topOffset} bottomOffset={bottomOffset}>
103-
{shownItems.map(item => (
104-
<IconComponent key={item.id} item={item} />
105-
))}
95+
const shownItems = getWorkspaceItems(state);
96+
const disabledItems = getDisabledItems(state);
10697

107-
{disabledItems.length > 0 && <Separator />}
98+
return (
99+
<Container topOffset={topOffset} bottomOffset={bottomOffset}>
100+
{shownItems.map(item => (
101+
<IconComponent key={item.id} item={item} />
102+
))}
108103

109-
{disabledItems.map(item => (
110-
<IconComponent key={item.id} item={item} isDisabled />
111-
))}
112-
</Container>
113-
);
114-
}
115-
)
116-
);
104+
{disabledItems.length > 0 && <Separator />}
105+
106+
{disabledItems.map(item => (
107+
<IconComponent key={item.id} item={item} isDisabled />
108+
))}
109+
</Container>
110+
);
111+
};

0 commit comments

Comments
 (0)