Parcourir la source

Fix JS concatenation in tweet embeds

Fixes #586
Zed il y a 1 mois
Parent
commit
6d41157603
3 fichiers modifiés avec 9 ajouts et 5 suppressions
  1. 2 1
      public/js/embedResize.js
  2. 5 2
      public/js/embedTweet.js
  3. 2 2
      src/views/embed.nim

+ 2 - 1
public/js/embedResize.js

@@ -22,5 +22,6 @@
   window.addEventListener('load', sendHeight);
   new ResizeObserver(sendHeight).observe(embedElement);
 
-  return sendHeight;
+  // Expose for embedTweet.js
+  window._nitterSendHeight = sendHeight;
 })()

+ 5 - 2
public/js/embedTweet.js

@@ -1,5 +1,8 @@
 // This runs after embedResize.js sets up the sendHeight function
-(function(sendHeight) {
+(function() {
+  var sendHeight = window._nitterSendHeight;
+  if (!sendHeight) return;
+
   // Make images load eagerly so height updates correctly
   var lazyImages = document.querySelectorAll('img[loading="lazy"]');
   for (var i = 0; i < lazyImages.length; i++) {
@@ -20,4 +23,4 @@
   for (var i = 0; i < allLinks.length; i++) {
     allLinks[i].target = '_blank';
   }
-})(arguments[0]);
+})();

+ 2 - 2
src/views/embed.nim

@@ -8,8 +8,8 @@ import general, tweet
 const
   doctype = "<!DOCTYPE html>\n"
   embedResizeJs = staticRead("../../public/js/embedResize.js")
-  embedTweetJs = embedResizeJs & staticRead("../../public/js/embedTweet.js")
-  embedErrorJs = embedResizeJs & ";requestAnimationFrame(arguments[0]);"
+  embedTweetJs = embedResizeJs & ";" & staticRead("../../public/js/embedTweet.js")
+  embedErrorJs = embedResizeJs & ";if(window._nitterSendHeight)requestAnimationFrame(window._nitterSendHeight);"
 
 proc renderVideoEmbed*(tweet: Tweet; cfg: Config; req: Request): string =
   let