lbry-desktop/ui/js/component/fileActions/index.js
2017-06-05 21:21:55 -07:00

56 lines
2 KiB
JavaScript

import React from 'react';
import { connect } from 'react-redux';
import { selectPlatform } from 'selectors/app';
import {
makeSelectFileInfoForUri,
makeSelectDownloadingForUri,
makeSelectLoadingForUri
} from 'selectors/file_info';
import { makeSelectIsAvailableForUri } from 'selectors/availability';
import { selectCurrentModal } from 'selectors/app';
import { makeSelectCostInfoForUri } from 'selectors/cost_info';
import { doCloseModal, doOpenModal, doHistoryBack } from 'actions/app';
import { doFetchAvailability } from 'actions/availability';
import {
doOpenFileInShell,
doOpenFileInFolder,
doDeleteFile
} from 'actions/file_info';
import { doPurchaseUri, doLoadVideo } from 'actions/content';
import FileActions from './view';
const makeSelect = () => {
const selectFileInfoForUri = makeSelectFileInfoForUri();
const selectIsAvailableForUri = makeSelectIsAvailableForUri();
const selectDownloadingForUri = makeSelectDownloadingForUri();
const selectCostInfoForUri = makeSelectCostInfoForUri();
const selectLoadingForUri = makeSelectLoadingForUri();
const select = (state, props) => ({
fileInfo: selectFileInfoForUri(state, props),
isAvailable: selectIsAvailableForUri(state, props),
platform: selectPlatform(state),
modal: selectCurrentModal(state),
downloading: selectDownloadingForUri(state, props),
costInfo: selectCostInfoForUri(state, props),
loading: selectLoadingForUri(state, props)
});
return select;
};
const perform = dispatch => ({
checkAvailability: uri => dispatch(doFetchAvailability(uri)),
closeModal: () => dispatch(doCloseModal()),
openInFolder: fileInfo => dispatch(doOpenFileInFolder(fileInfo)),
openInShell: fileInfo => dispatch(doOpenFileInShell(fileInfo)),
deleteFile: (fileInfo, deleteFromComputer) => {
dispatch(doHistoryBack());
dispatch(doDeleteFile(fileInfo, deleteFromComputer));
},
openModal: modal => dispatch(doOpenModal(modal)),
startDownload: uri => dispatch(doPurchaseUri(uri, 'affirmPurchase')),
loadVideo: uri => dispatch(doLoadVideo(uri))
});
export default connect(makeSelect, perform)(FileActions);