From 7858b29cf515f602c98e7d2d2d1d2bf94fef0fa1 Mon Sep 17 00:00:00 2001 From: MickaelK Date: Wed, 30 Apr 2025 17:23:18 +1000 Subject: [PATCH] fix (embed): Filestash embedding issue whenever embedding something with a locale setup, it would crash while trying to download the translation. This was due to some missunderstanding of how fetch work while in an iframe and all the reports would get miss because of that same issue as it was sent not to the origin server but the website embedding the frame --- public/assets/helpers/log.js | 3 ++- public/assets/locales/index.js | 6 +++--- public/assets/pages/viewerpage/application_table.js | 2 +- server/routes.go | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/public/assets/helpers/log.js b/public/assets/helpers/log.js index 1d0bf526..4f2038c7 100644 --- a/public/assets/helpers/log.js +++ b/public/assets/helpers/log.js @@ -1,4 +1,5 @@ import { toHref } from "../lib/skeleton/router.js"; +import ajax from "../lib/ajax.js"; export function report(msg, err, link, lineNo, columnNo) { if (window.navigator.onLine === false) return Promise.resolve(); @@ -10,5 +11,5 @@ export function report(msg, err, link, lineNo, columnNo) { url += "from.columnNo=" + columnNo; if (err instanceof Error) url += "error=" + encodeURIComponent(err.message) + "&"; - return fetch(url, { method: "post" }).catch(() => {}); + return ajax({ url, method: "post" }).toPromise().catch(() => {}); } diff --git a/public/assets/locales/index.js b/public/assets/locales/index.js index 51717f41..960073e6 100644 --- a/public/assets/locales/index.js +++ b/public/assets/locales/index.js @@ -1,4 +1,5 @@ -import rxjs, { ajax } from "../lib/rx.js"; +import rxjs from "../lib/rx.js"; +import ajax from "../lib/ajax.js"; let LNG = {}; @@ -42,11 +43,10 @@ export async function init() { } return ajax({ url: "assets/locales/" + selectedLanguage + ".json", - responseType: "json", }).pipe(rxjs.tap(({ responseHeaders, response }) => { const contentType = responseHeaders["content-type"].trim(); if (contentType === "application/json") { - LNG = response; + LNG = JSON.parse(response); return; } throw new Error(`wrong content type '${contentType}'`); diff --git a/public/assets/pages/viewerpage/application_table.js b/public/assets/pages/viewerpage/application_table.js index 8253ab13..4931c131 100644 --- a/public/assets/pages/viewerpage/application_table.js +++ b/public/assets/pages/viewerpage/application_table.js @@ -19,7 +19,7 @@ class ITable { getBody() { throw new Error("NOT_IMPLEMENTED"); } } -export default async function(render, { mime, getDownloadUrl = nop, getFilename = nop, hasMenubar = true, acl$ }) { +export default async function(render, { mime, getDownloadUrl = nop, getFilename = nop, hasMenubar = true, acl$ = rxjs.EMPTY }) { const $page = createElement(`
diff --git a/server/routes.go b/server/routes.go index d24845a8..25552f5a 100644 --- a/server/routes.go +++ b/server/routes.go @@ -103,8 +103,8 @@ func Build(r *mux.Router, a App) { } // Other endpoints - middlewares = []Middleware{ApiHeaders, PluginInjector} - r.HandleFunc(WithBase("/report"), NewMiddlewareChain(ReportHandler, middlewares, a)).Methods("POST") + middlewares = []Middleware{ApiHeaders, PluginInjector, PublicCORS} + r.HandleFunc(WithBase("/report"), NewMiddlewareChain(ReportHandler, middlewares, a)).Methods("POST", "OPTIONS") middlewares = []Middleware{IndexHeaders, SecureHeaders, PluginInjector} r.HandleFunc(WithBase("/about"), NewMiddlewareChain(AboutHandler, middlewares, a)).Methods("GET") r.HandleFunc(WithBase("/robots.txt"), NewMiddlewareChain(RobotsHandler, []Middleware{}, a))