From 7c19dd9038ec95e4247953301a2933255fac4c4b Mon Sep 17 00:00:00 2001 From: "Muhammad A. Ghorbani" Date: Sat, 12 Sep 2026 20:44:30 +0330 Subject: [PATCH] =?UTF-8?q?fix(photo-display):=20use=20direct=20URL=20for?= =?UTF-8?q?=20absolute=20paths=20instead=20of=20proxy=20=E2=80=94=20fixes?= =?UTF-8?q?=20broken=20image=20on=20mobile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Componentes/question-photo.tsx | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/Componentes/question-photo.tsx b/src/components/Componentes/question-photo.tsx index 67f496d..e0515f8 100644 --- a/src/components/Componentes/question-photo.tsx +++ b/src/components/Componentes/question-photo.tsx @@ -4,7 +4,7 @@ import Image from "next/image"; import { type ReactNode, useCallback, useEffect, useId, useRef, useState } from "react"; import type { QuestionField } from "@/lib/schema-adapter"; import { useUploadTmpMediaMutation } from "@/hooks/marriage/use-upload-tmp-media"; -import { resolveMediaUrl } from "@/lib/http"; +import { getApiRequestUrl } from "@/lib/http"; import { isInFlutterWebView, uploadFile } from "@/lib/webview-actions"; import { useI18n } from "@/translations/provider"; import ErrorToast from "./error-toast"; @@ -368,8 +368,23 @@ export function QuestionPhoto({ candidateUrl = storedValue.trim(); } - const displayUrl = hasImageError ? null : resolveMediaUrl(candidateUrl); - const hasAnswer = Boolean(displayUrl && !hasImageError); + // Display URL: absolute URLs (https://...) used directly; relative paths proxied via getApiRequestUrl. + // This matches yesterday's working logic — do NOT use resolveMediaUrl which forcefully proxies + // public /static/ URLs, breaking display on mobile where the proxy returns 502. + let displayUrl: string | null = null; + if (candidateUrl) { + if ( + candidateUrl.startsWith("http://") || + candidateUrl.startsWith("https://") || + candidateUrl.startsWith("blob:") || + candidateUrl.startsWith("data:") + ) { + displayUrl = candidateUrl; + } else { + displayUrl = getApiRequestUrl(candidateUrl); + } + } + const hasAnswer = Boolean(displayUrl); return (