diff --git a/javascripts/discourse/components/modal/gif.gjs b/javascripts/discourse/components/modal/gif.gjs index 73b6e0f..f2d1ff3 100644 --- a/javascripts/discourse/components/modal/gif.gjs +++ b/javascripts/discourse/components/modal/gif.gjs @@ -152,20 +152,22 @@ export default class Gif extends Component { let images; if (settings.api_provider === "giphy") { - // Giphy - images = data.data.map((gif) => ({ - title: gif.title, - preview: - settings.giphy_file_format === "webp" - ? gif.images.fixed_width.webp - : gif.images.fixed_width.url, - original: - settings.giphy_file_format === "webp" - ? gif.images.original.webp - : gif.images.original.url, - width: gif.images.original.width, - height: gif.images.original.height, - })); + images = data.data.map((gif) => { + const sizeVariant = gif.images[settings.giphy_size_variant]; + const isWebp = settings.giphy_file_format === "webp"; + + return { + title: gif.title, + preview: + settings.giphy_file_format === "webp" + ? gif.images.fixed_width.webp + : gif.images.fixed_width.url, + original: + isWebp && sizeVariant.webp ? sizeVariant.webp : sizeVariant.url, + width: parseInt(sizeVariant.width, 10), + height: parseInt(sizeVariant.height, 10), + }; + }); } else { // Tenor images = data.results.map((gif) => { diff --git a/settings.yml b/settings.yml index 4f44378..9db217d 100644 --- a/settings.yml +++ b/settings.yml @@ -19,6 +19,23 @@ giphy_file_format: choices: - webp - gif +giphy_size_variant: + type: enum + default: downsized_medium + description: + en: > + GIPHY: Size variant to use. Choose based on your site's upload limit. +