import React from 'react'; import { connect } from 'react-redux'; import Component from '@reactions/component'; import { bindActionCreators } from 'redux'; import * as actions from 'loot-core/src/client/actions'; import { send } from 'loot-core/src/platform/client/fetch'; import { View } from 'loot-design/src/components/common'; import BudgetList from 'loot-design/src/components/manager/BudgetList'; import DeleteFile from 'loot-design/src/components/manager/DeleteFile'; import Import from 'loot-design/src/components/manager/Import'; import ImportActual from 'loot-design/src/components/manager/ImportActual'; import ImportYNAB4 from 'loot-design/src/components/manager/ImportYNAB4'; import ImportYNAB5 from 'loot-design/src/components/manager/ImportYNAB5'; import LoadBackup from 'loot-design/src/components/modals/LoadBackup'; import CreateEncryptionKey from '../modals/CreateEncryptionKey'; import FixEncryptionKey from '../modals/FixEncryptionKey'; function Modals({ modalStack, isHidden, allFiles, availableImports, globalPrefs, isLoggedIn, actions }) { let stack = modalStack.map(({ name, options }, idx) => { const modalProps = { onClose: actions.closeModal, onPush: actions.pushModal, onBack: actions.popModal, isCurrent: idx === modalStack.length - 1, isHidden, stackIndex: idx }; switch (name) { case 'select-budget': return ( actions.downloadBudget(cloudFileId)} /> ); case 'delete-budget': return ( ); case 'import': return ( ); case 'import-ynab4': return ( ); case 'import-ynab5': return ( ); case 'import-actual': return ( ); case 'load-backup': { return ( { setState({ backups: await send('backups-get', { id: options.budgetId }) }); }} > {({ state }) => ( )} ); } case 'create-encryption-key': return ( ); case 'fix-encryption-key': return ( ); default: throw new Error('Unknown modal: ' + name); } }); return {stack}; } export default connect( state => ({ modalStack: state.modals.modalStack, isHidden: state.modals.isHidden, budgets: state.budgets.budgets, availableImports: state.budgets.availableImports, globalPrefs: state.prefs.global, allFiles: state.budgets.allFiles, isLoggedIn: !!state.user.data }), dispatch => ({ actions: bindActionCreators(actions, dispatch) }) )(Modals);