Co-authored-by: tobi <tobi.smethurst@protonmail.com> Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/88 Co-authored-by: Zoë Bijl <moiety@noreply.codeberg.org> Co-committed-by: Zoë Bijl <moiety@noreply.codeberg.org>
101 lines
2.5 KiB
JavaScript
101 lines
2.5 KiB
JavaScript
import api, { getLinks } from "../api";
|
|
|
|
import { fetchRelationships } from "./accounts";
|
|
import { importFetchedAccounts } from "./importer";
|
|
import { openModal } from "./modal";
|
|
|
|
export const BLOCKS_FETCH_REQUEST = "BLOCKS_FETCH_REQUEST";
|
|
export const BLOCKS_FETCH_SUCCESS = "BLOCKS_FETCH_SUCCESS";
|
|
export const BLOCKS_FETCH_FAIL = "BLOCKS_FETCH_FAIL";
|
|
|
|
export const BLOCKS_EXPAND_REQUEST = "BLOCKS_EXPAND_REQUEST";
|
|
export const BLOCKS_EXPAND_SUCCESS = "BLOCKS_EXPAND_SUCCESS";
|
|
export const BLOCKS_EXPAND_FAIL = "BLOCKS_EXPAND_FAIL";
|
|
|
|
export const BLOCKS_INIT_MODAL = "BLOCKS_INIT_MODAL";
|
|
|
|
export function fetchBlocks() {
|
|
return (dispatch, getState) => {
|
|
dispatch(fetchBlocksRequest());
|
|
|
|
api(getState).get("/api/v1/blocks").then(response => {
|
|
const next = getLinks(response).refs.find(link => link.rel === "next");
|
|
dispatch(importFetchedAccounts(response.data));
|
|
dispatch(fetchBlocksSuccess(response.data, next ? next.uri : null));
|
|
dispatch(fetchRelationships(response.data.map(item => item.id)));
|
|
}).catch(error => dispatch(fetchBlocksFail(error)));
|
|
};
|
|
}
|
|
|
|
export function fetchBlocksRequest() {
|
|
return {
|
|
type: BLOCKS_FETCH_REQUEST,
|
|
};
|
|
}
|
|
|
|
export function fetchBlocksSuccess(accounts, next) {
|
|
return {
|
|
type: BLOCKS_FETCH_SUCCESS,
|
|
accounts,
|
|
next,
|
|
};
|
|
}
|
|
|
|
export function fetchBlocksFail(error) {
|
|
return {
|
|
type: BLOCKS_FETCH_FAIL,
|
|
error,
|
|
};
|
|
}
|
|
|
|
export function expandBlocks() {
|
|
return (dispatch, getState) => {
|
|
const url = getState().getIn(["user_lists", "blocks", "next"]);
|
|
|
|
if (url === null) {
|
|
return;
|
|
}
|
|
|
|
dispatch(expandBlocksRequest());
|
|
|
|
api(getState).get(url).then(response => {
|
|
const next = getLinks(response).refs.find(link => link.rel === "next");
|
|
dispatch(importFetchedAccounts(response.data));
|
|
dispatch(expandBlocksSuccess(response.data, next ? next.uri : null));
|
|
dispatch(fetchRelationships(response.data.map(item => item.id)));
|
|
}).catch(error => dispatch(expandBlocksFail(error)));
|
|
};
|
|
}
|
|
|
|
export function expandBlocksRequest() {
|
|
return {
|
|
type: BLOCKS_EXPAND_REQUEST,
|
|
};
|
|
}
|
|
|
|
export function expandBlocksSuccess(accounts, next) {
|
|
return {
|
|
type: BLOCKS_EXPAND_SUCCESS,
|
|
accounts,
|
|
next,
|
|
};
|
|
}
|
|
|
|
export function expandBlocksFail(error) {
|
|
return {
|
|
type: BLOCKS_EXPAND_FAIL,
|
|
error,
|
|
};
|
|
}
|
|
|
|
export function initBlockModal(account) {
|
|
return dispatch => {
|
|
dispatch({
|
|
type: BLOCKS_INIT_MODAL,
|
|
account,
|
|
});
|
|
|
|
dispatch(openModal({ modalType: "BLOCK" }));
|
|
};
|
|
}
|