From 756840f17375c9c4e98fb5b451d623012a19a9bf Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Fri, 19 Mar 2021 14:15:04 +0700 Subject: [PATCH] #23 added superpowers switch --- .../boris/BorisSuperpowers/index.tsx | 27 ++++++++++++++ .../boris/BorisSuperpowers/styles.module.scss | 19 ++++++++++ src/components/boris/Superpower/index.tsx | 16 +++++++++ .../editors/EditorPublicSwitch/index.tsx | 33 +++++++++-------- src/components/input/Toggle/index.tsx | 28 +++++++++++++++ .../input/Toggle/styles.module.scss | 35 +++++++++++++++++++ src/components/main/Header/index.tsx | 5 +-- src/containers/node/BorisLayout/index.tsx | 19 ++++++++-- src/redux/auth/actions.ts | 5 +++ src/redux/auth/api.ts | 3 +- src/redux/auth/constants.ts | 1 + src/redux/auth/handlers.ts | 6 ++++ src/redux/auth/index.ts | 1 + src/redux/auth/selectors.ts | 1 + src/redux/auth/types.ts | 2 ++ src/redux/store.ts | 2 +- 16 files changed, 178 insertions(+), 25 deletions(-) create mode 100644 src/components/boris/BorisSuperpowers/index.tsx create mode 100644 src/components/boris/BorisSuperpowers/styles.module.scss create mode 100644 src/components/boris/Superpower/index.tsx create mode 100644 src/components/input/Toggle/index.tsx create mode 100644 src/components/input/Toggle/styles.module.scss diff --git a/src/components/boris/BorisSuperpowers/index.tsx b/src/components/boris/BorisSuperpowers/index.tsx new file mode 100644 index 00000000..513e36be --- /dev/null +++ b/src/components/boris/BorisSuperpowers/index.tsx @@ -0,0 +1,27 @@ +import React, { FC } from 'react'; +import styles from './styles.module.scss'; +import { Toggle } from '~/components/input/Toggle'; + +interface IProps { + active?: boolean; + onChange?: (val: boolean) => void; +} + +const BorisSuperpowers: FC = ({ active, onChange }) => ( +
+
+ +
+ +
+
Суперспособности
+ {active ? ( +
Включи, чтобы видеть будущее
+ ) : ( +
Ты видишь всё, что скрыто
+ )} +
+
+); + +export { BorisSuperpowers }; diff --git a/src/components/boris/BorisSuperpowers/styles.module.scss b/src/components/boris/BorisSuperpowers/styles.module.scss new file mode 100644 index 00000000..5ad51e85 --- /dev/null +++ b/src/components/boris/BorisSuperpowers/styles.module.scss @@ -0,0 +1,19 @@ +@import "~/styles/variables"; + +.wrap { + display: grid; + grid-template-columns: auto 1fr; + column-gap: $gap; + align-items: center; +} + +.title { + font: $font_14_semibold; + color: white; + text-transform: uppercase; +} + +.subtitle { + font: $font_12_regular; + color: transparentize(white, 0.5); +} diff --git a/src/components/boris/Superpower/index.tsx b/src/components/boris/Superpower/index.tsx new file mode 100644 index 00000000..97d97c96 --- /dev/null +++ b/src/components/boris/Superpower/index.tsx @@ -0,0 +1,16 @@ +import React, { FC, memo } from 'react'; +import { useShallowSelect } from '~/utils/hooks/useShallowSelect'; +import { selectAuthIsTester, selectUser } from '~/redux/auth/selectors'; + +interface IProps {} + +const Superpower: FC = memo(({ children }) => { + const user = useShallowSelect(selectUser); + const is_tester = useShallowSelect(selectAuthIsTester); + + if (!user || !is_tester) return null; + + return <>{children}; +}); + +export { Superpower }; diff --git a/src/components/editors/EditorPublicSwitch/index.tsx b/src/components/editors/EditorPublicSwitch/index.tsx index c654a559..3cb59e81 100644 --- a/src/components/editors/EditorPublicSwitch/index.tsx +++ b/src/components/editors/EditorPublicSwitch/index.tsx @@ -2,6 +2,7 @@ import React, { FC, useCallback, useEffect, useRef } from 'react'; import { IEditorComponentProps } from '~/redux/node/types'; import { usePopper } from 'react-popper'; import { Button } from '~/components/input/Button'; +import { Superpower } from '~/components/boris/Superpower'; interface IProps extends IEditorComponentProps {} @@ -11,24 +12,22 @@ const EditorPublicSwitch: FC = ({ data, setData }) => { setData, ]); - if (process.env.REACT_APP_LAB_ENABLED !== '1') { - return null; - } - return ( -