]>
cat aescling's git repositories - mastodon.git/blob - app/javascript/mastodon/actions/statuses.js
1 import api
from '../api';
3 import { deleteFromTimelines
} from './timelines';
4 import { importFetchedStatus
, importFetchedStatuses
, importFetchedAccount
} from './importer';
5 import { ensureComposeIsVisible
} from './compose';
7 export const STATUS_FETCH_REQUEST
= 'STATUS_FETCH_REQUEST';
8 export const STATUS_FETCH_SUCCESS
= 'STATUS_FETCH_SUCCESS';
9 export const STATUS_FETCH_FAIL
= 'STATUS_FETCH_FAIL';
11 export const STATUS_DELETE_REQUEST
= 'STATUS_DELETE_REQUEST';
12 export const STATUS_DELETE_SUCCESS
= 'STATUS_DELETE_SUCCESS';
13 export const STATUS_DELETE_FAIL
= 'STATUS_DELETE_FAIL';
15 export const CONTEXT_FETCH_REQUEST
= 'CONTEXT_FETCH_REQUEST';
16 export const CONTEXT_FETCH_SUCCESS
= 'CONTEXT_FETCH_SUCCESS';
17 export const CONTEXT_FETCH_FAIL
= 'CONTEXT_FETCH_FAIL';
19 export const STATUS_MUTE_REQUEST
= 'STATUS_MUTE_REQUEST';
20 export const STATUS_MUTE_SUCCESS
= 'STATUS_MUTE_SUCCESS';
21 export const STATUS_MUTE_FAIL
= 'STATUS_MUTE_FAIL';
23 export const STATUS_UNMUTE_REQUEST
= 'STATUS_UNMUTE_REQUEST';
24 export const STATUS_UNMUTE_SUCCESS
= 'STATUS_UNMUTE_SUCCESS';
25 export const STATUS_UNMUTE_FAIL
= 'STATUS_UNMUTE_FAIL';
27 export const STATUS_REVEAL
= 'STATUS_REVEAL';
28 export const STATUS_HIDE
= 'STATUS_HIDE';
29 export const STATUS_COLLAPSE
= 'STATUS_COLLAPSE';
31 export const REDRAFT
= 'REDRAFT';
33 export function fetchStatusRequest(id
, skipLoading
) {
35 type: STATUS_FETCH_REQUEST
,
41 export function fetchStatus(id
) {
42 return (dispatch
, getState
) => {
43 const skipLoading
= getState().getIn(['statuses', id
], null) !== null;
45 dispatch(fetchContext(id
));
51 dispatch(fetchStatusRequest(id
, skipLoading
));
53 api(getState
).get(`/api/v1/statuses/${id}`).then(response
=> {
54 dispatch(importFetchedStatus(response
.data
));
55 dispatch(fetchStatusSuccess(skipLoading
));
57 dispatch(fetchStatusFail(id
, error
, skipLoading
));
62 export function fetchStatusSuccess(skipLoading
) {
64 type: STATUS_FETCH_SUCCESS
,
69 export function fetchStatusFail(id
, error
, skipLoading
) {
71 type: STATUS_FETCH_FAIL
,
79 export function redraft(status
, raw_text
) {
87 export function deleteStatus(id
, routerHistory
, withRedraft
= false) {
88 return (dispatch
, getState
) => {
89 let status
= getState().getIn(['statuses', id
]);
91 if (status
.get('poll')) {
92 status
= status
.set('poll', getState().getIn(['polls', status
.get('poll')]));
95 dispatch(deleteStatusRequest(id
));
97 api(getState
).delete(`/api/v1/statuses/${id}`).then(response
=> {
98 dispatch(deleteStatusSuccess(id
));
99 dispatch(deleteFromTimelines(id
));
100 dispatch(importFetchedAccount(response
.data
.account
));
103 dispatch(redraft(status
, response
.data
.text
));
104 ensureComposeIsVisible(getState
, routerHistory
);
107 dispatch(deleteStatusFail(id
, error
));
112 export function deleteStatusRequest(id
) {
114 type: STATUS_DELETE_REQUEST
,
119 export function deleteStatusSuccess(id
) {
121 type: STATUS_DELETE_SUCCESS
,
126 export function deleteStatusFail(id
, error
) {
128 type: STATUS_DELETE_FAIL
,
134 export const updateStatus
= status
=> dispatch
=>
135 dispatch(importFetchedStatus(status
));
137 export function fetchContext(id
) {
138 return (dispatch
, getState
) => {
139 dispatch(fetchContextRequest(id
));
141 api(getState
).get(`/api/v1/statuses/${id}/context`).then(response
=> {
142 dispatch(importFetchedStatuses(response
.data
.ancestors
.concat(response
.data
.descendants
)));
143 dispatch(fetchContextSuccess(id
, response
.data
.ancestors
, response
.data
.descendants
));
146 if (error
.response
&& error
.response
.status
=== 404) {
147 dispatch(deleteFromTimelines(id
));
150 dispatch(fetchContextFail(id
, error
));
155 export function fetchContextRequest(id
) {
157 type: CONTEXT_FETCH_REQUEST
,
162 export function fetchContextSuccess(id
, ancestors
, descendants
) {
164 type: CONTEXT_FETCH_SUCCESS
,
168 statuses: ancestors
.concat(descendants
),
172 export function fetchContextFail(id
, error
) {
174 type: CONTEXT_FETCH_FAIL
,
181 export function muteStatus(id
) {
182 return (dispatch
, getState
) => {
183 dispatch(muteStatusRequest(id
));
185 api(getState
).post(`/api/v1/statuses/${id}/mute`).then(() => {
186 dispatch(muteStatusSuccess(id
));
188 dispatch(muteStatusFail(id
, error
));
193 export function muteStatusRequest(id
) {
195 type: STATUS_MUTE_REQUEST
,
200 export function muteStatusSuccess(id
) {
202 type: STATUS_MUTE_SUCCESS
,
207 export function muteStatusFail(id
, error
) {
209 type: STATUS_MUTE_FAIL
,
215 export function unmuteStatus(id
) {
216 return (dispatch
, getState
) => {
217 dispatch(unmuteStatusRequest(id
));
219 api(getState
).post(`/api/v1/statuses/${id}/unmute`).then(() => {
220 dispatch(unmuteStatusSuccess(id
));
222 dispatch(unmuteStatusFail(id
, error
));
227 export function unmuteStatusRequest(id
) {
229 type: STATUS_UNMUTE_REQUEST
,
234 export function unmuteStatusSuccess(id
) {
236 type: STATUS_UNMUTE_SUCCESS
,
241 export function unmuteStatusFail(id
, error
) {
243 type: STATUS_UNMUTE_FAIL
,
249 export function hideStatus(ids
) {
250 if (!Array
.isArray(ids
)) {
260 export function revealStatus(ids
) {
261 if (!Array
.isArray(ids
)) {
271 export function toggleStatusCollapse(id
, isCollapsed
) {
273 type: STATUS_COLLAPSE
,
This page took 0.09041 seconds and 4 git commands to generate.