X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/219d452e647c01754bf71b91086b15cc9f00027a..07dbadec1906eed46de8ecd89113a434d8340322:/src/store/dialog/with-dialog.ts diff --git a/src/store/dialog/with-dialog.ts b/src/store/dialog/with-dialog.ts index 42ae73e4..d53a79d6 100644 --- a/src/store/dialog/with-dialog.ts +++ b/src/store/dialog/with-dialog.ts @@ -8,25 +8,27 @@ import { DialogState } from './dialog-reducer'; import { Dispatch } from 'redux'; import { dialogActions } from './dialog-actions'; -export type WithDialog = { +export type WithDialogStateProps = { open: boolean; - data?: T; + data: T; }; -export type WithDialogActions = { +export type WithDialogDispatchProps = { closeDialog: () => void; }; +export type WithDialogProps = WithDialogStateProps & WithDialogDispatchProps; + export const withDialog = (id: string) => - (component: React.ComponentType & WithDialogActions>) => + (component: React.ComponentType & P>) => connect(mapStateToProps(id), mapDispatchToProps(id))(component); -export const mapStateToProps = (id: string) => (state: { dialog: DialogState }): WithDialog => { +export const mapStateToProps = (id: string) => (state: { dialog: DialogState }): WithDialogStateProps => { const dialog = state.dialog[id]; - return dialog ? dialog : { open: false }; + return dialog ? dialog : { open: false, data: {} }; }; -export const mapDispatchToProps = (id: string) => (dispatch: Dispatch): WithDialogActions => ({ +export const mapDispatchToProps = (id: string) => (dispatch: Dispatch): WithDialogDispatchProps => ({ closeDialog: () => { dispatch(dialogActions.CLOSE_DIALOG({ id })); }