|
|
@ -36,6 +36,7 @@ import { REDRAFT } from '../actions/statuses';
|
|
|
|
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable';
|
|
|
|
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable';
|
|
|
|
import uuid from '../uuid';
|
|
|
|
import uuid from '../uuid';
|
|
|
|
import { me } from '../initial_state';
|
|
|
|
import { me } from '../initial_state';
|
|
|
|
|
|
|
|
import { unescapeHTML } from '../utils/html';
|
|
|
|
|
|
|
|
|
|
|
|
const initialState = ImmutableMap({
|
|
|
|
const initialState = ImmutableMap({
|
|
|
|
mounted: 0,
|
|
|
|
mounted: 0,
|
|
|
@ -173,14 +174,14 @@ const hydrate = (state, hydratedState) => {
|
|
|
|
|
|
|
|
|
|
|
|
const domParser = new DOMParser();
|
|
|
|
const domParser = new DOMParser();
|
|
|
|
|
|
|
|
|
|
|
|
const htmlToText = status => {
|
|
|
|
const expandMentions = status => {
|
|
|
|
const fragment = domParser.parseFromString(status.get('content'), 'text/html').documentElement;
|
|
|
|
const fragment = domParser.parseFromString(status.get('content'), 'text/html').documentElement;
|
|
|
|
|
|
|
|
|
|
|
|
status.get('mentions').forEach(mention => {
|
|
|
|
status.get('mentions').forEach(mention => {
|
|
|
|
fragment.querySelector(`a[href="${mention.get('url')}"]`).textContent = `@${mention.get('acct')}`;
|
|
|
|
fragment.querySelector(`a[href="${mention.get('url')}"]`).textContent = `@${mention.get('acct')}`;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
return fragment.textContent;
|
|
|
|
return fragment.innerHTML;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export default function compose(state = initialState, action) {
|
|
|
|
export default function compose(state = initialState, action) {
|
|
|
@ -316,7 +317,7 @@ export default function compose(state = initialState, action) {
|
|
|
|
}));
|
|
|
|
}));
|
|
|
|
case REDRAFT:
|
|
|
|
case REDRAFT:
|
|
|
|
return state.withMutations(map => {
|
|
|
|
return state.withMutations(map => {
|
|
|
|
map.set('text', htmlToText(action.status));
|
|
|
|
map.set('text', unescapeHTML(expandMentions(action.status)));
|
|
|
|
map.set('in_reply_to', action.status.get('in_reply_to_id'));
|
|
|
|
map.set('in_reply_to', action.status.get('in_reply_to_id'));
|
|
|
|
map.set('privacy', action.status.get('visibility'));
|
|
|
|
map.set('privacy', action.status.get('visibility'));
|
|
|
|
map.set('media_attachments', action.status.get('media_attachments'));
|
|
|
|
map.set('media_attachments', action.status.get('media_attachments'));
|
|
|
|