With 0.18 update the nsfw patch is missing yet, so in the meantime I found this userscript and modified it to work with NSFW.
P.S. I know this is not the best community for this, but nothing else fits.
Use your userscript manager of choice to install it. Violentmonkey, Tampermonkey
// ==UserScript==
// @name Lemmy Image Expand (modified)
// @namespace Violentmonkey Scripts
// @match *://*/*
// @grant none
// @version 1.0.1
// @author SlyFabi
// @description Auto expands all image posts including NSFW ones.
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Thanks to CodingAndCoffee for isLemmy
let isLemmy;
try {
isLemmy = document.head.querySelector("[name~=Description][content]").content === "Lemmy";
} catch (_er) {
isLemmy = false;
}
if(isLemmy) {
// https://stackoverflow.com/questions/18177174/how-to-limit-handling-of-event-to-once-per-x-seconds-with-jquery-javascript
function throttle(func, interval) {
var lastCall = 0;
var nextCall = -1;
return function() {
var now = Date.now();
clearTimeout(nextCall);
if (lastCall + interval < now) {
lastCall = now;
func.apply(this, arguments);
} else {
nextCall = setTimeout(function() {
lastCall = Date.now();
func.apply(this, arguments);
}, interval);
}
};
}
const targetNode = document.getElementById('app');
const config = { attributes: false, childList: true, subtree: true };
let observer = null;
const callback = throttle(function(mutationsList) {
if(observer != null) {
observer.disconnect();
}
setTimeout(function() {
let postList = [];
document.querySelectorAll('.post-listing a.text-body svg.icon use').forEach(function(postIcon) {
const imgPreview = postIcon.parentElement.parentElement;
if(postIcon.getAttribute('xlink:href') !== "/static/assets/symbols.svg#icon-image") {
return;
}
postList.push(imgPreview);
});
let uniqueList = postList.reduce((unique, o) => {
if(!unique.some(obj => obj.getAttribute('href') === o.getAttribute('href'))) {
unique.push(o);
}
return unique;
},[]);
uniqueList.forEach(function(imgPreview) {
const postListing = imgPreview.closest(".post-listing");
const isExpanded = postListing.querySelector('.img-expanded') != null;
if(!isExpanded) {
imgPreview.click();
}
//console.log('UElement: ' + imgPreview + ' Exp: ' + isExpanded);
});
/*postList.forEach(function(imgPreview) {
imgPreview.style.pointerEvents = 'none';
//console.log('Element: ' + imgPreview);
});*/
setTimeout(function() {
observer = new MutationObserver(callback);
observer.observe(targetNode, config);
}, 500);
}, 500);
}, 1000);
setTimeout(function() {
callback([]);
}, 500);
}
})();
It’s the issue with the 0.18 Lemmy version. Hopefully it gets resolved with the new version.