1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 12:56:41 +07:00

removed node reducer

This commit is contained in:
Fedor Katurov 2022-01-02 20:59:09 +07:00
parent 168ba8cc04
commit 8d2b56cafc
14 changed files with 62 additions and 208 deletions

View file

@ -1,27 +0,0 @@
import React, { FC, memo } from 'react';
import styles from './styles.module.scss';
import { createPortal } from 'react-dom';
import { selectNode } from '~/redux/node/selectors';
import { connect } from 'react-redux';
import { pick } from 'ramda';
import { getURL } from '~/utils/dom';
import { PRESETS } from '~/constants/urls';
const mapStateToProps = state => pick(['current_cover_image'], selectNode(state));
type IProps = ReturnType<typeof mapStateToProps> & {};
const PageCoverUnconnected: FC<IProps> = memo(({ current_cover_image }) =>
current_cover_image
? createPortal(
<div
className={styles.wrap}
style={{ backgroundImage: `url("${getURL(current_cover_image, PRESETS.cover)}")` }}
/>,
document.body
)
: null
);
const PageCover = connect(mapStateToProps)(PageCoverUnconnected);
export { PageCover };

View file

@ -0,0 +1,39 @@
import React, { createContext, FC, memo, useContext, useState } from 'react';
import styles from './styles.module.scss';
import { createPortal } from 'react-dom';
import { getURL } from '~/utils/dom';
import { PRESETS } from '~/constants/urls';
import { IFile } from '~/redux/types';
interface CoverContextValue {
cover: IFile | null;
setCover: (cover: IFile | null) => void;
}
const CoverContext = createContext<CoverContextValue>({
cover: null,
setCover: () => {},
});
const PageCoverProvider: FC = ({ children }) => {
const [cover, setCover] = useState<IFile | null>(null);
return (
<CoverContext.Provider value={{ cover, setCover }}>
{!!cover &&
createPortal(
<div
className={styles.wrap}
style={{ backgroundImage: `url("${getURL(cover, PRESETS.cover)}")` }}
/>,
document.body
)}
{children}
</CoverContext.Provider>
);
};
const usePageCoverContext = () => useContext(CoverContext);
export { PageCoverProvider, usePageCoverContext };

View file

@ -0,0 +1,12 @@
import { useEffect } from 'react';
import { IFile } from '~/redux/types';
import { usePageCoverContext } from '~/components/containers/PageCoverProvider/index';
export const usePageCover = (cover?: IFile) => {
const { setCover } = usePageCoverContext();
useEffect(() => {
setCover(cover || null);
return () => setCover(null);
}, [setCover, cover]);
};