Sfoglia il codice sorgente

Adding media controller, 1 webm/compose form allowed, previews generated

master
Eugen Rochko 7 anni fa
parent
commit
bd5ad304ba
7 ha cambiato i file con 42 aggiunte e 6 eliminazioni
  1. +2
    -1
      app/assets/javascripts/components/components/status.jsx
  2. +3
    -1
      app/assets/javascripts/components/components/upload_form.jsx
  3. +16
    -2
      app/assets/javascripts/components/features/status/index.jsx
  4. +13
    -0
      app/controllers/media_controller.rb
  5. +5
    -1
      app/models/media_attachment.rb
  6. +2
    -1
      app/views/api/media/create.rabl
  7. +1
    -0
      config/routes.rb

+ 2
- 1
app/assets/javascripts/components/components/status.jsx Vedi File

@@ -40,8 +40,9 @@ const Status = React.createClass({
if (e.button === 0) {
e.preventDefault();
hashHistory.push(`/accounts/${id}`);
e.stopPropagation();
}

e.stopPropagation();
},

render () {


+ 3
- 1
app/assets/javascripts/components/components/upload_form.jsx Vedi File

@@ -25,9 +25,11 @@ const UploadForm = React.createClass({
);
}.bind(this));

const noMoreAllowed = (this.props.media.some(m => m.get('type') === 'video')) || (this.props.media.size > 3);

return (
<div style={{ marginBottom: '20px', padding: '10px', paddingTop: '0' }}>
<UploadButton onSelectFile={this.props.onSelectFile} disabled={this.props.is_uploading || this.props.media.size > 3} />
<UploadButton onSelectFile={this.props.onSelectFile} disabled={this.props.is_uploading || noMoreAllowed } />

<div style={{ marginTop: '10px', overflow: 'hidden' }}>
{uploads}


+ 16
- 2
app/assets/javascripts/components/features/status/index.jsx Vedi File

@@ -4,6 +4,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import { fetchStatus } from '../../actions/statuses';
import Immutable from 'immutable';
import EmbeddedStatus from '../../components/status';
import { favourite, reblog } from '../../actions/interactions';
import { replyCompose } from '../../actions/compose';

function selectStatus(state, id) {
let status = state.getIn(['timelines', 'statuses', id]);
@@ -49,8 +51,20 @@ const Status = React.createClass({
}
},

handleFavouriteClick (status) {
this.props.dispatch(favourite(status));
},

handleReplyClick (status) {
this.props.dispatch(replyCompose(status));
},

handleReblogClick (status) {
this.props.dispatch(reblog(status));
},

renderChildren (list) {
return list.map(s => <EmbeddedStatus status={s} key={s.get('id')} />);
return list.map(s => <EmbeddedStatus status={s} key={s.get('id')} onReply={this.handleReplyClick} onFavourite={this.handleFavouriteClick} onReblog={this.handleReblogClick} />);
},

render () {
@@ -63,7 +77,7 @@ const Status = React.createClass({
return (
<div>
{this.renderChildren(ancestors)}
<EmbeddedStatus status={status} />
<EmbeddedStatus status={status} onReply={this.handleReplyClick} onFavourite={this.handleFavouriteClick} onReblog={this.handleReblogClick} />
{this.renderChildren(descendants)}
</div>
);


+ 13
- 0
app/controllers/media_controller.rb Vedi File

@@ -0,0 +1,13 @@
class MediaController < ApplicationController
before_action :set_media_attachment

def show
redirect TagManager.instance.url_for(@media_attachment.status)
end

private

def set_media_attachment
@media_attachment = MediaAttachment.where.not(status_id: nil).find(params[:id])
end
end

+ 5
- 1
app/models/media_attachment.rb Vedi File

@@ -5,7 +5,7 @@ class MediaAttachment < ApplicationRecord
belongs_to :account, inverse_of: :media_attachments
belongs_to :status, inverse_of: :media_attachments

has_attached_file :file, styles: lambda { |f| f.instance.image? ? { small: '510x680>' } : { small: { format: 'webm' } } }, processors: lambda { |f| f.video? ? [:transcoder] : [:thumbnail] }
has_attached_file :file, styles: lambda { |f| f.instance.image? ? { small: '510x680>' } : { small: { convert_options: { output: { vf: 'scale="min(510\, iw):min(680\, ih)":force_original_aspect_ratio=decrease' } }, format: 'png', time: 1 } } }, processors: lambda { |f| f.video? ? [:transcoder] : [:thumbnail] }
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES
validates_attachment_size :file, less_than: 4.megabytes

@@ -26,4 +26,8 @@ class MediaAttachment < ApplicationRecord
def video?
VIDEO_MIME_TYPES.include? file_content_type
end

def type
image? ? 'image' : 'video'
end
end

+ 2
- 1
app/views/api/media/create.rabl Vedi File

@@ -1,4 +1,5 @@
object @media
attribute :id
attribute :id, :type
node(:url) { |media| full_asset_url(media.file.url) }
node(:preview_url) { |media| full_asset_url(media.file.url(:small)) }
node(:text_url) { |media| medium_url(media) }

+ 1
- 0
config/routes.rb Vedi File

@@ -30,6 +30,7 @@ Rails.application.routes.draw do
end

resource :settings, only: [:show, :update]
resources :media, only: [:show]

namespace :api do
# PubSubHubbub


Caricamento…
Annulla
Salva