Conflicts: - `README.md`: Discarded upstream changes: we have our own README - `app/controllers/follower_accounts_controller.rb`: Port upstream's minor refactoringlocal
commit
f3a4d57be1
103 changed files with 1228 additions and 274 deletions
@ -0,0 +1,21 @@ |
||||
#!/bin/bash |
||||
|
||||
set -e # Fail the whole script on first error |
||||
|
||||
# Fetch Ruby gem dependencies |
||||
bundle install --path vendor/bundle --with='development test' |
||||
|
||||
# Fetch Javascript dependencies |
||||
yarn install |
||||
|
||||
# Make Gemfile.lock pristine again |
||||
git checkout -- Gemfile.lock |
||||
|
||||
# [re]create, migrate, and seed the test database |
||||
RAILS_ENV=test ./bin/rails db:setup |
||||
|
||||
# Precompile assets for development |
||||
RAILS_ENV=development ./bin/rails assets:precompile |
||||
|
||||
# Precompile assets for test |
||||
RAILS_ENV=test NODE_ENV=tests ./bin/rails assets:precompile |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
@ -0,0 +1,37 @@ |
||||
import React from 'react'; |
||||
import ImmutablePropTypes from 'react-immutable-proptypes'; |
||||
import { FormattedMessage } from 'react-intl'; |
||||
import ImmutablePureComponent from 'react-immutable-pure-component'; |
||||
import Icon from 'mastodon/components/icon'; |
||||
|
||||
export default class FollowRequestNote extends ImmutablePureComponent { |
||||
|
||||
static propTypes = { |
||||
account: ImmutablePropTypes.map.isRequired, |
||||
}; |
||||
|
||||
render () { |
||||
const { account, onAuthorize, onReject } = this.props; |
||||
|
||||
return ( |
||||
<div className='follow-request-banner'> |
||||
<div className='follow-request-banner__message'> |
||||
<FormattedMessage id='account.requested_follow' defaultMessage='{name} has requested to follow you' values={{ name: <bdi><strong dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi> }} /> |
||||
</div> |
||||
|
||||
<div className='follow-request-banner__action'> |
||||
<button type='button' className='button button-tertiary button--confirmation' onClick={onAuthorize}> |
||||
<Icon id='check' fixedWidth /> |
||||
<FormattedMessage id='follow_request.authorize' defaultMessage='Authorize' /> |
||||
</button> |
||||
|
||||
<button type='button' className='button button-tertiary button--destructive' onClick={onReject}> |
||||
<Icon id='times' fixedWidth /> |
||||
<FormattedMessage id='follow_request.reject' defaultMessage='Reject' /> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,15 @@ |
||||
import { connect } from 'react-redux'; |
||||
import FollowRequestNote from '../components/follow_request_note'; |
||||
import { authorizeFollowRequest, rejectFollowRequest } from 'mastodon/actions/accounts'; |
||||
|
||||
const mapDispatchToProps = (dispatch, { account }) => ({ |
||||
onAuthorize () { |
||||
dispatch(authorizeFollowRequest(account.get('id'))); |
||||
}, |
||||
|
||||
onReject () { |
||||
dispatch(rejectFollowRequest(account.get('id'))); |
||||
}, |
||||
}); |
||||
|
||||
export default connect(null, mapDispatchToProps)(FollowRequestNote); |
@ -0,0 +1,24 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
require 'rails_helper' |
||||
|
||||
describe FormattingHelper, type: :helper do |
||||
include Devise::Test::ControllerHelpers |
||||
|
||||
describe '#rss_status_content_format' do |
||||
let(:status) { Fabricate(:status, text: 'Hello world<>', spoiler_text: 'This is a spoiler<>', poll: Fabricate(:poll, options: %w(Yes<> No))) } |
||||
let(:html) { helper.rss_status_content_format(status) } |
||||
|
||||
it 'renders the spoiler text' do |
||||
expect(html).to include('<p>This is a spoiler<></p><hr>') |
||||
end |
||||
|
||||
it 'renders the status text' do |
||||
expect(html).to include('<p>Hello world<></p>') |
||||
end |
||||
|
||||
it 'renders the poll' do |
||||
expect(html).to include('<radio disabled="disabled">Yes<></radio><br>') |
||||
end |
||||
end |
||||
end |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue