Quellcode durchsuchen

Oasis release 0.6.6

psy vor 6 Tagen
Ursprung
Commit
35fa582fa8
4 geänderte Dateien mit 20 neuen und 10 gelöschten Zeilen
  1. 7 5
      src/backend/backend.js
  2. 1 1
      src/configs/snh-invite-code.json
  3. 1 1
      src/models/main_models.js
  4. 11 3
      src/views/tribes_view.js

+ 7 - 5
src/backend/backend.js

@@ -1308,11 +1308,13 @@ router
   })
   .post("/profile/edit", koaBody({ multipart: true, formidable: { maxFileSize: maxSize } }), async (ctx) => {
     const imageFile = ctx.request.files?.image;
-    const imageData = imageFile && imageFile.filepath ? await promisesFs.readFile(imageFile.filepath) : undefined;
-    ctx.body = await post.publishProfileEdit({
-      name: stripDangerousTags(String(ctx.request.body.name)),
-      description: stripDangerousTags(String(ctx.request.body.description)),
-      ...(imageData ? { image: imageData } : {})
+    const mime = imageFile?.mimetype || imageFile?.type || '';
+    const isImage = mime.startsWith('image/');
+    const imageData = isImage && imageFile?.filepath ? await promisesFs.readFile(imageFile.filepath).catch(() => undefined) : undefined;
+    await post.publishProfileEdit({
+      name: stripDangerousTags(String(ctx.request.body?.name || '')),
+      description: stripDangerousTags(String(ctx.request.body?.description || '')),
+      image: imageData
     });
     ctx.redirect("/profile");
   })

+ 1 - 1
src/configs/snh-invite-code.json

@@ -1,4 +1,4 @@
 {
   "name": "SNH \"La Plaza\"",
-  "code": "solarnethub.com:8008:@zGfPCNPFas4gHUfib08/oQ4rsWo/tnEfQ5iTkoTiBaI=.ed25519~rfJZF2kLO8E2UHFhquXNnjsRPW4CTuL+cgB7bBdsRiw="
+  "code": "solarnethub.com:8008:@zGfPCNPFas4gHUfib08/oQ4rsWo/tnEfQ5iTkoTiBaI=.ed25519~5qLNt94SWwfXwLFBSco0axXLJ1g7640QULTvC2t2eNk="
 }

+ 1 - 1
src/models/main_models.js

@@ -1714,7 +1714,7 @@ const post = {
     },
     publishProfileEdit: async ({ name, description, image }) => {
       const ssb = await cooler.open();
-      if (image.length > 0) {
+      if (image && image.length > 0) {
         const megabyte = Math.pow(2, 20);
         const maxSize = 50 * megabyte;
         if (image.length > maxSize) {

+ 11 - 3
src/views/tribes_view.js

@@ -55,6 +55,14 @@ const toBlobUrl = (raw) => {
   return m ? `/blob/${encodeURIComponent(m[1])}` : null
 }
 
+const toImageUrl = (raw, fallback) => {
+  if (!raw) return fallback
+  const s = String(raw).trim()
+  if (/^\[video:|^\[audio:/.test(s)) return fallback
+  const url = toBlobUrl(raw)
+  return url || fallback
+}
+
 const filterAndSortFeed = (feed, feedFilter) => {
   const parseDate = (d) => typeof d === 'string' ? Date.parse(d) : d;
   if (feedFilter === 'MINE') return feed.filter(m => m.author === userId);
@@ -72,7 +80,7 @@ const renderGallery = (sortedTribes) => {
     sortedTribes.length
       ? sortedTribes.map(t =>
           a({ href: `#tribe-${encodeURIComponent(t.id)}`, class: "gallery-item" },
-           renderMediaBlob(t.image, '/assets/images/default-tribe.png', { alt: t.title || "", class: "gallery-image" })
+           img({ src: toImageUrl(t.image, '/assets/images/default-tribe.png'), alt: t.title || "", class: "gallery-image" })
           )
         )
       : p(i18n.noTribes)
@@ -84,7 +92,7 @@ const renderLightbox = (sortedTribes) => {
     div(
       { id: `tribe-${encodeURIComponent(t.id)}`, class: "lightbox" },
       a({ href: "#", class: "lightbox-close" }, "×"),
-      renderMediaBlob(t.image, '/assets/images/default-tribe.png', { class: "lightbox-image", alt: t.title || "" })
+      img({ src: toImageUrl(t.image, '/assets/images/default-tribe.png'), class: "lightbox-image", alt: t.title || "" })
     )
   );
 };
@@ -1217,7 +1225,7 @@ const renderSubTribesSection = (tribe, items, query) => {
       : div({ class: 'tribe-thumb-grid' },
           subTribes.map(st => {
             return a({ href: `/tribe/${encodeURIComponent(st.id)}`, class: 'tribe-thumb-link', title: st.title },
-              renderMediaBlob(st.image, '/assets/images/default-tribe.png', { class: 'tribe-thumb-img', alt: st.title })
+              img({ src: toImageUrl(st.image, '/assets/images/default-tribe.png'), class: 'tribe-thumb-img', alt: st.title })
             );
           })
         )