};
};
-export function redraft(status) {
+export function redraft(status, raw_text) {
return {
type: REDRAFT,
status,
+ raw_text,
};
};
dispatch(deleteStatusRequest(id));
- api(getState).delete(`/api/v1/statuses/${id}`).then(() => {
+ api(getState).delete(`/api/v1/statuses/${id}`).then(response => {
evictStatus(id);
dispatch(deleteStatusSuccess(id));
dispatch(deleteFromTimelines(id));
if (withRedraft) {
- dispatch(redraft(status));
+ dispatch(redraft(status, response.data.text));
if (!getState().getIn(['compose', 'mounted'])) {
router.push('/statuses/new');
}));
case REDRAFT:
return state.withMutations(map => {
- map.set('text', unescapeHTML(expandMentions(action.status)));
+ map.set('text', action.raw_content || unescapeHTML(expandMentions(action.status)));
map.set('in_reply_to', action.status.get('in_reply_to_id'));
map.set('privacy', action.status.get('visibility'));
map.set('media_attachments', action.status.get('media_attachments'));
class REST::StatusSerializer < ActiveModel::Serializer
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :language,
- :uri, :content, :url, :replies_count, :reblogs_count,
+ :uri, :url, :replies_count, :reblogs_count,
:favourites_count
attribute :favourited, if: :current_user?
attribute :muted, if: :current_user?
attribute :pinned, if: :pinnable?
+ attribute :content, unless: :source_requested?
+ attribute :text, if: :source_requested?
+
belongs_to :reblog, serializer: REST::StatusSerializer
belongs_to :application, if: :show_application?
belongs_to :account, serializer: REST::AccountSerializer
%w(public unlisted).include?(object.visibility)
end
+ def source_requested?
+ instance_options[:source_requested]
+ end
+
def ordered_mentions
object.active_mentions.to_a.sort_by(&:id)
end