-
+
)}
diff --git a/apps/infoalloggi/src/components/servizio/annuncio_card.tsx b/apps/infoalloggi/src/components/servizio/annuncio_card.tsx
index 08c0bb2..7d6f2e9 100644
--- a/apps/infoalloggi/src/components/servizio/annuncio_card.tsx
+++ b/apps/infoalloggi/src/components/servizio/annuncio_card.tsx
@@ -6,6 +6,7 @@ import { Interactions } from "~/components/servizio/interactions";
import { Button } from "~/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card";
import { handleConsegna } from "~/lib/annuncio_details";
+import { getStorageUrl } from "~/lib/storage_utils";
import { cn, formatCurrency } from "~/lib/utils";
import { useTranslation } from "~/providers/I18nProvider";
import { useServizioAnnuncio } from "~/providers/ServizioProvider";
@@ -58,7 +59,13 @@ export const BasicAnnuncioCard = ({
priority
src={
(data?.images[0] &&
- `/storage-api/get/${data.images[0].img}?image=true&cachekey=${data.media_updated_at?.toString()}`) ||
+ getStorageUrl({
+ storageId: data.images[0].img,
+ params: {
+ cacheKey: data.media_updated_at?.toISOString(),
+ media: "image",
+ },
+ })) ||
"/fallback-image.png"
}
width={1920}
diff --git a/apps/infoalloggi/src/components/servizio/conferma.tsx b/apps/infoalloggi/src/components/servizio/conferma.tsx
index e1bf438..3010d52 100644
--- a/apps/infoalloggi/src/components/servizio/conferma.tsx
+++ b/apps/infoalloggi/src/components/servizio/conferma.tsx
@@ -4,6 +4,7 @@ import { useState } from "react";
import toast from "react-hot-toast";
import { AllegatoIframe } from "~/components/allegato-iframe";
import { LoadingPage } from "~/components/loading";
+import { getStorageUrl } from "~/lib/storage_utils";
import { useTranslation } from "~/providers/I18nProvider";
import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider";
import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
@@ -40,7 +41,10 @@ export const FileSection = ({ storageId }: { storageId: string }) => {
{t.file_section.download}
diff --git a/apps/infoalloggi/src/lib/storage_utils.ts b/apps/infoalloggi/src/lib/storage_utils.ts
new file mode 100644
index 0000000..79b91d1
--- /dev/null
+++ b/apps/infoalloggi/src/lib/storage_utils.ts
@@ -0,0 +1,26 @@
+import { env } from "~/env";
+
+type Params = {
+ cacheKey: string;
+ mode: "download" | "inline";
+ media: "image" | "video";
+};
+
+export function getStorageUrl({
+ storageId,
+ params,
+ host = env.NEXT_PUBLIC_BASE_URL,
+}: {
+ storageId: string;
+ params?: Partial
;
+ host?: string;
+}) {
+ const url = new URL(`${host}/storage-api/get/${storageId}`);
+ if (params) {
+ Object.entries(params).forEach(([key, value]) => {
+ url.searchParams.append(key, value);
+ });
+ }
+
+ return url.toString();
+}
diff --git a/apps/infoalloggi/src/middlewares/api_middleware.ts b/apps/infoalloggi/src/middlewares/api_middleware.ts
index 79e84b3..477988d 100644
--- a/apps/infoalloggi/src/middlewares/api_middleware.ts
+++ b/apps/infoalloggi/src/middlewares/api_middleware.ts
@@ -12,8 +12,8 @@ export const apisMiddleware = async (req: NextRequest) => {
}
const params = new URLSearchParams(searchParams);
- const isImageRequest = params.get("image") === "true";
- const isVideoRequest = params.get("video") === "true";
+ const isImageRequest = params.get("media") === "image";
+ const isVideoRequest = params.get("media") === "video";
// Check if this is a Next.js Image Optimization request
const purpose = req.headers.get("purpose");
diff --git a/apps/infoalloggi/src/pages/annuncio/[cod].tsx b/apps/infoalloggi/src/pages/annuncio/[cod].tsx
index 08396f3..4c30024 100644
--- a/apps/infoalloggi/src/pages/annuncio/[cod].tsx
+++ b/apps/infoalloggi/src/pages/annuncio/[cod].tsx
@@ -54,6 +54,7 @@ import {
import { useMediaQuery } from "~/hooks/use-media-query";
import { handleConsegna } from "~/lib/annuncio_details";
import { replaceWithBr } from "~/lib/newlineToBr";
+import { getStorageUrl } from "~/lib/storage_utils";
import { cn } from "~/lib/utils";
import { AnnuncioContext } from "~/providers/AnnuncioProvider";
import { useTranslation } from "~/providers/I18nProvider";
@@ -632,9 +633,15 @@ const AnnuncioFooter = ({
return (
);
})}
diff --git a/apps/infoalloggi/src/pages/area-riservata/allegato-view/[allegatoId].tsx b/apps/infoalloggi/src/pages/area-riservata/allegato-view/[allegatoId].tsx
index 99b19e8..593fcba 100644
--- a/apps/infoalloggi/src/pages/area-riservata/allegato-view/[allegatoId].tsx
+++ b/apps/infoalloggi/src/pages/area-riservata/allegato-view/[allegatoId].tsx
@@ -21,6 +21,7 @@ import {
DialogTrigger,
} from "~/components/ui/dialog";
import { Input } from "~/components/ui/input";
+import { getStorageUrl } from "~/lib/storage_utils";
import type { NextPageWithLayout } from "~/pages/_app";
import { useTranslation } from "~/providers/I18nProvider";
import { useEnforcedSession } from "~/providers/SessionProvider";
@@ -77,7 +78,12 @@ const AllegatoView: NextPageWithLayout = ({
caricato il {new Date(fileInfos.uploadedAt).toLocaleString("it")}
-
+