//= require jquery
//= require jquery_ujs
+//= require extras
--- /dev/null
+import emojify from './components/emoji'
+
+$(() => {
+ $.each($('.entry .content, .name, .account__header__content'), (_, content) => {
+ const $content = $(content);
+ $content.html(emojify($content.html()));
+ });
+});
padding: 0;
}
+ &.embed {
+ background: transparent;
+ margin: 0;
+
+ .container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ }
+ }
+
@media screen and (max-width: 360px) {
padding-bottom: 0;
}
}
}
}
+
+.embed {
+ .activity-stream {
+ border-radius: 4px;
+ box-shadow: none;
+
+ .entry {
+ &:last-child {
+ border-radius: 0 0 4px 4px;
+ }
+
+ &:first-child {
+ border-radius: 4px 4px 0 0;
+
+ &:last-child {
+ border-radius: 4px;
+ }
+ }
+ }
+ }
+}
def show
@stream_entry = stream_entry_from_url(params[:url])
- @width = [300, params[:maxwidth].to_i].min
- @height = [200, params[:maxheight].to_i].min
+ @width = [300, params[:maxwidth].to_i].max
+ @height = [200, params[:maxheight].to_i].max
end
private
end
end
+ def embed
+ response.headers['X-Frame-Options'] = 'ALLOWALL'
+ @type = @stream_entry.activity_type.downcase
+
+ return gone if @stream_entry.activity.nil?
+
+ render layout: 'embedded'
+ end
+
private
def set_account
if f.instance.image?
{
original: '1280x1280>',
- small: '250x250>',
+ small: '400x400>',
}
else
{
small: {
convert_options: {
output: {
- vf: 'scale=\'min(250\, iw):min(250\, ih)\':force_original_aspect_ratio=decrease',
+ vf: 'scale=\'min(400\, iw):min(400\, ih)\':force_original_aspect_ratio=decrease',
},
},
format: 'png',
node(:provider_name) { Rails.configuration.x.local_domain }
node(:provider_url) { root_url }
node(:cache_age) { 86_400 }
-node(:html, &:content)
+node(:html) { |entry| "<div style=\"position: relative; height: 0; overflow: hidden; padding-top: 30px; padding-bottom: 56.25%\"><iframe src=\"#{embed_account_stream_entry_url(entry.account, entry)}\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden\" frameborder=\"0\" width=\"#{@width}\" scrolling=\"no\"></iframe></div>" }
node(:width) { @width }
-node(:height) { @height }
+node(:height) { nil }
--- /dev/null
+!!! 5
+%html{:lang => 'en'}
+ %head
+ %meta{:charset => 'utf-8'}/
+ = stylesheet_link_tag 'application', media: 'all'
+ = javascript_include_tag 'application_public'
+ %body.embed
+ = yield
--- /dev/null
+.activity-stream.activity-stream-headless
+ = render partial: @type, locals: { @type.to_sym => @stream_entry.activity }
}
resources :accounts, path: 'users', only: [:show], param: :username do
- resources :stream_entries, path: 'updates', only: [:show]
+ resources :stream_entries, path: 'updates', only: [:show] do
+ member do
+ get :embed
+ end
+ end
member do
get :followers