forked from treehouse/mastodon
Merge pull request #614 from ThibG/glitch-soc/merge-upstream
Merge upstream changes up to (excluding) profile redesignsignup-info-prompt
commit
ce090a5201
|
@ -141,7 +141,7 @@
|
||||||
"keyboard_shortcuts.hotkey": "Klawisz",
|
"keyboard_shortcuts.hotkey": "Klawisz",
|
||||||
"keyboard_shortcuts.legend": "aby wyświetlić tą legendę",
|
"keyboard_shortcuts.legend": "aby wyświetlić tą legendę",
|
||||||
"keyboard_shortcuts.mention": "aby wspomnieć o autorze",
|
"keyboard_shortcuts.mention": "aby wspomnieć o autorze",
|
||||||
"keyboard_shortcuts.profile": "to open author's profile",
|
"keyboard_shortcuts.profile": "aby przejść do profilu autora wpisu",
|
||||||
"keyboard_shortcuts.reply": "aby odpowiedzieć",
|
"keyboard_shortcuts.reply": "aby odpowiedzieć",
|
||||||
"keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
|
"keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
|
||||||
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
|
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import EXIF from 'exif-js';
|
import EXIF from 'exif-js';
|
||||||
|
|
||||||
const MAX_IMAGE_DIMENSION = 1280;
|
const MAX_IMAGE_PIXELS = 1638400; // 1280x1280px
|
||||||
|
|
||||||
const getImageUrl = inputFile => new Promise((resolve, reject) => {
|
const getImageUrl = inputFile => new Promise((resolve, reject) => {
|
||||||
if (window.URL && URL.createObjectURL) {
|
if (window.URL && URL.createObjectURL) {
|
||||||
|
@ -73,18 +73,8 @@ const processImage = (img, { width, height, orientation, type = 'image/png' }) =
|
||||||
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
|
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
|
||||||
const { width, height } = img;
|
const { width, height } = img;
|
||||||
|
|
||||||
let newWidth, newHeight;
|
const newWidth = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (width / height)));
|
||||||
|
const newHeight = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (height / width)));
|
||||||
if (width > height) {
|
|
||||||
newHeight = height * MAX_IMAGE_DIMENSION / width;
|
|
||||||
newWidth = MAX_IMAGE_DIMENSION;
|
|
||||||
} else if (height > width) {
|
|
||||||
newWidth = width * MAX_IMAGE_DIMENSION / height;
|
|
||||||
newHeight = MAX_IMAGE_DIMENSION;
|
|
||||||
} else {
|
|
||||||
newWidth = MAX_IMAGE_DIMENSION;
|
|
||||||
newHeight = MAX_IMAGE_DIMENSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
getOrientation(img, type)
|
getOrientation(img, type)
|
||||||
.then(orientation => processImage(img, {
|
.then(orientation => processImage(img, {
|
||||||
|
@ -104,7 +94,7 @@ export default inputFile => new Promise((resolve, reject) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
loadImage(inputFile).then(img => {
|
loadImage(inputFile).then(img => {
|
||||||
if (img.width < MAX_IMAGE_DIMENSION && img.height < MAX_IMAGE_DIMENSION) {
|
if (img.width * img.height < MAX_IMAGE_PIXELS) {
|
||||||
resolve(inputFile);
|
resolve(inputFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,12 +34,12 @@ class MediaAttachment < ApplicationRecord
|
||||||
|
|
||||||
IMAGE_STYLES = {
|
IMAGE_STYLES = {
|
||||||
original: {
|
original: {
|
||||||
geometry: '1280x1280>',
|
pixels: 1_638_400, # 1280x1280px
|
||||||
file_geometry_parser: FastGeometryParser,
|
file_geometry_parser: FastGeometryParser,
|
||||||
},
|
},
|
||||||
|
|
||||||
small: {
|
small: {
|
||||||
geometry: '400x400>',
|
pixels: 160_000, # 400x400px
|
||||||
file_geometry_parser: FastGeometryParser,
|
file_geometry_parser: FastGeometryParser,
|
||||||
},
|
},
|
||||||
}.freeze
|
}.freeze
|
||||||
|
@ -176,7 +176,7 @@ class MediaAttachment < ApplicationRecord
|
||||||
elsif AUDIO_MIME_TYPES.include? f.file_content_type
|
elsif AUDIO_MIME_TYPES.include? f.file_content_type
|
||||||
[:audio_transcoder]
|
[:audio_transcoder]
|
||||||
else
|
else
|
||||||
[:thumbnail]
|
[:lazy_thumbnail]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -223,6 +223,7 @@ pl:
|
||||||
space: Używana powierzchnia
|
space: Używana powierzchnia
|
||||||
title: Panel administracyjny
|
title: Panel administracyjny
|
||||||
total_users: łącznie użytkowników
|
total_users: łącznie użytkowników
|
||||||
|
trends: Na czasie
|
||||||
week_interactions: interakcje w tym tygodniu
|
week_interactions: interakcje w tym tygodniu
|
||||||
week_users_active: aktywni w tym tygodniu
|
week_users_active: aktywni w tym tygodniu
|
||||||
week_users_new: rejestracje w tym tygodniu
|
week_users_new: rejestracje w tym tygodniu
|
||||||
|
|
|
@ -5,8 +5,14 @@ module Paperclip
|
||||||
def make
|
def make
|
||||||
return File.open(@file.path) unless needs_convert?
|
return File.open(@file.path) unless needs_convert?
|
||||||
|
|
||||||
min_side = [@current_geometry.width, @current_geometry.height].min
|
if options[:geometry]
|
||||||
options[:geometry] = "#{min_side.to_i}x#{min_side.to_i}#" if @target_geometry.square? && min_side < @target_geometry.width
|
min_side = [@current_geometry.width, @current_geometry.height].min.to_i
|
||||||
|
options[:geometry] = "#{min_side}x#{min_side}#" if @target_geometry.square? && min_side < @target_geometry.width
|
||||||
|
elsif options[:pixels]
|
||||||
|
width = Math.sqrt(options[:pixels] * (@current_geometry.width.to_f / @current_geometry.height.to_f)).round.to_i
|
||||||
|
height = Math.sqrt(options[:pixels] * (@current_geometry.height.to_f / @current_geometry.width.to_f)).round.to_i
|
||||||
|
options[:geometry] = "#{width}x#{height}>"
|
||||||
|
end
|
||||||
|
|
||||||
Paperclip::Thumbnail.make(file, options, attachment)
|
Paperclip::Thumbnail.make(file, options, attachment)
|
||||||
end
|
end
|
||||||
|
@ -18,7 +24,8 @@ module Paperclip
|
||||||
end
|
end
|
||||||
|
|
||||||
def needs_different_geometry?
|
def needs_different_geometry?
|
||||||
!@target_geometry.nil? && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height
|
(options[:geometry] && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height) ||
|
||||||
|
(options[:pixels] && @current_geometry.width * @current_geometry.height > options[:pixels])
|
||||||
end
|
end
|
||||||
|
|
||||||
def needs_different_format?
|
def needs_different_format?
|
||||||
|
|
|
@ -129,9 +129,9 @@ RSpec.describe MediaAttachment, type: :model do
|
||||||
expect(media.file.meta["original"]["width"]).to eq 600
|
expect(media.file.meta["original"]["width"]).to eq 600
|
||||||
expect(media.file.meta["original"]["height"]).to eq 400
|
expect(media.file.meta["original"]["height"]).to eq 400
|
||||||
expect(media.file.meta["original"]["aspect"]).to eq 1.5
|
expect(media.file.meta["original"]["aspect"]).to eq 1.5
|
||||||
expect(media.file.meta["small"]["width"]).to eq 400
|
expect(media.file.meta["small"]["width"]).to eq 490
|
||||||
expect(media.file.meta["small"]["height"]).to eq 267
|
expect(media.file.meta["small"]["height"]).to eq 327
|
||||||
expect(media.file.meta["small"]["aspect"]).to eq 400.0/267
|
expect(media.file.meta["small"]["aspect"]).to eq 490.0/327
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue