Skip to content

Commit 1e0164d

Browse files
committed
Harden QR export base URL parsing
1 parent faf882a commit 1e0164d

2 files changed

Lines changed: 6 additions & 24 deletions

File tree

client/src/pages/printing/filamentQrCodeExportDialog.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { useSavedState } from "../../utils/saveload";
1010
import { useGetFilamentsByIds } from "../filaments/functions";
1111
import { IFilament } from "../filaments/model";
1212
import {
13+
getConfiguredBaseUrl,
1314
SpoolQRCodePrintSettings,
1415
renderLabelContents,
1516
renderTemplateText,
@@ -29,18 +30,8 @@ interface FilamentQRCodeExportDialogProps {
2930
const FilamentQRCodeExportDialog = ({ filamentIds }: FilamentQRCodeExportDialogProps) => {
3031
const t = useTranslate();
3132
const baseUrlSetting = useGetSetting("base_url");
32-
let parsedBaseUrl = "";
33-
if (baseUrlSetting.data?.value !== undefined) {
34-
try {
35-
parsedBaseUrl = JSON.parse(baseUrlSetting.data.value) ?? "";
36-
} catch {
37-
// Older or manually edited settings may already be stored as a raw string.
38-
parsedBaseUrl = baseUrlSetting.data.value;
39-
}
40-
}
41-
// Fall back to the current origin so QR export previews still work before `base_url`
42-
// is configured explicitly.
43-
const baseUrlRoot = parsedBaseUrl !== "" ? parsedBaseUrl : window.location.origin;
33+
// Accept both JSON-backed settings and legacy plain strings so old `base_url` values do not crash the dialog.
34+
const baseUrlRoot = getConfiguredBaseUrl(baseUrlSetting.data?.value, window.location.origin);
4435
const [messageApi, contextHolder] = message.useMessage();
4536
const [useHTTPUrl, setUseHTTPUrl] = useSavedState("export-useHTTPUrl-filament", false);
4637

client/src/pages/printing/spoolQrCodeExportDialog.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { useSavedState } from "../../utils/saveload";
1010
import { useGetSpoolsByIds } from "../spools/functions";
1111
import { ISpool } from "../spools/model";
1212
import {
13+
getConfiguredBaseUrl,
1314
SpoolQRCodePrintSettings,
1415
renderLabelContents,
1516
renderTemplateText,
@@ -29,18 +30,8 @@ interface SpoolQRCodeExportDialog {
2930
const SpoolQRCodeExportDialog = ({ spoolIds }: SpoolQRCodeExportDialog) => {
3031
const t = useTranslate();
3132
const baseUrlSetting = useGetSetting("base_url");
32-
let parsedBaseUrl = "";
33-
if (baseUrlSetting.data?.value !== undefined) {
34-
try {
35-
parsedBaseUrl = JSON.parse(baseUrlSetting.data.value) ?? "";
36-
} catch {
37-
// Older or manually edited settings may already be stored as a raw string.
38-
parsedBaseUrl = baseUrlSetting.data.value;
39-
}
40-
}
41-
// Fall back to the current origin so QR export previews still work before `base_url`
42-
// is configured explicitly.
43-
const baseUrlRoot = parsedBaseUrl !== "" ? parsedBaseUrl : window.location.origin;
33+
// Accept both JSON-backed settings and legacy plain strings so old `base_url` values do not crash the dialog.
34+
const baseUrlRoot = getConfiguredBaseUrl(baseUrlSetting.data?.value, window.location.origin);
4435
const [messageApi, contextHolder] = message.useMessage();
4536
const [useHTTPUrl, setUseHTTPUrl] = useSavedState("export-useHTTPUrl", false);
4637

0 commit comments

Comments
 (0)