Sensitive content federates using the "nsfw" hashtag
This commit is contained in:
		
							parent
							
								
									f90133d2ad
								
							
						
					
					
						commit
						e90fcb46e3
					
				
					 3 changed files with 18 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -10,7 +10,8 @@ const messages = defineMessages({
 | 
			
		|||
  block: { id: 'account.block', defaultMessage: 'Block' },
 | 
			
		||||
  reply: { id: 'status.reply', defaultMessage: 'Reply' },
 | 
			
		||||
  reblog: { id: 'status.reblog', defaultMessage: 'Reblog' },
 | 
			
		||||
  favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }
 | 
			
		||||
  favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
 | 
			
		||||
  open: { id: 'status.open', defaultMessage: 'Expand' }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const StatusActionBar = React.createClass({
 | 
			
		||||
| 
						 | 
				
			
			@ -55,10 +56,16 @@ const StatusActionBar = React.createClass({
 | 
			
		|||
    this.props.onBlock(this.props.status.get('account'));
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  handleOpen () {
 | 
			
		||||
    this.context.router.push(`/statuses/${this.props.status.get('id')}`);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  render () {
 | 
			
		||||
    const { status, me, intl } = this.props;
 | 
			
		||||
    let menu = [];
 | 
			
		||||
 | 
			
		||||
    menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen });
 | 
			
		||||
 | 
			
		||||
    if (status.getIn(['account', 'id']) === me) {
 | 
			
		||||
      menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,8 +53,8 @@ module AtomBuilderHelper
 | 
			
		|||
    xml.author(&block)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def category(xml, tag)
 | 
			
		||||
    xml.category(term: tag.name)
 | 
			
		||||
  def category(xml, term)
 | 
			
		||||
    xml.category(term: term)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def target(xml, &block)
 | 
			
		||||
| 
						 | 
				
			
			@ -203,8 +203,10 @@ module AtomBuilderHelper
 | 
			
		|||
          end
 | 
			
		||||
 | 
			
		||||
          stream_entry.target.tags.each do |tag|
 | 
			
		||||
            category xml, tag
 | 
			
		||||
            category xml, tag.name
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          category(xml, 'nsfw') if stream_entry.target.sensitive?
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -222,8 +224,10 @@ module AtomBuilderHelper
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    stream_entry.activity.tags.each do |tag|
 | 
			
		||||
      category xml, tag
 | 
			
		||||
      category xml, tag.name
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    category(xml, 'nsfw') if stream_entry.activity.sensitive?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,5 +7,7 @@ class ProcessHashtagsService < BaseService
 | 
			
		|||
    tags.map { |str| str.mb_chars.downcase }.uniq.each do |tag|
 | 
			
		||||
      status.tags << Tag.where(name: tag).first_or_initialize(name: tag)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    status.update(sensitive: true) if tags.include?('nsfw')
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue