73 lines
1.9 KiB
JavaScript
73 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 },
|
|
};
|
|
}
|