]> Untitled Git - lemmy.git/commitdiff
Fixing webp issue for safari.
authorDessalines <tyhou13@gmx.com>
Fri, 5 Jun 2020 01:40:57 +0000 (21:40 -0400)
committerDessalines <tyhou13@gmx.com>
Fri, 5 Jun 2020 01:40:57 +0000 (21:40 -0400)
ui/src/utils.ts

index 190fcf57e5eb6349367321f2e5797b5c0e4c3dbf..cb56ba58102be8c61ed2515fd5bd3b8818eeae39 100644 (file)
@@ -423,7 +423,7 @@ export function objectFlip(obj: any) {
 export function pictshareAvatarThumbnail(src: string): string {
   // sample url: http://localhost:8535/pictshare/gs7xuu.jpg
   let split = src.split('pictshare');
-  let out = `${split[0]}pictshare/webp/96${split[1]}`;
+  let out = `${split[0]}pictshare/${canUseWebP() ? 'webp/' : ''}96${split[1]}`;
   return out;
 }
 
@@ -448,7 +448,9 @@ export function pictshareImage(
     hash = split[1];
   }
 
-  let out = `${root}/webp/${thumbnail ? '192/' : ''}${hash}`;
+  let out = `${root}/${canUseWebP() ? 'webp/' : ''}${
+    thumbnail ? '192/' : ''
+  }${hash}`;
   return out;
 }
 
@@ -859,3 +861,18 @@ export function previewLines(text: string, lines: number = 3): string {
     .slice(0, lines * 2)
     .join('\n');
 }
+
+function canUseWebP() {
+  var elem = document.createElement('canvas');
+
+  if (!!(elem.getContext && elem.getContext('2d'))) {
+    var testString = !(window.mozInnerScreenX == null) ? 'png' : 'webp';
+    // was able or not to get WebP representation
+    return (
+      elem.toDataURL('image/webp').startsWith('data:image/' + testString)
+    );
+  }
+
+  // very old browser like IE 8, canvas not supported
+  return false;
+}