6abb7bfe92
Rewards and uploaded/downloaded files currently broken
196 lines
4.8 KiB
JavaScript
196 lines
4.8 KiB
JavaScript
import { createSelector } from 'reselect'
|
|
import {
|
|
selectDaemonReady,
|
|
selectCurrentPage,
|
|
selectCurrentUri,
|
|
} from 'selectors/app'
|
|
|
|
export const _selectState = state => state.content || {}
|
|
|
|
export const selectFeaturedContent = createSelector(
|
|
_selectState,
|
|
(state) => state.featuredContent || {}
|
|
)
|
|
|
|
export const selectFeaturedContentByCategory = createSelector(
|
|
selectFeaturedContent,
|
|
(featuredContent) => featuredContent.byCategory || {}
|
|
)
|
|
|
|
export const selectFetchingFeaturedContent = createSelector(
|
|
_selectState,
|
|
(state) => !!state.fetchingFeaturedContent
|
|
)
|
|
|
|
export const shouldFetchFeaturedContent = createSelector(
|
|
selectDaemonReady,
|
|
selectCurrentPage,
|
|
selectFetchingFeaturedContent,
|
|
selectFeaturedContentByCategory,
|
|
(daemonReady, page, fetching, byCategory) => {
|
|
if (!daemonReady) return false
|
|
if (page != 'discover') return false
|
|
if (fetching) return false
|
|
if (Object.keys(byCategory).length != 0) return false
|
|
|
|
return true
|
|
}
|
|
)
|
|
|
|
export const selectResolvedUris = createSelector(
|
|
_selectState,
|
|
(state) => state.resolvedUris || {}
|
|
)
|
|
|
|
export const selectCurrentResolvedUri = createSelector(
|
|
selectCurrentUri,
|
|
selectResolvedUris,
|
|
(uri, resolvedUris) => resolvedUris[uri] || {}
|
|
)
|
|
|
|
export const selectCurrentResolvedUriClaim = createSelector(
|
|
selectCurrentResolvedUri,
|
|
(uri) => uri.claim || {}
|
|
)
|
|
|
|
export const selectCurrentResolvedUriClaimOutpoint = createSelector(
|
|
selectCurrentResolvedUriClaim,
|
|
(claim) => `${claim.txid}:${claim.nout}`
|
|
)
|
|
|
|
export const selectFileInfos = createSelector(
|
|
_selectState,
|
|
(state) => state.fileInfos || {}
|
|
)
|
|
|
|
export const selectFileInfosByUri = createSelector(
|
|
selectFileInfos,
|
|
(fileInfos) => fileInfos.byUri || {}
|
|
)
|
|
|
|
export const selectCurrentUriFileInfo = createSelector(
|
|
selectCurrentUri,
|
|
selectFileInfosByUri,
|
|
(uri, byUri) => byUri[uri]
|
|
)
|
|
|
|
export const selectCurrentUriIsDownloaded = createSelector(
|
|
selectCurrentUriFileInfo,
|
|
(fileInfo) => fileInfo && fileInfo.length > 0
|
|
)
|
|
|
|
export const selectFetchingFileInfos = createSelector(
|
|
_selectState,
|
|
(state) => state.fetchingFileInfos || {}
|
|
)
|
|
|
|
export const selectIsFetchingCurrentUriFileInfo = createSelector(
|
|
selectFetchingFileInfos,
|
|
selectCurrentUri,
|
|
(fetching, uri) => !!fetching[uri]
|
|
)
|
|
|
|
export const selectCostInfos = createSelector(
|
|
_selectState,
|
|
(state) => state.costInfos || {}
|
|
)
|
|
|
|
export const selectCostInfosByUri = createSelector(
|
|
selectCostInfos,
|
|
(costInfos) => costInfos.byUri || {}
|
|
)
|
|
|
|
export const selectFetchingCostInfos = createSelector(
|
|
_selectState,
|
|
(state) => state.fetchingCostInfos || {}
|
|
)
|
|
|
|
export const selectIsFetchingCurrentUriCostInfo = createSelector(
|
|
selectFetchingCostInfos,
|
|
selectCurrentUri,
|
|
(fetching, uri) => !!fetching[uri]
|
|
)
|
|
|
|
export const selectCurrentUriCostInfo = createSelector(
|
|
selectCurrentUri,
|
|
selectCostInfosByUri,
|
|
(uri, byUri) => byUri[uri] || {}
|
|
)
|
|
|
|
export const shouldFetchCurrentUriCostInfo = createSelector(
|
|
selectCurrentPage,
|
|
selectCurrentUri,
|
|
selectIsFetchingCurrentUriCostInfo,
|
|
selectCurrentUriCostInfo,
|
|
(page, uri, fetching, costInfo) => {
|
|
if (page != 'show') return false
|
|
if (fetching) return false
|
|
if (Object.keys(costInfo).length != 0) return false
|
|
|
|
return true
|
|
}
|
|
)
|
|
|
|
export const shouldFetchCurrentUriFileInfo = createSelector(
|
|
selectCurrentPage,
|
|
selectCurrentUri,
|
|
selectIsFetchingCurrentUriFileInfo,
|
|
selectCurrentUriFileInfo,
|
|
(page, uri, fetching, fileInfo) => {
|
|
if (page != 'show') return false
|
|
if (fetching) return false
|
|
if (fileInfo != undefined) return false
|
|
|
|
return true
|
|
}
|
|
)
|
|
|
|
export const selectFetchingDownloadedContent = createSelector(
|
|
_selectState,
|
|
(state) => !!state.fetchingDownloadedContent
|
|
)
|
|
|
|
export const selectDownloadedContent = createSelector(
|
|
_selectState,
|
|
(state) => state.downloadedContent || {}
|
|
)
|
|
|
|
export const shouldFetchDownloadedContent = createSelector(
|
|
selectDaemonReady,
|
|
selectCurrentPage,
|
|
selectFetchingDownloadedContent,
|
|
selectDownloadedContent,
|
|
(daemonReady, page, fetching, content) => {
|
|
if (!daemonReady) return false
|
|
if (page != 'downloaded') return false
|
|
if (fetching) return false
|
|
if (Object.keys(content).length != 0) return false
|
|
|
|
return true
|
|
}
|
|
)
|
|
|
|
export const selectFetchingPublishedContent = createSelector(
|
|
_selectState,
|
|
(state) => !!state.fetchingPublishedContent
|
|
)
|
|
|
|
export const selectPublishedContent = createSelector(
|
|
_selectState,
|
|
(state) => state.publishedContent || {}
|
|
)
|
|
|
|
export const shouldFetchPublishedContent = createSelector(
|
|
selectDaemonReady,
|
|
selectCurrentPage,
|
|
selectFetchingPublishedContent,
|
|
selectPublishedContent,
|
|
(daemonReady, page, fetching, content) => {
|
|
if (!daemonReady) return false
|
|
if (page != 'published') return false
|
|
if (fetching) return false
|
|
if (Object.keys(content).length != 0) return false
|
|
|
|
return true
|
|
}
|
|
)
|