74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
|
import * as ACTIONS from 'constants/action_types';
|
||
|
import Lbry from 'lbry';
|
||
|
import { selectClaimsByUri } from 'redux/selectors/claims';
|
||
|
import { selectIsFetchingFileList, selectUrisLoading } from 'redux/selectors/file_info';
|
||
|
|
||
|
export function doFetchFileInfo(uri) {
|
||
|
return (dispatch, getState) => {
|
||
|
const state = getState();
|
||
|
const claim = selectClaimsByUri(state)[uri];
|
||
|
const outpoint = claim ? `${claim.txid}:${claim.nout}` : null;
|
||
|
const alreadyFetching = !!selectUrisLoading(state)[uri];
|
||
|
|
||
|
if (!alreadyFetching) {
|
||
|
dispatch({
|
||
|
type: ACTIONS.FETCH_FILE_INFO_STARTED,
|
||
|
data: {
|
||
|
outpoint,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
Lbry.file_list({ outpoint, full_status: true, page: 1, page_size: 1 }).then((result) => {
|
||
|
const { items: fileInfos } = result;
|
||
|
const fileInfo = fileInfos[0];
|
||
|
|
||
|
dispatch({
|
||
|
type: ACTIONS.FETCH_FILE_INFO_COMPLETED,
|
||
|
data: {
|
||
|
outpoint,
|
||
|
fileInfo: fileInfo || null,
|
||
|
},
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function doFileList(page = 1, pageSize = 99999) {
|
||
|
return (dispatch, getState) => {
|
||
|
const state = getState();
|
||
|
const isFetching = selectIsFetchingFileList(state);
|
||
|
|
||
|
if (!isFetching) {
|
||
|
dispatch({
|
||
|
type: ACTIONS.FILE_LIST_STARTED,
|
||
|
});
|
||
|
|
||
|
Lbry.file_list({ page, page_size: pageSize }).then((result) => {
|
||
|
const { items: fileInfos } = result;
|
||
|
dispatch({
|
||
|
type: ACTIONS.FILE_LIST_SUCCEEDED,
|
||
|
data: {
|
||
|
fileInfos: fileInfos,
|
||
|
},
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function doFetchFileInfos() {
|
||
|
return (dispatch, getState) => {
|
||
|
const state = getState();
|
||
|
const isFetchingFileInfo = selectIsFetchingFileList(state);
|
||
|
if (!isFetchingFileInfo) dispatch(doFileList());
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export function doSetFileListSort(page, value) {
|
||
|
return {
|
||
|
type: ACTIONS.SET_FILE_LIST_SORT,
|
||
|
data: { page, value },
|
||
|
};
|
||
|
}
|