mirror of
https://github.com/mastodon/mastodon.git
synced 2024-11-11 17:53:45 +00:00
dfd4a42b35
So that if we get an error, then we will only delete status if it is an 404 error
140 lines
3.2 KiB
JavaScript
140 lines
3.2 KiB
JavaScript
import api from '../api';
|
|
|
|
import { deleteFromTimelines } from './timelines';
|
|
import { fetchStatusCard } from './cards';
|
|
|
|
export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST';
|
|
export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS';
|
|
export const STATUS_FETCH_FAIL = 'STATUS_FETCH_FAIL';
|
|
|
|
export const STATUS_DELETE_REQUEST = 'STATUS_DELETE_REQUEST';
|
|
export const STATUS_DELETE_SUCCESS = 'STATUS_DELETE_SUCCESS';
|
|
export const STATUS_DELETE_FAIL = 'STATUS_DELETE_FAIL';
|
|
|
|
export const CONTEXT_FETCH_REQUEST = 'CONTEXT_FETCH_REQUEST';
|
|
export const CONTEXT_FETCH_SUCCESS = 'CONTEXT_FETCH_SUCCESS';
|
|
export const CONTEXT_FETCH_FAIL = 'CONTEXT_FETCH_FAIL';
|
|
|
|
export function fetchStatusRequest(id, skipLoading) {
|
|
return {
|
|
type: STATUS_FETCH_REQUEST,
|
|
id,
|
|
skipLoading
|
|
};
|
|
};
|
|
|
|
export function fetchStatus(id) {
|
|
return (dispatch, getState) => {
|
|
const skipLoading = getState().getIn(['statuses', id], null) !== null;
|
|
|
|
dispatch(fetchContext(id));
|
|
|
|
if (skipLoading) {
|
|
return;
|
|
}
|
|
|
|
dispatch(fetchStatusRequest(id, skipLoading));
|
|
|
|
api(getState).get(`/api/v1/statuses/${id}`).then(response => {
|
|
dispatch(fetchStatusSuccess(response.data, skipLoading));
|
|
}).catch(error => {
|
|
dispatch(fetchStatusFail(id, error, skipLoading));
|
|
});
|
|
};
|
|
};
|
|
|
|
export function fetchStatusSuccess(status, skipLoading) {
|
|
return {
|
|
type: STATUS_FETCH_SUCCESS,
|
|
status,
|
|
skipLoading
|
|
};
|
|
};
|
|
|
|
export function fetchStatusFail(id, error, skipLoading) {
|
|
return {
|
|
type: STATUS_FETCH_FAIL,
|
|
id,
|
|
error,
|
|
skipLoading
|
|
};
|
|
};
|
|
|
|
export function deleteStatus(id) {
|
|
return (dispatch, getState) => {
|
|
dispatch(deleteStatusRequest(id));
|
|
|
|
api(getState).delete(`/api/v1/statuses/${id}`).then(response => {
|
|
dispatch(deleteStatusSuccess(id));
|
|
dispatch(deleteFromTimelines(id));
|
|
}).catch(error => {
|
|
dispatch(deleteStatusFail(id, error));
|
|
});
|
|
};
|
|
};
|
|
|
|
export function deleteStatusRequest(id) {
|
|
return {
|
|
type: STATUS_DELETE_REQUEST,
|
|
id: id
|
|
};
|
|
};
|
|
|
|
export function deleteStatusSuccess(id) {
|
|
return {
|
|
type: STATUS_DELETE_SUCCESS,
|
|
id: id
|
|
};
|
|
};
|
|
|
|
export function deleteStatusFail(id, error) {
|
|
return {
|
|
type: STATUS_DELETE_FAIL,
|
|
id: id,
|
|
error: error
|
|
};
|
|
};
|
|
|
|
export function fetchContext(id) {
|
|
return (dispatch, getState) => {
|
|
dispatch(fetchContextRequest(id));
|
|
|
|
api(getState).get(`/api/v1/statuses/${id}/context`).then(response => {
|
|
dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants));
|
|
dispatch(fetchStatusCard(id));
|
|
}).catch(error => {
|
|
if (error.response.status == 404){
|
|
dispatch(deleteStatusSuccess(id));
|
|
dispatch(deleteFromTimelines(id));
|
|
}else{
|
|
dispatch(fetchContextFail(id, error));
|
|
}
|
|
});
|
|
};
|
|
};
|
|
|
|
export function fetchContextRequest(id) {
|
|
return {
|
|
type: CONTEXT_FETCH_REQUEST,
|
|
id
|
|
};
|
|
};
|
|
|
|
export function fetchContextSuccess(id, ancestors, descendants) {
|
|
return {
|
|
type: CONTEXT_FETCH_SUCCESS,
|
|
id,
|
|
ancestors,
|
|
descendants,
|
|
statuses: ancestors.concat(descendants)
|
|
};
|
|
};
|
|
|
|
export function fetchContextFail(id, error) {
|
|
return {
|
|
type: CONTEXT_FETCH_FAIL,
|
|
id,
|
|
error
|
|
};
|
|
};
|