diff --git a/src/components/containers/Authorized/index.tsx b/src/components/containers/Authorized/index.tsx new file mode 100644 index 00000000..e0b6085b --- /dev/null +++ b/src/components/containers/Authorized/index.tsx @@ -0,0 +1,15 @@ +import React, { FC } from 'react'; +import { useShallowSelect } from '~/utils/hooks/useShallowSelect'; +import { selectUser } from '~/redux/auth/selectors'; + +interface IProps {} + +const Authorized: FC<IProps> = ({ children }) => { + const user = useShallowSelect(selectUser); + + if (!user.is_user) return null; + + return <>{children}</>; +}; + +export { Authorized }; diff --git a/src/components/editors/EditorPublicSwitch/index.tsx b/src/components/editors/EditorPublicSwitch/index.tsx index 71c1fef2..627316fb 100644 --- a/src/components/editors/EditorPublicSwitch/index.tsx +++ b/src/components/editors/EditorPublicSwitch/index.tsx @@ -14,29 +14,27 @@ const EditorPublicSwitch: FC<IProps> = ({ data, setData }) => { ]); return ( - <Superpower> - <Button - color={data.is_promoted ? 'primary' : 'lab'} - type="button" - size="giant" - label={ - data.is_promoted - ? 'Доступно всем на главной странице' - : 'Видно только сотрудникам в лаборатории' - } - onClick={onChange} - className={styles.button} - round - > - {data.is_promoted ? ( - <Icon icon="waves" size={24} /> - ) : ( - <div className={styles.lab_wrapper}> - <Icon icon="lab" size={24} /> - </div> - )} - </Button> - </Superpower> + <Button + color={data.is_promoted ? 'primary' : 'lab'} + type="button" + size="giant" + label={ + data.is_promoted + ? 'Доступно всем на главной странице' + : 'Видно только сотрудникам в лаборатории' + } + onClick={onChange} + className={styles.button} + round + > + {data.is_promoted ? ( + <Icon icon="waves" size={24} /> + ) : ( + <div className={styles.lab_wrapper}> + <Icon icon="lab" size={24} /> + </div> + )} + </Button> ); }; diff --git a/src/components/main/Header/index.tsx b/src/components/main/Header/index.tsx index 3f6cd6d9..21eb7cea 100644 --- a/src/components/main/Header/index.tsx +++ b/src/components/main/Header/index.tsx @@ -1,15 +1,14 @@ -import React, { FC, useCallback, memo, useState, useEffect, useMemo } from 'react'; +import React, { FC, memo, useCallback, useEffect, useMemo, useState } from 'react'; import { connect } from 'react-redux'; import { push as historyPush } from 'connected-react-router'; import { Link } from 'react-router-dom'; import { Logo } from '~/components/main/Logo'; import { Filler } from '~/components/containers/Filler'; -import { selectUser, selectAuthUpdates } from '~/redux/auth/selectors'; +import { selectAuthUpdates, selectUser } from '~/redux/auth/selectors'; import { Group } from '~/components/containers/Group'; import { DIALOGS } from '~/redux/modal/constants'; -import { pick } from 'ramda'; -import { path } from 'ramda'; +import { path, pick } from 'ramda'; import { UserButton } from '../UserButton'; import { Notifications } from '../Notifications'; import { URLS } from '~/constants/urls'; @@ -21,7 +20,7 @@ import * as MODAL_ACTIONS from '~/redux/modal/actions'; import * as AUTH_ACTIONS from '~/redux/auth/actions'; import { IState } from '~/redux/store'; import isBefore from 'date-fns/isBefore'; -import { Superpower } from '~/components/boris/Superpower'; +import { Authorized } from '~/components/containers/Authorized'; const mapStateToProps = (state: IState) => ({ user: pick(['username', 'is_user', 'photo', 'last_seen_boris'])(selectUser(state)), @@ -90,14 +89,14 @@ const HeaderUnconnected: FC<IProps> = memo( ФЛОУ </Link> - <Superpower> + <Authorized> <Link className={classNames(styles.item, { [styles.is_active]: pathname === URLS.BASE })} to={URLS.LAB} > ЛАБ </Link> - </Superpower> + </Authorized> <Link className={classNames(styles.item, {