Using thumbnail size instead of original photo size in image tags.
This commit is contained in:
43
src/web/plugins/media.js
Normal file
43
src/web/plugins/media.js
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
const config = require('config');
|
||||
const { makeExtendSchemaPlugin, gql } = require('graphile-utils');
|
||||
|
||||
const schemaExtender = makeExtendSchemaPlugin(_build => ({
|
||||
typeDefs: gql`
|
||||
extend type Media {
|
||||
thumbnailWidth: Int @requires(columns: ["width", "height"])
|
||||
thumbnailHeight: Int @requires(columns: ["height", "width"])
|
||||
}
|
||||
`,
|
||||
resolvers: {
|
||||
Media: {
|
||||
thumbnailWidth(parent, _args, _context, _info) {
|
||||
if (!parent.width || !parent.height) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (parent.height <= config.media.thumbnailSize) {
|
||||
// thumbnails aren't upscaled
|
||||
return parent.width;
|
||||
}
|
||||
|
||||
return Math.round(parent.width / (parent.height / config.media.thumbnailSize));
|
||||
},
|
||||
thumbnailHeight(parent, _args, _context, _info) {
|
||||
if (!parent.width || !parent.height) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (parent.height <= config.media.thumbnailSize) {
|
||||
// thumbnails aren't upscaled
|
||||
return parent.height;
|
||||
}
|
||||
|
||||
return config.media.thumbnailSize;
|
||||
},
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
module.exports = [schemaExtender];
|
||||
@@ -3,9 +3,11 @@
|
||||
const ActorPlugins = require('./actors');
|
||||
const SitePlugins = require('./sites');
|
||||
// const ReleasePlugins = require('./releases');
|
||||
const MediaPlugins = require('./media');
|
||||
|
||||
module.exports = {
|
||||
ActorPlugins,
|
||||
SitePlugins,
|
||||
ReleasePlugins: [],
|
||||
MediaPlugins,
|
||||
};
|
||||
|
||||
@@ -8,7 +8,7 @@ const PgConnectionFilterPlugin = require('postgraphile-plugin-connection-filter'
|
||||
const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector');
|
||||
const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related');
|
||||
|
||||
const { ActorPlugins, SitePlugins, ReleasePlugins } = require('./plugins/plugins');
|
||||
const { ActorPlugins, SitePlugins, ReleasePlugins, MediaPlugins } = require('./plugins/plugins');
|
||||
|
||||
const connectionString = `postgres://${config.database.query.user}:${config.database.query.password}@${config.database.query.host}:5432/${config.database.query.database}`;
|
||||
|
||||
@@ -42,6 +42,7 @@ module.exports = postgraphile(
|
||||
...ActorPlugins,
|
||||
...SitePlugins,
|
||||
...ReleasePlugins,
|
||||
...MediaPlugins,
|
||||
],
|
||||
pgSettings,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user