diff --git a/app/src/page/file/index.js b/app/src/page/file/index.js index b6207039..8a82abed 100644 --- a/app/src/page/file/index.js +++ b/app/src/page/file/index.js @@ -9,7 +9,7 @@ import { selectRewardContentClaimIds, makeSelectCostInfoForUri } from 'lbry-redux'; -//import { selectShowNsfw } from 'redux/selectors/settings'; +import { doDeleteFile } from '../../redux/actions/file'; import FilePage from './view'; const select = (state, props) => { @@ -29,6 +29,9 @@ const select = (state, props) => { const perform = dispatch => ({ fetchFileInfo: uri => dispatch(doFetchFileInfo(uri)), fetchCostInfo: uri => dispatch(doFetchCostInfoForUri(uri)), + deleteFile: (fileInfo, deleteFromDevice, abandonClaim) => { + dispatch(doDeleteFile(fileInfo, deleteFromDevice, abandonClaim)); + }, }); export default connect(select, perform)(FilePage); diff --git a/app/src/page/file/view.js b/app/src/page/file/view.js index d251f09e..8327b513 100644 --- a/app/src/page/file/view.js +++ b/app/src/page/file/view.js @@ -1,6 +1,16 @@ import React from 'react'; import { Lbry } from 'lbry-redux'; -import { Text, View, ScrollView, StatusBar, TouchableOpacity, NativeModules } from 'react-native'; +import { + ActivityIndicator, + Alert, + Button, + Text, + View, + ScrollView, + StatusBar, + TouchableOpacity, + NativeModules +} from 'react-native'; import FileItemMedia from '../../component/fileItemMedia'; import FileDownloadButton from '../../component/fileDownloadButton'; import MediaPlayer from '../../component/mediaPlayer'; @@ -52,6 +62,20 @@ class FilePage extends React.PureComponent { } } + onDeletePressed = () => { + const { deleteFile, fileInfo } = this.props; + + Alert.alert( + 'Delete file', + 'Are you sure you want to remove this file from your device?', + [ + { text: 'No' }, + { text: 'Yes', onPress: () => { deleteFile(fileInfo.outpoint, true); } } + ], + { cancelable: true } + ); + } + componentWillUnmount() { StatusBar.setHidden(false); if (NativeModules.ScreenOrientation) { @@ -85,21 +109,30 @@ class FilePage extends React.PureComponent { const mediaType = Lbry.getMediaType(contentType); const isPlayable = mediaType === 'video' || mediaType === 'audio'; const { height, channel_name: channelName, value } = claim; + const showActions = (completed || (fileInfo && !fileInfo.stopped && fileInfo.written_bytes < fileInfo.total_bytes)); const channelClaimId = value && value.publisherSignature && value.publisherSignature.certificateId; return ( <View style={filePageStyle.pageContainer}> - <View style={this.state.fullscreenMode ? filePageStyle.fullscreenMedia : filePageStyle.mediaContainer}> + <View style={this.state.fullscreenMode ? filePageStyle.fullscreenMedia : filePageStyle.mediaContainer}> {(!fileInfo || (isPlayable && !this.state.mediaLoaded)) && <FileItemMedia style={filePageStyle.thumbnail} title={title} thumbnail={metadata.thumbnail} />} + {isPlayable && !this.state.mediaLoaded && <ActivityIndicator size="large" color="#40b89a" style={filePageStyle.loading} />} {!completed && <FileDownloadButton uri={navigation.state.params.uri} style={filePageStyle.downloadButton} />} {fileInfo && isPlayable && <MediaPlayer fileInfo={fileInfo} style={filePageStyle.player} onFullscreenToggled={this.handleFullscreenToggle} onMediaLoaded={() => { this.setState({ mediaLoaded: true }); }}/>} </View> - <ScrollView style={filePageStyle.scrollContainer}> + { showActions && + <View style={filePageStyle.actions}> + {completed && <Button color="red" title="Delete" onPress={this.onDeletePressed} />} + {fileInfo && !fileInfo.stopped && fileInfo.written_bytes < fileInfo.total_bytes && + <Button color="red" title="Stop Download" onPress={this.onStopDownloadPressed} /> + } + </View>} + <ScrollView style={showActions ? filePageStyle.scrollContainerActions : filePageStyle.scrollContainer}> <Text style={filePageStyle.title}>{title}</Text> {channelName && <Text style={filePageStyle.channelName}>{channelName}</Text>} {description && <Text style={filePageStyle.description}>{description}</Text>} diff --git a/app/src/redux/actions/file.js b/app/src/redux/actions/file.js index 4c91820c..8acd7666 100644 --- a/app/src/redux/actions/file.js +++ b/app/src/redux/actions/file.js @@ -220,3 +220,36 @@ export function doPurchaseUri(uri, specificCostInfo) { }*/ }; } + +export function doDeleteFile(outpoint, deleteFromComputer, abandonClaim) { + return (dispatch, getState) => { + Lbry.file_delete({ + outpoint, + delete_from_download_dir: deleteFromComputer, + }); + + // If the file is for a claim we published then also abandon the claim + /*const myClaimsOutpoints = selectMyClaimsOutpoints(state); + if (abandonClaim && myClaimsOutpoints.indexOf(outpoint) !== -1) { + const byOutpoint = selectFileInfosByOutpoint(state); + const fileInfo = byOutpoint[outpoint]; + + if (fileInfo) { + const txid = fileInfo.outpoint.slice(0, -2); + const nout = Number(fileInfo.outpoint.slice(-1)); + + dispatch(doAbandonClaim(txid, nout)); + } + }*/ + + dispatch({ + type: ACTIONS.FILE_DELETE, + data: { + outpoint, + }, + }); + + //const totalProgress = selectTotalDownloadProgress(getState()); + //setProgressBar(totalProgress); + }; +} diff --git a/app/src/styles/filePage.js b/app/src/styles/filePage.js index 67cddd06..87e07c21 100644 --- a/app/src/styles/filePage.js +++ b/app/src/styles/filePage.js @@ -24,6 +24,12 @@ const filePageStyle = StyleSheet.create({ marginRight: 16 }, scrollContainer: { + flex: 1, + marginTop: -20, + marginBottom: -4, + paddingTop: 10 + }, + scrollContainerActions: { flex: 1 }, title: { @@ -47,7 +53,7 @@ const filePageStyle = StyleSheet.create({ fontSize: 16, marginLeft: 20, marginRight: 20, - marginBottom: 20, + marginBottom: 40, color: '#999999' }, thumbnail: { @@ -56,7 +62,7 @@ const filePageStyle = StyleSheet.create({ }, downloadButton: { position: 'absolute', - top: '50%' + top: '40%' }, player: { flex: 1, @@ -73,6 +79,22 @@ const filePageStyle = StyleSheet.create({ flex: 1, backgroundColor: '#000000', zIndex: 100 + }, + actions: { + paddingLeft: 16, + paddingRight: 16, + paddingTop: 16, + paddingBottom: 8, + marginTop: -14, + width: '50%', + }, + deleteButton: { + backgroundColor: '#ff0000', + width: 80 + }, + loading: { + position: 'absolute', + top: '40%' } }); diff --git a/src/main/assets/index.android.bundle b/src/main/assets/index.android.bundle index 3b856a83..76a7c026 100644 --- a/src/main/assets/index.android.bundle +++ b/src/main/assets/index.android.bundle @@ -74730,7 +74730,9 @@ __d(function (global, require, module, exports, _dependencyMap) { var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); - var _view = require(_dependencyMap[2], "./view"); + var _file = require(_dependencyMap[2], "../../redux/actions/file"); + + var _view = require(_dependencyMap[3], "./view"); var _view2 = babelHelpers.interopRequireDefault(_view); @@ -74755,307 +74757,15 @@ __d(function (global, require, module, exports, _dependencyMap) { }, fetchCostInfo: function fetchCostInfo(uri) { return dispatch((0, _lbryRedux.doFetchCostInfoForUri)(uri)); - } - }; - }; - - exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); -},610,[22,62,611],"LBRYApp/src/page/file/index.js"); -__d(function (global, require, module, exports, _dependencyMap) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/page/file/view.js"; - - var _react = require(_dependencyMap[0], "react"); - - var _react2 = babelHelpers.interopRequireDefault(_react); - - var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); - - var _reactNative = require(_dependencyMap[2], "react-native"); - - var _fileItemMedia = require(_dependencyMap[3], "../../component/fileItemMedia"); - - var _fileItemMedia2 = babelHelpers.interopRequireDefault(_fileItemMedia); - - var _fileDownloadButton = require(_dependencyMap[4], "../../component/fileDownloadButton"); - - var _fileDownloadButton2 = babelHelpers.interopRequireDefault(_fileDownloadButton); - - var _mediaPlayer = require(_dependencyMap[5], "../../component/mediaPlayer"); - - var _mediaPlayer2 = babelHelpers.interopRequireDefault(_mediaPlayer); - - var _reactNativeVideo = require(_dependencyMap[6], "react-native-video"); - - var _reactNativeVideo2 = babelHelpers.interopRequireDefault(_reactNativeVideo); - - var _filePage = require(_dependencyMap[7], "../../styles/filePage"); - - var _filePage2 = babelHelpers.interopRequireDefault(_filePage); - - var FilePage = function (_React$PureComponent) { - babelHelpers.inherits(FilePage, _React$PureComponent); - - function FilePage() { - var _ref; - - var _temp, _this, _ret; - - babelHelpers.classCallCheck(this, FilePage); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = FilePage.__proto__ || Object.getPrototypeOf(FilePage)).call.apply(_ref, [this].concat(args))), _this), _this.state = { - mediaLoaded: false, - fullscreenMode: false - }, _this.handleFullscreenToggle = function (mode) { - _this.setState({ - fullscreenMode: mode - }); - - _reactNative.StatusBar.setHidden(mode); - - if (_reactNative.NativeModules.ScreenOrientation) { - if (mode) { - _reactNative.NativeModules.ScreenOrientation.lockOrientationLandscape(); - } else { - _reactNative.NativeModules.ScreenOrientation.unlockOrientation(); - } - } - }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); - } - - babelHelpers.createClass(FilePage, [{ - key: "componentDidMount", - value: function componentDidMount() { - _reactNative.StatusBar.setHidden(false); - - this.fetchFileInfo(this.props); - this.fetchCostInfo(this.props); - } - }, { - key: "componentWillReceiveProps", - value: function componentWillReceiveProps(nextProps) { - this.fetchFileInfo(nextProps); - } - }, { - key: "fetchFileInfo", - value: function fetchFileInfo(props) { - if (props.fileInfo === undefined) { - props.fetchFileInfo(props.navigation.state.params.uri); - } - } - }, { - key: "fetchCostInfo", - value: function fetchCostInfo(props) { - if (props.costInfo === undefined) { - props.fetchCostInfo(props.navigation.state.params.uri); - } - } - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - _reactNative.StatusBar.setHidden(false); - - if (_reactNative.NativeModules.ScreenOrientation) { - _reactNative.NativeModules.ScreenOrientation.unlockOrientation(); - } - } - }, { - key: "render", - value: function render() { - var _this2 = this; - - var _props = this.props, - claim = _props.claim, - fileInfo = _props.fileInfo, - metadata = _props.metadata, - contentType = _props.contentType, - tab = _props.tab, - rewardedContentClaimIds = _props.rewardedContentClaimIds, - navigation = _props.navigation; - - if (!claim || !metadata) { - return _react2.default.createElement( - _reactNative.View, - { - style: _filePage2.default.container, - __source: { - fileName: _jsxFileName, - lineNumber: 75 - } - }, - _react2.default.createElement( - _reactNative.Text, - { - style: _filePage2.default.emptyClaimText, - __source: { - fileName: _jsxFileName, - lineNumber: 76 - } - }, - "Empty claim or metadata info." - ) - ); - } - - var completed = fileInfo && fileInfo.completed; - var title = metadata.title; - var isRewardContent = rewardedContentClaimIds.includes(claim.claim_id); - var description = metadata.description ? metadata.description : null; - - var mediaType = _lbryRedux.Lbry.getMediaType(contentType); - - var isPlayable = mediaType === 'video' || mediaType === 'audio'; - var height = claim.height, - channelName = claim.channel_name, - value = claim.value; - var channelClaimId = value && value.publisherSignature && value.publisherSignature.certificateId; - return _react2.default.createElement( - _reactNative.View, - { - style: _filePage2.default.pageContainer, - __source: { - fileName: _jsxFileName, - lineNumber: 92 - } - }, - _react2.default.createElement( - _reactNative.View, - { - style: this.state.fullscreenMode ? _filePage2.default.fullscreenMedia : _filePage2.default.mediaContainer, - __source: { - fileName: _jsxFileName, - lineNumber: 93 - } - }, - (!fileInfo || isPlayable && !this.state.mediaLoaded) && _react2.default.createElement(_fileItemMedia2.default, { - style: _filePage2.default.thumbnail, - title: title, - thumbnail: metadata.thumbnail, - __source: { - fileName: _jsxFileName, - lineNumber: 95 - } - }), - !completed && _react2.default.createElement(_fileDownloadButton2.default, { - uri: navigation.state.params.uri, - style: _filePage2.default.downloadButton, - __source: { - fileName: _jsxFileName, - lineNumber: 96 - } - }), - fileInfo && isPlayable && _react2.default.createElement(_mediaPlayer2.default, { - fileInfo: fileInfo, - style: _filePage2.default.player, - onFullscreenToggled: this.handleFullscreenToggle, - onMediaLoaded: function onMediaLoaded() { - _this2.setState({ - mediaLoaded: true - }); - }, - __source: { - fileName: _jsxFileName, - lineNumber: 97 - } - }) - ), - _react2.default.createElement( - _reactNative.ScrollView, - { - style: _filePage2.default.scrollContainer, - __source: { - fileName: _jsxFileName, - lineNumber: 102 - } - }, - _react2.default.createElement( - _reactNative.Text, - { - style: _filePage2.default.title, - __source: { - fileName: _jsxFileName, - lineNumber: 103 - } - }, - title - ), - channelName && _react2.default.createElement( - _reactNative.Text, - { - style: _filePage2.default.channelName, - __source: { - fileName: _jsxFileName, - lineNumber: 104 - } - }, - channelName - ), - description && _react2.default.createElement( - _reactNative.Text, - { - style: _filePage2.default.description, - __source: { - fileName: _jsxFileName, - lineNumber: 105 - } - }, - description - ) - ) - ); - } - }]); - return FilePage; - }(_react2.default.PureComponent); - - FilePage.navigationOptions = { - title: '' - }; - exports.default = FilePage; -},611,[12,62,66,449,612,616,618,624],"LBRYApp/src/page/file/view.js"); -__d(function (global, require, module, exports, _dependencyMap) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - - var _reactRedux = require(_dependencyMap[0], "react-redux"); - - var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); - - var _file = require(_dependencyMap[2], "../../redux/actions/file"); - - var _view = require(_dependencyMap[3], "./view"); - - var _view2 = babelHelpers.interopRequireDefault(_view); - - var select = function select(state, props) { - return { - fileInfo: (0, _lbryRedux.makeSelectFileInfoForUri)(props.uri)(state), - downloading: (0, _lbryRedux.makeSelectDownloadingForUri)(props.uri)(state), - costInfo: (0, _lbryRedux.makeSelectCostInfoForUri)(props.uri)(state), - loading: (0, _lbryRedux.makeSelectLoadingForUri)(props.uri)(state) - }; - }; - - var perform = function perform(dispatch) { - return { - purchaseUri: function purchaseUri(uri) { - return dispatch((0, _file.doPurchaseUri)(uri)); }, - restartDownload: function restartDownload(uri, outpoint) { - return dispatch((0, _file.doStartDownload)(uri, outpoint)); + deleteFile: function deleteFile(fileInfo, deleteFromDevice, abandonClaim) { + dispatch((0, _file.doDeleteFile)(fileInfo, deleteFromDevice, abandonClaim)); } }; }; exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); -},612,[22,62,613,614],"LBRYApp/src/component/fileDownloadButton/index.js"); +},610,[22,62,611,612],"LBRYApp/src/page/file/index.js"); __d(function (global, require, module, exports, _dependencyMap) { Object.defineProperty(exports, "__esModule", { value: true @@ -75066,6 +74776,7 @@ __d(function (global, require, module, exports, _dependencyMap) { exports.doSetPlayingUri = doSetPlayingUri; exports.doLoadVideo = doLoadVideo; exports.doPurchaseUri = doPurchaseUri; + exports.doDeleteFile = doDeleteFile; var _lbryRedux = require(_dependencyMap[0], "lbry-redux"); @@ -75257,7 +74968,336 @@ __d(function (global, require, module, exports, _dependencyMap) { } }; } -},613,[62,66],"LBRYApp/src/redux/actions/file.js"); + + function doDeleteFile(outpoint, deleteFromComputer, abandonClaim) { + return function (dispatch, getState) { + _lbryRedux.Lbry.file_delete({ + outpoint: outpoint, + delete_from_download_dir: deleteFromComputer + }); + + dispatch({ + type: _lbryRedux.ACTIONS.FILE_DELETE, + data: { + outpoint: outpoint + } + }); + }; + } +},611,[62,66],"LBRYApp/src/redux/actions/file.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _jsxFileName = "/home/akinwale/Dev/Python/lbry-android/app/src/page/file/view.js"; + + var _react = require(_dependencyMap[0], "react"); + + var _react2 = babelHelpers.interopRequireDefault(_react); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _reactNative = require(_dependencyMap[2], "react-native"); + + var _fileItemMedia = require(_dependencyMap[3], "../../component/fileItemMedia"); + + var _fileItemMedia2 = babelHelpers.interopRequireDefault(_fileItemMedia); + + var _fileDownloadButton = require(_dependencyMap[4], "../../component/fileDownloadButton"); + + var _fileDownloadButton2 = babelHelpers.interopRequireDefault(_fileDownloadButton); + + var _mediaPlayer = require(_dependencyMap[5], "../../component/mediaPlayer"); + + var _mediaPlayer2 = babelHelpers.interopRequireDefault(_mediaPlayer); + + var _reactNativeVideo = require(_dependencyMap[6], "react-native-video"); + + var _reactNativeVideo2 = babelHelpers.interopRequireDefault(_reactNativeVideo); + + var _filePage = require(_dependencyMap[7], "../../styles/filePage"); + + var _filePage2 = babelHelpers.interopRequireDefault(_filePage); + + var FilePage = function (_React$PureComponent) { + babelHelpers.inherits(FilePage, _React$PureComponent); + + function FilePage() { + var _ref; + + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, FilePage); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (_ref = FilePage.__proto__ || Object.getPrototypeOf(FilePage)).call.apply(_ref, [this].concat(args))), _this), _this.state = { + mediaLoaded: false, + fullscreenMode: false + }, _this.handleFullscreenToggle = function (mode) { + _this.setState({ + fullscreenMode: mode + }); + + _reactNative.StatusBar.setHidden(mode); + + if (_reactNative.NativeModules.ScreenOrientation) { + if (mode) { + _reactNative.NativeModules.ScreenOrientation.lockOrientationLandscape(); + } else { + _reactNative.NativeModules.ScreenOrientation.unlockOrientation(); + } + } + }, _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + babelHelpers.createClass(FilePage, [{ + key: "componentDidMount", + value: function componentDidMount() { + _reactNative.StatusBar.setHidden(false); + + this.fetchFileInfo(this.props); + this.fetchCostInfo(this.props); + } + }, { + key: "componentWillReceiveProps", + value: function componentWillReceiveProps(nextProps) { + this.fetchFileInfo(nextProps); + } + }, { + key: "fetchFileInfo", + value: function fetchFileInfo(props) { + if (props.fileInfo === undefined) { + props.fetchFileInfo(props.navigation.state.params.uri); + } + } + }, { + key: "fetchCostInfo", + value: function fetchCostInfo(props) { + if (props.costInfo === undefined) { + props.fetchCostInfo(props.navigation.state.params.uri); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + _reactNative.StatusBar.setHidden(false); + + if (_reactNative.NativeModules.ScreenOrientation) { + _reactNative.NativeModules.ScreenOrientation.unlockOrientation(); + } + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _props = this.props, + claim = _props.claim, + fileInfo = _props.fileInfo, + metadata = _props.metadata, + contentType = _props.contentType, + tab = _props.tab, + rewardedContentClaimIds = _props.rewardedContentClaimIds, + navigation = _props.navigation; + + if (!claim || !metadata) { + return _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.container, + __source: { + fileName: _jsxFileName, + lineNumber: 84 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.emptyClaimText, + __source: { + fileName: _jsxFileName, + lineNumber: 85 + } + }, + "Empty claim or metadata info." + ) + ); + } + + var completed = fileInfo && fileInfo.completed; + var title = metadata.title; + var isRewardContent = rewardedContentClaimIds.includes(claim.claim_id); + var description = metadata.description ? metadata.description : null; + + var mediaType = _lbryRedux.Lbry.getMediaType(contentType); + + var isPlayable = mediaType === 'video' || mediaType === 'audio'; + var height = claim.height, + channelName = claim.channel_name, + value = claim.value; + var channelClaimId = value && value.publisherSignature && value.publisherSignature.certificateId; + return _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.pageContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 101 + } + }, + _react2.default.createElement( + _reactNative.View, + { + style: this.state.fullscreenMode ? _filePage2.default.fullscreenMedia : _filePage2.default.mediaContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 102 + } + }, + (!fileInfo || isPlayable && !this.state.mediaLoaded) && _react2.default.createElement(_fileItemMedia2.default, { + style: _filePage2.default.thumbnail, + title: title, + thumbnail: metadata.thumbnail, + __source: { + fileName: _jsxFileName, + lineNumber: 104 + } + }), + !completed && _react2.default.createElement(_fileDownloadButton2.default, { + uri: navigation.state.params.uri, + style: _filePage2.default.downloadButton, + __source: { + fileName: _jsxFileName, + lineNumber: 105 + } + }), + fileInfo && isPlayable && _react2.default.createElement(_mediaPlayer2.default, { + fileInfo: fileInfo, + style: _filePage2.default.player, + onFullscreenToggled: this.handleFullscreenToggle, + onMediaLoaded: function onMediaLoaded() { + _this2.setState({ + mediaLoaded: true + }); + }, + __source: { + fileName: _jsxFileName, + lineNumber: 106 + } + }) + ), + _react2.default.createElement( + _reactNative.View, + { + style: _filePage2.default.actions, + __source: { + fileName: _jsxFileName, + lineNumber: 111 + } + }, + completed && _react2.default.createElement(_reactNative.Button, { + title: "Delete", + onPress: function onPress() {}, + __source: { + fileName: _jsxFileName, + lineNumber: 112 + } + }) + ), + _react2.default.createElement( + _reactNative.ScrollView, + { + style: _filePage2.default.scrollContainer, + __source: { + fileName: _jsxFileName, + lineNumber: 114 + } + }, + _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.title, + __source: { + fileName: _jsxFileName, + lineNumber: 115 + } + }, + title + ), + channelName && _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.channelName, + __source: { + fileName: _jsxFileName, + lineNumber: 116 + } + }, + channelName + ), + description && _react2.default.createElement( + _reactNative.Text, + { + style: _filePage2.default.description, + __source: { + fileName: _jsxFileName, + lineNumber: 117 + } + }, + description + ) + ) + ); + } + }]); + return FilePage; + }(_react2.default.PureComponent); + + FilePage.navigationOptions = { + title: '' + }; + exports.default = FilePage; +},612,[12,62,66,449,613,616,618,624],"LBRYApp/src/page/file/view.js"); +__d(function (global, require, module, exports, _dependencyMap) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _reactRedux = require(_dependencyMap[0], "react-redux"); + + var _lbryRedux = require(_dependencyMap[1], "lbry-redux"); + + var _file = require(_dependencyMap[2], "../../redux/actions/file"); + + var _view = require(_dependencyMap[3], "./view"); + + var _view2 = babelHelpers.interopRequireDefault(_view); + + var select = function select(state, props) { + return { + fileInfo: (0, _lbryRedux.makeSelectFileInfoForUri)(props.uri)(state), + downloading: (0, _lbryRedux.makeSelectDownloadingForUri)(props.uri)(state), + costInfo: (0, _lbryRedux.makeSelectCostInfoForUri)(props.uri)(state), + loading: (0, _lbryRedux.makeSelectLoadingForUri)(props.uri)(state) + }; + }; + + var perform = function perform(dispatch) { + return { + purchaseUri: function purchaseUri(uri) { + return dispatch((0, _file.doPurchaseUri)(uri)); + }, + restartDownload: function restartDownload(uri, outpoint) { + return dispatch((0, _file.doStartDownload)(uri, outpoint)); + } + }; + }; + + exports.default = (0, _reactRedux.connect)(select, perform)(_view2.default); +},613,[22,62,611,614],"LBRYApp/src/component/fileDownloadButton/index.js"); __d(function (global, require, module, exports, _dependencyMap) { Object.defineProperty(exports, "__esModule", { value: true diff --git a/src/main/assets/index.android.bundle.meta b/src/main/assets/index.android.bundle.meta index 20061b97..e660c708 100644 --- a/src/main/assets/index.android.bundle.meta +++ b/src/main/assets/index.android.bundle.meta @@ -1,2 +1,2 @@ -�ڤ -�!����W�m�6��� \ No newline at end of file +�� +)�>��y�����WJ� \ No newline at end of file