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

removed PhotoSwipeStore

This commit is contained in:
Fedor Katurov 2022-01-07 20:37:49 +07:00
parent 224c27b6f4
commit 82308d2a91
15 changed files with 90 additions and 84 deletions

View file

@ -1,13 +1,24 @@
import { useModalStore } from '~/store/modal/useModalStore';
import { useCallback } from 'react';
import { Dialog } from '~/constants/modal';
import { FC, useCallback, VFC } from 'react';
import { Dialog, DIALOG_CONTENT } from '~/constants/modal';
import { IDialogProps } from '~/types/modal';
export type DialogContentProps = {
[K in keyof typeof DIALOG_CONTENT]: typeof DIALOG_CONTENT[K] extends (props: infer U) => any
? U extends IDialogProps
? keyof Omit<U, 'onRequestClose' | 'children'> extends never
? {}
: Omit<U, 'onRequestClose' | 'children'>
: {}
: {};
};
export const useModal = () => {
const { setCurrent, hide } = useModalStore();
const showModal = useCallback(
(dialog: Dialog) => {
setCurrent(dialog);
<T extends Dialog>(dialog: T, props: DialogContentProps[T]) => {
setCurrent(dialog, props);
},
[setCurrent]
);

View file

@ -1,11 +1,14 @@
import { useCallback } from 'react';
import { useModal } from '~/hooks/modal/useModal';
import { DialogContentProps, useModal } from '~/hooks/modal/useModal';
import { Dialog } from '~/constants/modal';
export const useShowModal = (dialog: Dialog) => {
export const useShowModal = <T extends Dialog>(dialog: T) => {
const modal = useModal();
return useCallback(() => {
modal.showModal(dialog);
}, [dialog, modal]);
return useCallback(
(props: DialogContentProps[T]) => {
modal.showModal(dialog, props);
},
[dialog, modal]
);
};

View file

@ -1,18 +1,15 @@
import { useCallback } from 'react';
import { IFile } from '~/redux/types';
import { usePhotoSwipeStore } from '~/store/photoSwipe/usePhotoSwipeStore';
import { useShowModal } from '~/hooks/modal/useShowModal';
import { Dialog } from '~/constants/modal';
export const useImageModal = () => {
const { setData } = usePhotoSwipeStore();
const showModal = useShowModal(Dialog.Photoswipe);
return useCallback(
(images: IFile[], index: number) => {
setData(images, index);
showModal();
showModal({ items: images, index });
},
[setData, showModal]
[showModal]
);
};