]> cat aescling's git repositories - mastodon.git/commitdiff
Merge remote-tracking branch 'upstream/master' into gs-master
authorDavid Yip <yipdw@member.fsf.org>
Mon, 16 Oct 2017 14:23:59 +0000 (09:23 -0500)
committerDavid Yip <yipdw@member.fsf.org>
Mon, 16 Oct 2017 14:23:59 +0000 (09:23 -0500)
15 files changed:
1  2 
app/javascript/mastodon/components/icon_button.js
app/javascript/mastodon/components/status_action_bar.js
app/javascript/mastodon/containers/mastodon.js
app/javascript/mastodon/features/account/components/header.js
app/javascript/mastodon/features/compose/index.js
app/javascript/mastodon/features/status/components/detailed_status.js
app/javascript/mastodon/main.js
app/javascript/packs/common.js
app/lib/feed_manager.rb
app/lib/user_settings_decorator.rb
app/serializers/initial_state_serializer.rb
app/views/stream_entries/_detailed_status.html.haml
config/settings.yml
package.json
yarn.lock

index 6fb191c6b4a90a87391e9bb6eff0e379cec6c7a3,d8e445cefc8fc741cea84ea902d47d87456bb8a9..651b89566b1d0dbdb73b09c5692f56bc2c559b3c
@@@ -50,64 -50,42 +51,63 @@@ export default class IconButton extend
        ...this.props.style,
        ...(this.props.active ? this.props.activeStyle : {}),
      };
 +    if (!this.props.label) {
 +      style.width = `${this.props.size * 1.28571429}px`;
 +    } else {
 +      style.textAlign = 'left';
 +    }
  
-     const classes = ['icon-button'];
-     if (this.props.active) {
-       classes.push('active');
-     }
-     if (this.props.disabled) {
-       classes.push('disabled');
-     }
-     if (this.props.inverted) {
-       classes.push('inverted');
-     }
-     if (this.props.overlay) {
-       classes.push('overlayed');
-     }
-     if (this.props.className) {
-       classes.push(this.props.className);
-     }
+     const {
+       active,
+       animate,
+       className,
+       disabled,
+       expanded,
+       icon,
+       inverted,
+       overlay,
+       pressed,
+       tabIndex,
+       title,
+     } = this.props;
+     const classes = classNames(className, 'icon-button', {
+       active,
+       disabled,
+       inverted,
+       overlayed: overlay,
+     });
  
 +    const flipDeg = this.props.flip ? -180 : -360;
 +    const rotateDeg = this.props.active ? flipDeg : 0;
 +
 +    const motionDefaultStyle = {
 +      rotate: rotateDeg,
 +    };
 +
 +    const springOpts = {
 +      stiffness: this.props.flip ? 60 : 120,
 +      damping: 7,
 +    };
 +    const motionStyle = {
 +      rotate: this.props.animate ? spring(rotateDeg, springOpts) : 0,
 +    };
 +
      return (
-       <Motion defaultStyle={motionDefaultStyle} style={motionStyle}>
+       <Motion defaultStyle={{ rotate: active ? -360 : 0 }} style={{ rotate: animate ? spring(active ? -360 : 0, { stiffness: 120, damping: 7 }) : 0 }}>
          {({ rotate }) =>
            <button
-             aria-label={this.props.title}
-             aria-pressed={this.props.pressed}
-             aria-expanded={this.props.expanded}
-             title={this.props.title}
-             className={classes.join(' ')}
+             aria-label={title}
+             aria-pressed={pressed}
+             aria-expanded={expanded}
+             title={title}
+             className={classes}
              onClick={this.handleClick}
              style={style}
-             tabIndex={this.props.tabIndex}
+             tabIndex={tabIndex}
            >
-             <i style={{ transform: `rotate(${rotate}deg)` }} className={`fa fa-fw fa-${this.props.icon}`} aria-hidden='true' />
+             <i style={{ transform: `rotate(${rotate}deg)` }} className={`fa fa-fw fa-${icon}`} aria-hidden='true' />
 +            {this.props.label}
            </button>
          }
        </Motion>
index 816f83e45cc840706dd49381ee56a321e87303f1,c10e2c5319102ee59a1886e2e3275d5429ee9e1f..d8547db36868979d459ee1627aae1d238859a138
@@@ -43,11 -40,11 +43,13 @@@ export default class DetailedStatus ext
  
    render () {
      const status = this.props.status.get('reblog') ? this.props.status.get('reblog') : this.props.status;
 +    const { settings } = this.props;
  
      let media           = '';
 +    let mediaIcon       = null;
      let applicationLink = '';
+     let reblogLink = '';
+     let reblogIcon = 'retweet';
  
      if (status.get('media_attachments').size > 0) {
        if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {
Simple merge
index de0c68fa5b93fbb135f88ed00901d014ec8e746f,96e6f4b16f496f96dc0f45bd682af1ac6f2eee30..cb47514d352842f5f552c0dd350f233aa7e3e48a
@@@ -1,6 -1,6 +1,8 @@@
  import { start } from 'rails-ujs';
+ import 'font-awesome/css/font-awesome.css';
  
 +// import common styling
 +require('../styles/common.scss');
+ require.context('../images/', true);
  
  start();
Simple merge
Simple merge
index a4eab16df5438f12cfcc55ee5e9b59855f675f2f,3119ebf4b93e469c074dbc219cd3ca223e0f9731..b488bd9ba73062eeccb1daaf31f34f9f6a251d81
        %p{ style: 'margin-bottom: 0' }<
          %span.p-summary> #{Formatter.instance.format_spoiler(status)}&nbsp;
          %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
 -    .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true)
 -
 -  - if !status.media_attachments.empty?
 -    - if status.media_attachments.first.video?
 -      - video = status.media_attachments.first
 -      %div{ data: { component: 'Video', props: Oj.dump(src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive?, width: 670, height: 380) }}
 -    - else
 -      %div{ data: { component: 'MediaGallery', props: Oj.dump(height: 380, sensitive: status.sensitive?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }) }}
 -  - elsif status.preview_cards.first
 -    %div{ data: { component: 'Card', props: Oj.dump('maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json) }}
 +    .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
 +      = Formatter.instance.format(status, custom_emojify: true)
 +      - if !status.media_attachments.empty?
 +        - if status.media_attachments.first.video?
 +          - video = status.media_attachments.first
-           %div{ data: { component: 'Video', props: Oj.dump(src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive?, width: 670, height: 380) }}><
++          %div{ data: { component: 'Video', props: Oj.dump(src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive?, width: 670, height: 380) }}<
 +        - else
-           %div{ data: { component: 'MediaGallery', props: Oj.dump(height: 380, sensitive: status.sensitive?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }) }}><
++          %div{ data: { component: 'MediaGallery', props: Oj.dump(height: 380, sensitive: status.sensitive?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }) }}<
 +      - elsif status.preview_cards.first
-         %div{ data: { component: 'Card', props: Oj.dump('maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json) }}><
++        %div{ data: { component: 'Card', props: Oj.dump('maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json) }}<
  
    .detailed-status__meta
      %data.dt-published{ value: status.created_at.to_time.iso8601 }
Simple merge
diff --cc package.json
Simple merge
diff --cc yarn.lock
Simple merge
This page took 0.156917 seconds and 3 git commands to generate.