Add bot icon to bot avatars and migrate to newer version of Font Awesome (#8484)
* Migrate to newer version of Font Awesome * Add bot icon to bot avatars
This commit is contained in:
parent
8864009e8d
commit
4b794e134d
|
@ -1,7 +1,8 @@
|
||||||
import Rails from 'rails-ujs';
|
import Rails from 'rails-ujs';
|
||||||
|
|
||||||
export function start() {
|
export function start() {
|
||||||
require('font-awesome/css/font-awesome.css');
|
require('@fortawesome/fontawesome-free/css/fontawesome.css');
|
||||||
|
require('@fortawesome/fontawesome-free/css/solid.css');
|
||||||
require.context('../images/', true);
|
require.context('../images/', true);
|
||||||
|
|
||||||
Rails.start();
|
Rails.start();
|
||||||
|
|
|
@ -13,7 +13,11 @@ exports[`<Avatar /> Autoplay renders a animated avatar 1`] = `
|
||||||
"width": "100px",
|
"width": "100px",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
>
|
||||||
|
<i
|
||||||
|
className="fa fa-fw fa-robot bot-icon"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`<Avatar /> Still renders a still avatar 1`] = `
|
exports[`<Avatar /> Still renders a still avatar 1`] = `
|
||||||
|
@ -29,5 +33,9 @@ exports[`<Avatar /> Still renders a still avatar 1`] = `
|
||||||
"width": "100px",
|
"width": "100px",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
>
|
||||||
|
<i
|
||||||
|
className="fa fa-fw fa-robot bot-icon"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -10,6 +10,7 @@ describe('<Avatar />', () => {
|
||||||
display_name: 'Alice',
|
display_name: 'Alice',
|
||||||
avatar: '/animated/alice.gif',
|
avatar: '/animated/alice.gif',
|
||||||
avatar_static: '/static/alice.jpg',
|
avatar_static: '/static/alice.jpg',
|
||||||
|
bot: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const size = 100;
|
const size = 100;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
import BotIcon from './bot_icon';
|
||||||
import { autoPlayGif } from '../initial_state';
|
import { autoPlayGif } from '../initial_state';
|
||||||
|
|
||||||
export default class Avatar extends React.PureComponent {
|
export default class Avatar extends React.PureComponent {
|
||||||
|
@ -65,7 +66,9 @@ export default class Avatar extends React.PureComponent {
|
||||||
onMouseEnter={this.handleMouseEnter}
|
onMouseEnter={this.handleMouseEnter}
|
||||||
onMouseLeave={this.handleMouseLeave}
|
onMouseLeave={this.handleMouseLeave}
|
||||||
style={style}
|
style={style}
|
||||||
/>
|
>
|
||||||
|
<BotIcon account={account} />
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
23
app/javascript/mastodon/components/bot_icon.js
Normal file
23
app/javascript/mastodon/components/bot_icon.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import React from 'react';
|
||||||
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|
||||||
|
export default class BotIcon extends ImmutablePureComponent {
|
||||||
|
|
||||||
|
static propTypes = {
|
||||||
|
account: ImmutablePropTypes.map.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const { account } = this.props;
|
||||||
|
|
||||||
|
if (account.get('bot')) {
|
||||||
|
return (
|
||||||
|
<i className='fa fa-fw fa-robot bot-icon' />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||||
import IconButton from '../../../components/icon_button';
|
import IconButton from '../../../components/icon_button';
|
||||||
|
import BotIcon from '../../../components/bot_icon';
|
||||||
import Motion from '../../ui/util/optional_motion';
|
import Motion from '../../ui/util/optional_motion';
|
||||||
import spring from 'react-motion/lib/spring';
|
import spring from 'react-motion/lib/spring';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
@ -67,6 +68,7 @@ class Avatar extends ImmutablePureComponent {
|
||||||
onBlur={this.handleMouseOut}
|
onBlur={this.handleMouseOut}
|
||||||
>
|
>
|
||||||
<span style={{ display: 'none' }}>{account.get('acct')}</span>
|
<span style={{ display: 'none' }}>{account.get('acct')}</span>
|
||||||
|
<BotIcon account={account} />
|
||||||
</a>
|
</a>
|
||||||
)}
|
)}
|
||||||
</Motion>
|
</Motion>
|
||||||
|
|
|
@ -1110,6 +1110,12 @@
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bot-icon {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -.333em;
|
||||||
|
left: -.333em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a .account__avatar {
|
a .account__avatar {
|
||||||
|
@ -1327,10 +1333,22 @@ a .account__avatar {
|
||||||
.account__header__avatar {
|
.account__header__avatar {
|
||||||
background-size: 90px 90px;
|
background-size: 90px 90px;
|
||||||
display: block;
|
display: block;
|
||||||
|
font-size: 1.5em;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
margin: 0 auto 10px;
|
margin: 0 auto 10px;
|
||||||
overflow: hidden;
|
position: relative;
|
||||||
width: 90px;
|
width: 90px;
|
||||||
|
|
||||||
|
.bot-icon {
|
||||||
|
color: $dark-text-color;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
.light & {
|
||||||
|
color: $inverted-text-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-authorize {
|
.account-authorize {
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
"@babel/preset-env": "^7.0.0",
|
"@babel/preset-env": "^7.0.0",
|
||||||
"@babel/preset-react": "^7.0.0",
|
"@babel/preset-react": "^7.0.0",
|
||||||
"@babel/runtime": "^7.0.0",
|
"@babel/runtime": "^7.0.0",
|
||||||
|
"@fortawesome/fontawesome-free": "^5.2.0",
|
||||||
"array-includes": "^3.0.3",
|
"array-includes": "^3.0.3",
|
||||||
"autoprefixer": "^8.6.5",
|
"autoprefixer": "^8.6.5",
|
||||||
"axios": "~0.16.2",
|
"axios": "~0.16.2",
|
||||||
|
@ -58,7 +59,6 @@
|
||||||
"exif-js": "^2.3.0",
|
"exif-js": "^2.3.0",
|
||||||
"express": "^4.16.2",
|
"express": "^4.16.2",
|
||||||
"file-loader": "^2.0.0",
|
"file-loader": "^2.0.0",
|
||||||
"font-awesome": "^4.7.0",
|
|
||||||
"glob": "^7.1.1",
|
"glob": "^7.1.1",
|
||||||
"history": "^4.7.2",
|
"history": "^4.7.2",
|
||||||
"http-link-header": "^0.8.0",
|
"http-link-header": "^0.8.0",
|
||||||
|
|
|
@ -647,6 +647,10 @@
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5"
|
resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5"
|
||||||
|
|
||||||
|
"@fortawesome/fontawesome-free@^5.2.0":
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.2.0.tgz#50cd9856774351c56c0b1b0db4efe122d7913e58"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "10.9.4"
|
version "10.9.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897"
|
||||||
|
@ -3279,10 +3283,6 @@ follow-redirects@^1.0.0, follow-redirects@^1.2.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "=3.1.0"
|
debug "=3.1.0"
|
||||||
|
|
||||||
font-awesome@^4.7.0:
|
|
||||||
version "4.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
|
|
||||||
|
|
||||||
for-in@^0.1.3:
|
for-in@^0.1.3:
|
||||||
version "0.1.8"
|
version "0.1.8"
|
||||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
|
||||||
|
|
Loading…
Reference in a new issue