diff --git a/ui/js/actions/app.js b/ui/js/actions/app.js index 14bad12cd..64ab286c4 100644 --- a/ui/js/actions/app.js +++ b/ui/js/actions/app.js @@ -6,7 +6,6 @@ import { selectUpgradeDownloadItem, selectUpgradeFilename, selectPageTitle, - selectCurrentPath, } from 'selectors/app' const {remote, ipcRenderer, shell} = require('electron'); diff --git a/ui/js/actions/availability.js b/ui/js/actions/availability.js index 74c85eaa3..501a2eeda 100644 --- a/ui/js/actions/availability.js +++ b/ui/js/actions/availability.js @@ -1,39 +1,29 @@ import * as types from 'constants/action_types' import lbry from 'lbry' import { - selectCurrentUri, -} from 'selectors/app' + selectFetchingAvailability +} from 'selectors/availability' -export function doFetchUriAvailability(uri) { - return function(dispatch, getState) { - dispatch({ - type: types.FETCH_AVAILABILITY_STARTED, - data: { uri } - }) - - const successCallback = (availability) => { - dispatch({ - type: types.FETCH_AVAILABILITY_COMPLETED, - data: { - availability, - uri, - } - }) - } - - const errorCallback = () => { - console.debug('error') - } - - lbry.get_availability({ uri }, successCallback, errorCallback) - } -} - -export function doFetchCurrentUriAvailability() { +export function doFetchAvailability(uri) { return function(dispatch, getState) { const state = getState() - const uri = selectCurrentUri(state) + const alreadyFetching = !!selectFetchingAvailability(state)[uri] - dispatch(doFetchUriAvailability(uri)) + if (!alreadyFetching) { + dispatch({ + type: types.FETCH_AVAILABILITY_STARTED, + data: {uri} + }) + + lbry.get_availability({uri}).then((availability) => { + dispatch({ + type: types.FETCH_AVAILABILITY_COMPLETED, + data: { + availability, + uri, + } + }) + }) + } } -} +} \ No newline at end of file diff --git a/ui/js/actions/content.js b/ui/js/actions/content.js index 297ae221c..43fbfab9b 100644 --- a/ui/js/actions/content.js +++ b/ui/js/actions/content.js @@ -3,18 +3,15 @@ import lbry from 'lbry' import lbryio from 'lbryio' import lbryuri from 'lbryuri' import rewards from 'rewards' -import { - selectCurrentUri, -} from 'selectors/app' import { selectBalance, } from 'selectors/wallet' import { - selectCurrentUriFileInfo, + selectFileInfoForUri, selectDownloadingByUri, } from 'selectors/file_info' import { - selectCurrentUriCostInfo, + selectCostInfoForUri, } from 'selectors/cost_info' import { selectClaimsByUri, @@ -44,15 +41,6 @@ export function doResolveUri(uri) { certificate, } }) - }).catch(() => { - dispatch({ - type: types.RESOLVE_URI_COMPLETED, - data: { - uri, - claim: null, - certificate: null, - } - }) }) } } @@ -120,8 +108,6 @@ export function doFetchPublishedContent() { export function doFetchFeaturedUris() { return function(dispatch, getState) { - return - const state = getState() dispatch({ @@ -229,10 +215,9 @@ export function doDownloadFile(uri, streamInfo) { } } -export function doLoadVideo() { +export function doLoadVideo(uri) { return function(dispatch, getState) { const state = getState() - const uri = selectCurrentUri(state) dispatch({ type: types.LOADING_VIDEO_STARTED, @@ -259,13 +244,12 @@ export function doLoadVideo() { } } -export function doWatchVideo() { +export function doWatchVideo(uri) { return function(dispatch, getState) { const state = getState() - const uri = selectCurrentUri(state) const balance = selectBalance(state) - const fileInfo = selectCurrentUriFileInfo(state) - const costInfo = selectCurrentUriCostInfo(state) + const fileInfo = selectFileInfoForUri(state, { uri }) + const costInfo = selectCostInfoForUri(state, { uri }) const downloadingByUri = selectDownloadingByUri(state) const alreadyDownloading = !!downloadingByUri[uri] const { cost } = costInfo @@ -287,8 +271,8 @@ export function doWatchVideo() { } // the file is free or we have partially downloaded it - if (cost <= 0.01 || fileInfo.download_directory) { - dispatch(doLoadVideo()) + if (cost <= 0.01 || (fileInfo && fileInfo.download_directory)) { + dispatch(doLoadVideo(uri)) return Promise.resolve() } @@ -302,7 +286,7 @@ export function doWatchVideo() { } } -export function doFetchChannelClaims(uri) { +export function doFetchClaimsByChannel(uri) { return function(dispatch, getState) { dispatch({ type: types.FETCH_CHANNEL_CLAIMS_STARTED, @@ -323,7 +307,7 @@ export function doFetchChannelClaims(uri) { }) }).catch(() => { dispatch({ - type: types.FETCH_CHANNEL_CLAIMS_COMPLETED, + type: types.FETC, data: { uri, claims: [] diff --git a/ui/js/actions/cost_info.js b/ui/js/actions/cost_info.js index 5a6a66604..0e87b9005 100644 --- a/ui/js/actions/cost_info.js +++ b/ui/js/actions/cost_info.js @@ -1,7 +1,4 @@ import * as types from 'constants/action_types' -import { - selectCurrentUri, -} from 'selectors/app' import lbry from 'lbry' export function doFetchCostInfoForUri(uri) { diff --git a/ui/js/actions/file_info.js b/ui/js/actions/file_info.js index b7611fb3d..87f962471 100644 --- a/ui/js/actions/file_info.js +++ b/ui/js/actions/file_info.js @@ -1,11 +1,11 @@ import * as types from 'constants/action_types' import lbry from 'lbry' import { - selectCurrentUri, -} from 'selectors/app' -import { - selectCurrentUriClaimOutpoint, + selectClaimsByUri, } from 'selectors/claims' +import { + selectLoadingByUri, +} from 'selectors/file_info' import { doCloseModal, } from 'actions/app' @@ -14,29 +14,39 @@ const { shell, } = require('electron') -export function doFetchCurrentUriFileInfo() { +export function doFetchFileInfo(uri) { return function(dispatch, getState) { const state = getState() - const uri = selectCurrentUri(state) - const outpoint = selectCurrentUriClaimOutpoint(state) + const claim = selectClaimsByUri(state)[uri] + const outpoint = claim ? `${claim.txid}:${claim.nout}` : null + const alreadyFetching = !!selectLoadingByUri(state)[uri] - dispatch({ - type: types.FETCH_FILE_INFO_STARTED, - data: { - uri, - outpoint, - } - }) + if (!outpoint) { + console.log(claim); + console.log(outpoint); + console.log(selectClaimsByUri(state)) + throw new Error("Unable to get outpoint from claim for URI " + uri); + } - lbry.file_list({ outpoint: outpoint, full_status: true }).then(([fileInfo]) => { + if (!alreadyFetching) { dispatch({ - type: types.FETCH_FILE_INFO_COMPLETED, + type: types.FETCH_FILE_INFO_STARTED, data: { uri, - fileInfo, + outpoint, } }) - }) + + lbry.file_list({outpoint: outpoint, full_status: true}).then(([fileInfo]) => { + dispatch({ + type: types.FETCH_FILE_INFO_COMPLETED, + data: { + uri, + fileInfo, + } + }) + }) + } } } diff --git a/ui/js/component/app/index.js b/ui/js/component/app/index.js index a94c0e6f6..a7ce7ce70 100644 --- a/ui/js/component/app/index.js +++ b/ui/js/component/app/index.js @@ -2,30 +2,19 @@ import React from 'react'; import { connect } from 'react-redux' import { - selectCurrentPage, selectCurrentModal, - selectDrawerOpen, - selectHeaderLinks, - selectSearchTerm, } from 'selectors/app' import { doCheckUpgradeAvailable, - doOpenModal, - doCloseModal, } from 'actions/app' import App from './view' const select = (state) => ({ - currentPage: selectCurrentPage(state), modal: selectCurrentModal(state), - headerLinks: selectHeaderLinks(state), - searchTerm: selectSearchTerm(state) }) const perform = (dispatch) => ({ checkUpgradeAvailable: () => dispatch(doCheckUpgradeAvailable()), - openModal: () => dispatch(doOpenModal()), - closeModal: () => dispatch(doCloseModal()), }) export default connect(select, perform)(App) diff --git a/ui/js/component/app/view.jsx b/ui/js/component/app/view.jsx index e6162c4dd..5e47c81f7 100644 --- a/ui/js/component/app/view.jsx +++ b/ui/js/component/app/view.jsx @@ -20,7 +20,6 @@ class App extends React.Component { render() { const { modal, - headerLinks, } = this.props return
Are you sure you'd like to remove {title} from LBRY?